電子書籍の厳選無料作品が豊富!

【やりたいこと】
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
--------------------------------

A 回答 (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(特定のシート)


で良いはずです。
    • good
    • 0

>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内で検証できるはずです。
    • good
    • 0

最大の原因は、book2を保存してないことです。


book2.save
book2.close
とします。

また、他の注意点として、
Set xl1 = Wscript.CreateObject("Excel.Application")
とした時に、現在のカレントディレクトリは、VBScriptのファイルがあったフォルダとは違う場合があるということです。開くファイルをフルパスで指定します。

あと、xl2は、エクセルを別に起動するというようなことですが、
xl1.WorkBooks.Open(B)
で開けます。
    • good
    • 0

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