- ベストアンサー
WSHによるExcelのセルコピー&ペーストの方法
【やりたいこと】 WSHを利用して 1.あるExcelファイル(Aとする)を開く 2.別のExcelファイル(Bとする)を開く 3.Aの特定のシートの特定のセル範囲をコピー 4.Bの特定のシートに、3でコピーしたセル範囲をペースト 5.B上書き保存&閉じる 6.A閉じる 【現状】 以下のようなコードを書いてみたのですが、 ファイルの開閉はできますがコピー&ペーストが 全くできていないようです。 何が問題なのかよくわからず質問させていただきました。 かなり素人なので無駄も多いですが、ぜひご教授願います。 よろしくお願い致します。 ------------------------------------- Set xl1 = Wscript.CreateObject("Excel.Application") xl1.Visible = false Set book1 = xl1.WorkBooks.Open(A) Set mysheet1 = book1.worksheets(特定のシート) Set xl2 = Wscript.CreateObject("Excel.Application") xl2.Visible = false Set book2 = xl2.WorkBooks.Open(B) Set mysheet2 = book2.worksheets(特定のシート) mysheet1.Activate xl1.Range("A1").CurrentRegion.Select xl1.Selection.Copy mysheet2.Activate xl2.Range("A1").Select xl2.Selection.Pastespecial 'ファイルクローズ book2.Close false xl2.Quit set mysheet2 = Nothing set book2 = Nothing Set xl2 = Nothing book1.Close false xl1.Quit set mysheet1 = Nothing set book1 = Nothing Set xl1 = Nothing --------------------------------
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Set xl1 = Wscript.CreateObject("Excel.Application") >Set xl2 = Wscript.CreateObject("Excel.Application") これだとExcelのインスタンスが2つできてしまいます。 2ブックを開くのにExcelを2つ立ち上げる必要はありません。 Set xl1 = Wscript.CreateObject("Excel.Application") xl1.Visible = false Set book1 = xl1.WorkBooks.Open(A) Set mysheet1 = book1.worksheets(特定のシート) Set book2 = xl1.WorkBooks.Open(B) Set mysheet2 = book2.worksheets(特定のシート) ・ ・ で良いはずです。
その他の回答 (2)
- sam_inoue
- ベストアンサー率47% (27/57)
>mysheet1.Activate >xl1.Range("A1").CurrentRegion.Select >xl1.Selection.Copy >mysheet2.Activate >xl2.Range("A1").Select >xl2.Selection.Pastespecial ここもNGでしょう。 RangeはSheetに属します。 mysheet1.Activate mysheet1.Range("A1").CurrentRegion.Select mysheet1.Selection.Copy mysheet2.Activate mysheet2.Range("A1").Select mysheet2.Selection.Pastespecial とするか、 mysheet1.Range("A1").CurrentRegion.Copy mysheet2.Range("A1") だけでも良いと思います。 このあたりはExcelVBA内で検証できるはずです。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
最大の原因は、book2を保存してないことです。 book2.save book2.close とします。 また、他の注意点として、 Set xl1 = Wscript.CreateObject("Excel.Application") とした時に、現在のカレントディレクトリは、VBScriptのファイルがあったフォルダとは違う場合があるということです。開くファイルをフルパスで指定します。 あと、xl2は、エクセルを別に起動するというようなことですが、 xl1.WorkBooks.Open(B) で開けます。