質問

いつもお世話になっております。

今回はExcelのVBAについて質問があります。

例えば、以下のようにVBAを書くと、C:\test\1.xlsが作成され、その内容が変更されます。
Workbooks.Add.SaveAs dirName + "C:\test\1.xls"
Workbooks("1.xls").Worksheets("Sheet1").Cells(1, 2).Value = 777
Workbooks("1.xls").Save
Workbooks("1.xls").Close

しかし、Workbooks.Add.SaveAsしてWorkbooks("1.xls").Closeするので、C:\test\1.xlsが一瞬画面に現れます。
それに、ちょっと動作が遅い感じがします(わざわざ画面に表示しているから?)。

C:\test\1.xlsを画面に表示させずに、その内容を変更する方法はありませんでしょうか?
実は、一つのExcelファイルの内容から、1000件程度のExcelファイルを作成する必要があります。
毎回、画面を表示していると大変遅くなってしまう恐れがあるのです。

上記の解決方法、又は参考になるWebサイトをご教示いただけると助かります。

以上、よろしくお願いします。

通報する

回答 (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 '★これ大事

この回答へのお礼

おはようございます。

ご回答ありがとうございます。これこそ、私が知りたかった回答です!
本当にありがとうございました。

以下のスクリプトでパフォーマンスの比較を行ってみました。
ご教示いただいた方法では約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

Add直後に以下の操作をしてみて下さい。
Windows("1.xls").Visible = False

この回答へのお礼

回答ありがとうございます。

ご指摘の方法を追加してみましたが、やはり一瞬画面が表示されてしまいました。

以上、よろしくお願いします。

このQ&Aは役に立ちましたか?2 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

注目の記事

おしトピアプリ登場記念!コメントで最大1万円分のギフト券があたる!

話題のトピックにさくっとコメントできる「おしトピ」にAndroid版アプリに続きiPhoneアプリも登場! どちらかのアプリをダウンロードして指定のオーダーにコメントした方に抽選で最大1万分のアマゾンギフト券をプレゼント! フジテレビ出身のフリーアナウンサー長谷川豊氏の質問にも回答受付中!


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ