VBでエクセルのシートをコピーするには?

解決


MAKOTO  2004-10-07 14:36:00  No: 85922  IP: [192.*.*.*]

お世話になっております。
過去ログで似たようなものがあり参考にさせていただいたのですが
エラーになってしまうため質問させていただきました。

Test1.xlsのシートをTest2.xlsにコピーしたいのですがうまくいきません。
エラー内容は「Worksheet クラスの Copy メソッドが失敗しました。」とでます。
どなたか理解できる方がいらっしゃいましたら、ご教授をお願い致します。
環境は  VB6.0(SP5)  Excel2000です。


    Dim objMoto As Object
    Dim objSaki As Object

    ' エクセルを起動
    Set objMoto = CreateObject("Excel.Application")
    Set objSaki = CreateObject("Excel.Application")

    ' エクセルファイルを開く
    objMoto.Workbooks.Open "C:\Text1.xls"
    objSaki.Workbooks.Open "C:\Text2.xls"

    objMoto.Visible = True
    objSaki.Visible = True

    objMoto.Sheets(1).Select
    objMoto.Sheets(1).Copy After:=objSaki.Sheets(objSaki.Sheets.Count)

    objMoto.Workbooks.Close
    Set objMoto = Nothing
    objSaki.Workbooks.Close
    Set objSaki = Nothing


よろしくお願い致します。

編集 削除
nanashi  2004-10-07 18:47:24  No: 85923  IP: [192.*.*.*]

別プロセスだからです。
ひとつのプロセスでコピーすれば平気なハズです。

    Dim objMoto As Excel.Application
    
    ' エクセルを起動
    Set objMoto = New Excel.Application
    
    ' エクセルファイルを開く
    With objMoto
        .Workbooks.Open "C:\Text1.xls"
        .Workbooks.Open "C:\Text2.xls"
        
        .Visible = True
        
        .Workbooks(1).Sheets(1).Copy After:=.Workbooks(2).Sheets(.Workbooks(2).Sheets.Count)
        
        .Workbooks(2).Close True
        .Workbooks(1).Close
        
        .Quit
    End With
    
    Set objMoto = Nothing

編集 削除
MAKOTO  2004-10-07 19:20:49  No: 85924  IP: [192.*.*.*]

nanashiさん大変ありがとうございました。
きちんと動作しました。

編集 削除