タイトル : 異なるブックからのワークシート挿入 投稿日 : 2014/08/28(Thu) 14:10 投稿者 : 乙さん
開発環境:Windows XP, Visual Studio 6.0 SP6 目標: master.xls に「全社計」というワークシートが存在し、それに続けて 別のファイル 01.xls のワークシート「01」を挿入すること。 条件: (1) この操作を行うサーバ(2003サーバ)には Office がインストールされていません。 (2) 実際には挿入対象となるファイルが 40 個ほどありますが、まず 1 個で実現したいです。 (3) 各ファイルのワークシートにはそのワークシート内で完結している計算式が含まれており、 これらを活かす必要がありますので、ワークシートの挿入を実現したいです。 以下がソースです ---- ここから ---- Dim XL1, XL2 As Object 'Excel Application Dim WB1, WB2 As Object 'Excel Workbook Dim WS1, WS2 As Object 'Excel Worksheet ' 新規にExcelを起動する Set XL1 = CreateObject("Excel.Application") XL1.Visible = False Set XL2 = CreateObject("Excel.Application") XL2.Visible = False ' 既存のファイルを開く Set WB1 = XL1.Workbooks.Open("D:\work\master.xls") Set WB2 = XL2.Workbooks.Open("D:\work\01.xls") ' 操作対象となるワークシートを取得 Set WS1 = WB1.Worksheets("全社計") Set WS2 = WB2.Worksheets("01") ' シートをコピー(全社計の後に 01 を置きたい) WS1.Copy After:=WS2 '変数の解放とExcelの終了 Set WS1 = Nothing Set WS2 = Nothing WB1.Close saveChanges:=True WB2.Close Set WB1 = Nothing Set WB2 = Nothing XL2.Quit XL1.Quit Set XL2 = Nothing Set XL1 = Nothing ---- ここまで ---- これを実行すると、 実行時エラー '1004': Worksheet クラスの Copy メソッドが失敗しました。 と出てしまい、ワークシートの挿入ができません。 WS1.Copy After:=WS2 を WS2.Copy After:=WS1 にしても同じメッセージが出てきます。 この操作は手作業でやれば何とかなるのですが、いかんせん、ファイルの 個数が多いのと、将来的にはバッチ処理で夜中に作業させて、朝には ファイルが使えるようになっている…という状態にするのが理想です。 類似の内容で苦しんでいる方もいらっしゃるのではないかと思い、 投稿させていただきました。 よろしくお願いいたします。 |