掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
エクセルのプロセス (ID:118214)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
返信ありがとうございます。 魔界の仮面弁士さんの指摘通り、 Cellsプロパティ、Rowsプロパティ、SelectionをRangeオブジェクトに入れ直してみましたが、やはり結果同じになってしまいました。 エクセルを手動で閉じればまくいくのですが、プログラムでエクセルを閉じると残ってしまいます。 まだ足りないものがあるのでしょうか? ========================================================= Dim xlapp As System.Object Dim xlbooks As System.Object Dim xlbook As System.Object Dim xlsheets As System.Object Dim xlsheet1 As System.Object Dim xlsheet2 As System.Object Dim xlsheet3 As System.Object Dim xlsheet4 As System.Object ''エクセル開く xlapp = CreateObject("Excel.Application") xlbooks = xlapp.Workbooks xlbook = xlbooks.Open(strFilePathName) xlsheets = xlbook.Worksheets xlsheet1 = xlsheets(1) xlsheet2 = xlsheets(2) xlsheet3 = xlsheets(3) Dim objCells As Excel.Range Dim objRows4 As Excel.Range Dim objRows1 As Excel.Range Dim objRows3 As Excel.Range ''原紙の列ヘッダーを編集 objCells = xlsheet1.Cells objCells(10, 2) = C1FlexGrid1(0, 0) ''営業所又は課 objCells(1, 8) = "Print : " & strPrintDate ''日付 objCells = xlsheet2.Cells objCells(5, 2) = C1FlexGrid1(0, 0) ''営業所又は課 objCells(1, 8) = "Print : " & strPrintDate ''日付 ''販売計画シートを作成 xlsheet1.Select() xlsheet1.Copy(Before:=xlsheet1) xlsheet1.Select() xlsheet1.Name = "計画入力" 'シートをコピーしたので変数にセットしなおす xlsheet1 = xlsheets(1) xlsheet2 = xlsheets(2) xlsheet3 = xlsheets(3) xlsheet4 = xlsheets(4) objCells = xlsheet1.Cells objRows1 = xlsheet1.Rows objRows3 = xlsheet3.Rows objRows4 = xlsheet4.Rows ''条件の欄をセットする objCells(3, 3) = ": " & C1FlexGrid1(1, 15) ''計画単位 objCells(3, 7) = ": " & Mid(C1FlexGrid1(1, 6), 1, 4) & "/" & Mid(C1FlexGrid1(1, 6), 5, 2) & "〜" & _ Mid(C1FlexGrid1(1, 7), 1, 4) & "/" & Mid(C1FlexGrid1(1, 7), 5, 2) ''期間 objCells(5, 3) = ": " & C1FlexGrid1(1, 8) & " " & C1FlexGrid1(1, 16) ''支店 ''営業所、課 objCells(6, 3) = ": " objCells(7, 3) = ": " If ("課").Equals(C1FlexGrid1(1, 14)) Then objCells(6, 3) = ": " & C1FlexGrid1(1, 9) & " " & C1FlexGrid1(1, 17) ''営業所 ElseIf ("課指定").Equals(C1FlexGrid1(1, 14)) Then objCells(6, 3) = ": " & C1FlexGrid1(1, 9) & " " & C1FlexGrid1(1, 17) ''営業所 objCells(7, 3) = ": " & IIf(("--").Equals(C1FlexGrid1(1, 10)), "", C1FlexGrid1(1, 10) & " " & C1FlexGrid1(1, 18)) ''課 End If objCells(5, 7) = ": " & C1FlexGrid1(1, 11) & " " & C1FlexGrid1(1, 19) ''メーカ objCells(6, 7) = ": " & IIf(("------").Equals(C1FlexGrid1(1, 12)), "", C1FlexGrid1(1, 12) & " " & C1FlexGrid1(1, 20)) ''品目 objCells(7, 7) = ": " & C1FlexGrid1(1, 21) ''メーカ販路 ''データを件数分貼り付ける For intRowPos = 1 To C1FlexGrid1.Rows.Count - 1 ''最終行(合計行)でない場合、データ行の書式を原紙からコピーペーストする If intRowPos <> C1FlexGrid1.Rows.Count - 1 Then xlsheet4.Select() objRows4("1:1").Select() objRows4("1:1").Copy() xlsheet1.Select() objRows1(intRowPos + intExlPos & ":" & intRowPos + intExlPos).Select() xlbook.ActiveSheet.Paste() End If ''データをセットする objCells(intRowPos + intExlPos, 2) = C1FlexGrid1(intRowPos, 0) ''営業所 objCells(intRowPos + intExlPos, 4) = C1FlexGrid1(intRowPos, 1) ''金額 objCells(intRowPos + intExlPos, 5) = C1FlexGrid1(intRowPos, 2) ''軒数 objCells(intRowPos + intExlPos, 6) = C1FlexGrid1(intRowPos, 3) ''本数 ''最終行でない場合 If intRowPos <> C1FlexGrid1.Rows.Count - 1 Then If ((1).Equals(intNextPage) AndAlso (50).Equals((intRowPos + intExlPos))) OrElse _ (Not (1).Equals(intNextPage) AndAlso (intOnePageRow * intNextPage - 5).Equals((intRowPos + intExlPos))) Then ''2ページ以降のスタイルをコピーペーストする xlsheet3.Select() objRows3("1:55").Select() objRows3("1:55").Copy() xlsheet1.Select() objRows1((intOnePageRow * intNextPage + 1) & ":" & (intOnePageRow * intNextPage + 1)).Select() xlbook.ActiveSheet.Paste() xlbook.ActiveSheet.HPageBreaks(intNextPage).Location = xlapp.Range("A" & intOnePageRow * intNextPage + 1) intNextPage += 1 intExlPos += 10 End If End If Next ''合計行もコピーペーストする xlsheet4.Select() objRows4("2:2").Select() xlapp.CutCopyMode = False objRows4("2:2").Copy() xlsheet1.Select() objRows1(intRowPos + intExlPos - 1 & ":" & intRowPos + intExlPos - 1).Select() objRows1(intRowPos + intExlPos - 1 & ":" & intRowPos + intExlPos - 1).PasteSpecial(Paste:=-4122, Operation:=-4142, SkipBlanks:=False, Transpose:=False) xlbook.Save() ''保存 objCells(1, 1).Select() xlapp.Visible = True '''COM オブジェクトの解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(objCells) System.Runtime.InteropServices.Marshal.ReleaseComObject(objRows1) System.Runtime.InteropServices.Marshal.ReleaseComObject(objRows4) System.Runtime.InteropServices.Marshal.ReleaseComObject(objRows3) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheets) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheet1) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheet2) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheet3) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheet4) xlsheet1 = Nothing xlsheet2 = Nothing xlsheet3 = Nothing xlsheet4 = Nothing xlsheets = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbooks) xlbooks = Nothing xlbook.Close(False) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbook) xlbook = Nothing xlapp.Quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(xlapp) xlapp = Nothing =============================================================== すみません、よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.