VB初心者です。
以下のコード(実際のものと根幹は同じです)でExcelを扱いたいのですが、
終了の処理をしている(つもり)にも関わらず、EXEを終了するまで
Excelが終了してくれません。
画面上は終了しているのですが、EXE起動中にxlsファイルを開くとシートを表示してくれないのです。
どなたか正しい方法を教えてください。
Dim xlbook As Excel.Workbook
Dim xlsheet As Sheets
Dim H As Integer
Dim W As Integer
H = ImNumber1.Text
W = ImNumber2.Text
Set xlbook = CreateObject("Excel.sheet")
Set xlsheet = xlbook.Worksheets
Workbooks.Open App.Path & "\稼動確認.xls"
Worksheets("稼働確認書").Activate
xlbook.Application.Visible = True
xlsheet.Application.Cells(H, W).Value = ImText1.Text
ActiveWorkbook.Save
Workbooks.Close
xlbook.Application.Quit
Set xlbook = Nothing
Set xlsheet = Nothing
No.3ベストアンサー
- 回答日時:
回答としては下記のコードです。
Dim XlsApp As Excel.Application
Dim XlsBook As Excel.Workbook
Dim XlsSheet As Excel.Worksheet
Set XlsApp = New Excel.Application
Set XlsBook = XlsApp.Workbooks.Open(App.Path & "\稼動確認.xls")
Set XlsSheet = XlsBook.ActiveSheet
XlsSheet.Range("A1").Value = "Data"
XlsBook.Save
XlsApp.Quit
Set XlsSheet = Nothing
Set XlsBook = Nothing
Set XlsApp = Nothing
まず、質問に記載されているコードでは以下の部分が間違っています。
>Set xlsheet = xlbook.Worksheets
>Workbooks.Open App.Path & "\稼動確認.xls"
xlsheet にはきちんとOPENしたワークブックへの参照を代入します。
>xlbook.Application.Visible = True
>xlsheet.Application.Cells(H, W).Value = ImText1.Text
ワークブックやワークシートなど下位のオブジェクトから上位のオブジェクト
Excel.Application を参照してはいけません。
また、回答のコードではVisibleプロパティをTrueにしていませんが、
Excelを表示させるときには
XlsApp.Quit
を削除して
XlsApp.Visible = True
XlsApp.UserControl = True
に変更します。
以上です。
お返事ありがとうございました。
残念ながら問題にしていた部分は解決できなかったのですが、
その他の部分で大変参考になりました。
またよろしくお願いいたします。
No.2
- 回答日時:
xlBook.Close
xlApp.Application.Quit
Set xlBook = Nothing
Set xlApp = Nothing
かな?
参考URL:http://www.int21.co.jp/pcdn/
この回答への補足
質問では「Excelが終了しない」と書いたのですが、
症状として「開きはしないがファイル削除は共有違反せずにできる」ということなので、もしかしたら問題点はクローズのやり方だけではないのかもしれませんね。
お返事ありがとうございます。
ActiveWorkbook.Application.Quit
xlApp.Application.Quit
Set xlbook = Nothing
Set xlsheet = Nothing
Set xlApp = Nothing
なども試してみたのですが、やはり駄目でした。
ACCESS97→Excel97の一括コンバートPGなので、連続した変換はなく
強制的にEXEを閉じてしまっても問題はないと思うのですが・・・・。
今後のことを考えるとやはり気になります。
No.1
- 回答日時:
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Sheets
Dim H As Integer
Dim W As Integer
H = ImNumber1.Text
W = ImNumber2.Text
Set xlApp = CreateObject("Excel.Application")
ExcelApp.Workbooks.Open "\稼動確認.xls"
Set xlBook = ExcelApp.Workbooks("稼動確認.xls")
Set xlSheet = xlBook.Worksheets
(略)
Set xlBook = Nothing
Set xlSheet = Nothing
xlApp.Quit
Set xlApp = Nothing
で、多分OK
早速のご回答、ありがとうございました。
上記コードにより今までは何故か一度空のOpen~Quitを走らせなければ書き込みができないという不細工なコードを直すことができました。
しかし、やはりEXEを終了させない限りは
ファイル(このプログラムで使用した対象xlsファイルに限らず、すべてのxlsファイル)を開こうとするとツールバーしか表示されないのです。
他に何か対処法は御座いませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAからPDFファイルにパスワー...
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
エクセルマクロエラー「'Cells'...
-
EXCEL VBA オートシェイプナン...
-
Excelでフィルタをかけると警告...
-
VBAで既に開いている別アプリケ...
-
ListView内の検索 VB6
-
VB6 エクセルに画像貼り付け
-
PowerPointVBAでスライドマスタ...
-
VBAで Set wb = Sheets(1).Cop...
-
VBAについてです。 初心者です...
-
エクセルVBAで配列内に空白デー...
-
エクセルVBAでFor each文
-
パワポでエクセルから画像ファ...
-
WordにOLEで埋め込んだExcelでW...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
エクセルのVBAの標準モジュール...
-
エクセルマクロエラー「'Cells'...
-
Excelでフィルタをかけると警告...
-
VBAで Set wb = Sheets(1).Cop...
-
VBAからPDFファイルにパスワー...
-
テキストボックス中の文字列の...
-
エクセルVBAでcode128のバー...
-
EXCEL VBA オートシェイプナン...
-
VBAで作成するメール(開封確認...
-
PowerPointVBAでスライドマスタ...
-
ある文字列が全て数字であるか...
-
エクセルVBAで配列内に空白デー...
-
[VBA]CDOメッセージ送信エラー
-
オブジェクトが見つかりません
-
UserForm1.Showでエラーになり...
-
上下の位置揃えについて
おすすめ情報