掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
エクセルのプロセス (ID:118212)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VB.NETで開発を行っています。 エクセルを開いてデータや書式をセットして保存、印刷、エクセル終了を行っているのですが、プロセスが残ってしまいます。ソースは以下のソースなんですが、この中の 「xlbook.Close(False)」「xlapp.Quit()」をはずして手動でエクセルを閉じるとプロセスは終了するのですが、プログラムでエクセルを終了するとプロセスが終了しません。 なにか足りないものがあるのでしょうか? ==================================================== 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) ''原紙の列ヘッダーを編集 xlsheet1.Cells(10, 2) = C1FlexGrid1(0, 0) ''営業所又は課 xlsheet2.Cells(5, 2) = C1FlexGrid1(0, 0) ''営業所又は課 xlsheet1.Cells(1, 8) = "Print : " & strPrintDate ''日付 xlsheet2.Cells(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) ''条件の欄をセットする xlsheet1.Cells(3, 3) = ": " & C1FlexGrid1(1, 15) ''計画単位 xlsheet1.Cells(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) ''期間 xlsheet1.Cells(5, 3) = ": " & C1FlexGrid1(1, 8) & " " & C1FlexGrid1(1, 16) ''支店 ''営業所、課 xlsheet1.Cells(6, 3) = ": " xlsheet1.Cells(7, 3) = ": " If ("課").Equals(C1FlexGrid1(1, 14)) Then xlsheet1.Cells(6, 3) = ": " & C1FlexGrid1(1, 9) & " " & C1FlexGrid1(1, 17) ''営業所 ElseIf ("課指定").Equals(C1FlexGrid1(1, 14)) Then xlsheet1.Cells(6, 3) = ": " & C1FlexGrid1(1, 9) & " " & C1FlexGrid1(1, 17) ''営業所 xlsheet1.Cells(7, 3) = ": " & IIf(("--").Equals(C1FlexGrid1(1, 10)), "", C1FlexGrid1(1, 10) & " " & C1FlexGrid1(1, 18)) ''課 End If xlsheet1.Cells(5, 7) = ": " & C1FlexGrid1(1, 11) & " " & C1FlexGrid1(1, 19) ''メーカ xlsheet1.Cells(6, 7) = ": " & IIf(("------").Equals(C1FlexGrid1(1, 12)), "", C1FlexGrid1(1, 12) & " " & C1FlexGrid1(1, 20)) ''品目 xlsheet1.Cells(7, 7) = ": " & C1FlexGrid1(1, 21) ''メーカ販路 ''データを件数分貼り付ける For intRowPos = 1 To C1FlexGrid1.Rows.Count - 1 ''最終行(合計行)でない場合、データ行の書式を原紙からコピーペーストする If intRowPos <> C1FlexGrid1.Rows.Count - 1 Then xlsheet4.Select() xlsheet4.Rows("1:1").Select() xlapp.Selection.Copy() xlsheet1.Select() xlsheet1.Rows(intRowPos + intExlPos & ":" & intRowPos + intExlPos).Select() xlbook.ActiveSheet.Paste() End If ''データをセットする xlsheet1.Cells(intRowPos + intExlPos, 2) = C1FlexGrid1(intRowPos, 0) ''営業所 xlsheet1.Cells(intRowPos + intExlPos, 4) = C1FlexGrid1(intRowPos, 1) ''金額 xlsheet1.Cells(intRowPos + intExlPos, 5) = C1FlexGrid1(intRowPos, 2) ''軒数 xlsheet1.Cells(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() xlapp.Rows("1:55").Select() xlapp.Selection.Copy() xlsheet1.Select() xlapp.Rows((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() xlapp.Rows("2:2").Select() xlapp.CutCopyMode = False xlapp.Selection.Copy() xlsheet1.Select() xlsheet1.Rows(intRowPos + intExlPos - 1 & ":" & intRowPos + intExlPos - 1).Select() xlapp.Selection.PasteSpecial(Paste:=-4122, Operation:=-4142, SkipBlanks:=False, Transpose:=False) '''COM オブジェクトの解放 xlbook.Save() ''販売計画保存 xlsheet1.Cells(1, 1).Select() xlapp.Visible = True 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 ==================================================== なかなか解決しません。 すみません、よろしくお願いしますm()m
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.