tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 異なるブックからのワークシート挿入
投稿日: 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
にしても同じメッセージが出てきます。

この操作は手作業でやれば何とかなるのですが、いかんせん、ファイルの
個数が多いのと、将来的にはバッチ処理で夜中に作業させて、朝には
ファイルが使えるようになっている…という状態にするのが理想です。


類似の内容で苦しんでいる方もいらっしゃるのではないかと思い、
投稿させていただきました。
よろしくお願いいたします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。