- ベストアンサー
VBScriptでExcelファイルを2つ開いた場合の2つ目のファイルを閉じる方法
- VBScriptを使用してExcelファイルを2つ開いた場合に、2つ目のファイルを閉じる方法を教えてください。
- VBScriptを使用してExcelファイルを2つ開いた場合、2つ目のファイルを閉じる方法についてお教えください。
- VBScriptでExcelファイルを2つ開いた場合の2つ目のファイルを閉じる方法について知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No1です。 失礼しました。 Set z = x.Workbooks.Add().Worksheets(1)がありましたね。 でも x.Workbooks(1).Close ここでクローズしているので x.Workbooks(2).SaveAs("F:\Test_02.xlsx") x.Workbooks(2).Close の Workbooks(2) は Workbooks(1)ではないでしょうか。 何か説明が変で申し訳ありませんが、わかってもらえるでしょうか。 Dim x, y, z Set x = CreateObject("Excel.Application") x.Application.DisplayAlerts = False x.Visible = True Set y = x.Workbooks.Open("F:\Sample.xlsx").Worksheets(1) Set z = x.Workbooks.Add().Worksheets(1) z.Range("A1").Value = y.Range("A1").Value x.Workbooks(1).Activate msgbox "Workbooks(1)を表示" x.Workbooks(2).SaveAs("F:\Test_02.xlsx") x.Workbooks(2).Activate msgbox "Workbooks(2)を表示" x.Quit Set z = Nothing Set y = Nothing Set x = Nothing で試して?
その他の回答 (1)
- hallo-2007
- ベストアンサー率41% (888/2115)
>ファイルを2つ開いたので、「Workbooks(2)」となる、 単に、オープンしているブックは一つしか開いていないですよ。 例えば Option Explicit Dim x, y, z,v Set x = CreateObject("Excel.Application") x.Application.DisplayAlerts = False x.Visible = False Set y = x.Workbooks.Open("F:\Sample.xlsx").Worksheets(1) Set v = x.Workbooks.Open("F:\Sample-2.xlsx").Worksheets(1) Set z = x.Workbooks.Add().Worksheets(1) z.Range("A1").Value = y.Range("A1").Value x.Workbooks(1).SaveAs("F:\Test_01.xlsx") x.Workbooks(1).Close x.Workbooks(2).SaveAs("F:\Test_02.xlsx") x.Workbooks(2).Close x.Quit Set z = Nothing Set y = Nothing Set x = Nothing といったような場合であれば、ご希望の内容ではないでしょうか。
補足
さっそくありがとうございます。 いえ、2つ開いているのです。 Set z = x.Workbooks.Add().Worksheets(1) で、新規のワークブックを作成しているのです。 現に、この状態で、 (Set y = x.Workbooks.Open("F:\Sample.xlsx").Worksheets(1)が無い状態) Set z = x.Workbooks.Add().Worksheets(1) z.Range("A1").Value = "abc" x.Workbooks(1).SaveAs("F:\Test_02.xlsx") x.Workbooks(1).Close で、「F」ドライブに「Test_02.xlsx」が作成されています。 (もちろん「A1」セルに「abc」の文字がある状態です) ということは、2つファイルを開いているのではないでしょうか? もし、間違っていたら、またご指摘ください。 さっそく、ありがとうございました。 以上
お礼
何度もありがとうございます! 確かに、問題なく実行できました。 Workbooks(1)は、ちゃんと最初に開いた「Sample.xlsx」が Workbooks(2)は、後で「Add」したファイルが開きました。 ただ、私として分からないのは、 x.Workbooks(1).Closeのところは通るのに x.Workbooks(2).Closeのところで 「インデックスが有効範囲にありません」 というエラーメッセージが出るのです。 すでに「SaveAs」しているので、 閉じずに、「x.Quit」で構わないようなのですが、 ちょっと釈然としません。 しかし、さしあたりの問題は解決しました。 下らない興味に付き合って頂き、 本当にありがとうございました。 以上