• ベストアンサー

複数のシートを持つ2つのエクセルファイルを単純に結合したい

ファイルとして保存してあるエクセルのブックファイルAには10のシートが含まれており、同様のブックファイルBと結合して、20のシートが含まれるブックファイルCを作りたいのですが、エクセルを開いて対話形式で実行するのではなく、バッチファイルに引数としてファイルA・B・Cを渡して実行するなどの方法を探しております。 ご教示いただけると大変助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

VBSで作ってみました。 切り取り線の中身を例えばExcelCat.vbsという名前で保存して実行する時バッチ上で CScript ExcelCat.vbs A B C と書いて実行します。 指定したファイル名に拡張子は要りません(というかプログラムで付けるので付けてはダメ) ファイルはカレントディレクトリ(バッチの実行フォルダ)になければいけません(まあ、環境にあわせて変更して貰えばいいですけど) エクセルは、インストールされている必要があります。 -------8<--------8<--------8<----------- 'エクセルのファイルの連結:A+B→C '実行方法:CScript ExcelCat.vbs A B C Const EXCEL_EXP = ".xls" dim fso, folder, argList dim FileA, FileB, FileC dim objExcel, bookA, bookB Set argList =WScript.Arguments if argList.Length <> 3 then WScript.Echo "ファイル名を3つ指定してください" WScript.Echo "入力ファイル1 入力ファイル2 出力ファイル" WScript.Quit end if Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder(".") '作業フォルダ FileA = argList(0) & EXCEL_EXP 'ファイル名に拡張子を付ける FileB = argList(1) & EXCEL_EXP FileC = argList(2) & EXCEL_EXP Set objExcel = CreateObject("Excel.Application") objExcel.Visible = false objExcel.Workbooks.Open(folder.Path & "\" & FileA) objExcel.Workbooks.Open(folder.Path & "\" & FileB) Set bookA = objExcel.Workbooks(FileA) Set bookB = objExcel.Workbooks(FileB) bookB.Worksheets.Copy ,bookA.Worksheets(bookA.Worksheets.Count) bookA.SaveAs folder.Path & "\" & FileC objExcel.Workbooks.Close Set bookB = Nothing Set bookA = Nothing Set objExcel = Nothing -------8<--------8<--------8<-----------

mori-k
質問者

お礼

わざわざVBSで書いていただいてありがとう御座いました。大変よく理解できました。ありがとう御座いました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

AとBのシートで、同じ名前が有った時は、どうすればいいのでしょうか?

mori-k
質問者

補足

同じ名前は無いことを前提でお願い致します。

関連するQ&A