- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Excel VBA】エクセルファイルを新規作成し、それを画面に表示せずに内容を変更するには?)
【Excel VBA】エクセルファイルを新規作成し、画面に表示せずに内容を変更する方法は?
このQ&Aのポイント
- Excel VBAを使用してエクセルファイルの内容を変更する方法について質問です。普通にVBAを使うとファイル作成と保存の過程で一瞬画面に表示されるため、作業が遅くなる可能性があります。画面に表示せずに内容を変更する方法があれば教えてください。
- VBAを使用してエクセルファイルを新規作成し、内容を変更する場合に画面に表示せずに処理する方法について教えてください。Excelファイルを作成する際に画面に表示されると処理が遅くなるため、効率的に作業する方法が知りたいです。
- Excel VBAを使用してエクセルファイルを新規作成し、内容を変更する方法について質問です。ファイル作成時に画面に表示しないようにする方法が知りたいです。処理速度の向上にもつながるため、効率的な方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
しょうがないから別のプロセスでやりますか Dim APL, WBK, WKS Set APL = CreateObject("Excel.Application") '別プロセスを立ち上げる Set WBK = APL.Workbooks.Add Set WKS = WBK.WorkSheets(1) WKS.Cells(1, 2).Value = 777 WBK.SaveAs "C:\test\1.xls" WBK.Close APL.Quit Set APL = Nothing '★これ大事
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1416)
回答No.1
Add直後に以下の操作をしてみて下さい。 Windows("1.xls").Visible = False
質問者
お礼
回答ありがとうございます。 ご指摘の方法を追加してみましたが、やはり一瞬画面が表示されてしまいました。 以上、よろしくお願いします。
お礼
おはようございます。 ご回答ありがとうございます。これこそ、私が知りたかった回答です! 本当にありがとうございました。 以下のスクリプトでパフォーマンスの比較を行ってみました。 ご教示いただいた方法では約32秒、今までの方法では63秒でした。 単純な処理ですが速度が2倍となりました。 Sub testBtn3_Click() Dim APL, WBK, WKS Dim i As Integer Kill "C:\test\*.*" Start = Time For i = 0 To 50 Set APL = CreateObject("Excel.Application") '別プロセスを立ち上げる Set WBK = APL.Workbooks.Add Set WKS = WBK.Worksheets(1) WKS.Cells(1, 2).Value = 777 WBK.SaveAs "C:\test\" + Trim(Str(i)) + ".xls" WBK.Close APL.Quit Set APL = Nothing '★これ大事 Next i MsgBox (Time - Start) * 24 * 60 * 60 Kill "C:\test\*.*" Start = Time Application.ScreenUpdating = False For i = 0 To 50 Workbooks.Add.SaveAs "C:\test\" + Trim(Str(i)) + ".xls" Windows(Trim(Str(i)) + ".xls").Visible = False Workbooks(Trim(Str(i)) + ".xls").IsAddin = False Workbooks(Trim(Str(i)) + ".xls").Worksheets("Sheet1").Cells(1, 2).Value = 777 Workbooks(Trim(Str(i)) + ".xls").Save Workbooks(Trim(Str(i)) + ".xls").Close Next i Application.ScreenUpdating = True MsgBox (Time - Start) * 24 * 60 * 60 End Sub