• ベストアンサー

VBAにて新規ブックへ既存シートのコピー

みなさんのお力を貸して下さい。 現在エクセルマクロにて新規ブックを作成し、作成したブックへ既存のシートをコピーをしたいと思っています。 しかし、コピーメソッド実行時にエラー1004 WorksheetクラスのCopyメソッドが失敗しましたというエラーが発生して困っています。 Dim oXls As Object Dim oWbk As Object Dim oSheet As Object Set oXls = CreateObject("Excel.Application") Set oWbk = oXls.Workbooks.Add ThisWorkbook.Worksheets("Sheet1").Copy Before:=oWbk.Worksheets("Sheet1")  どなたかご教授、よろしくお願いします。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

エラーの原因は、redfox63さんが回答されてますのでなんですが。。。 >Set oXls = CreateObject("Excel.Application") これが拙いですよ、ということです。 '------------------------------------------ Sub test1()   Dim oWbk As Workbook   Set oWbk = Workbooks.Add   ThisWorkbook.Worksheets("Sheet1").Copy Before:=Worksheets("Sheet1") End Sub '----------------------------------------- Sub test2()   Workbooks.Add   ThisWorkbook.Worksheets("Sheet1").Copy Before:=Worksheets("Sheet1") End Sub '------------------------------------ Sub test3()   ThisWorkbook.Worksheets("Sheet1").Copy End Sub '------------------------------------- test1,2,3とも新しいブックは、ActiveWorkbook になります。 (test1では、oWbkも新しいブックですが) また、test3 では、コピーされたシート1枚(Sheet1)のみの新しいブックが作成されます。  

gari2kun
質問者

お礼

ご回答を頂いたみなさま。 早めのご助言を頂き感謝しております! 出来ればActiveWorkbookは使用したくなく(Excel使用中などにバグが出そう・・・想像ですが・・・)キチンとBookを指定して操作を行いたかったので、以下のコードで解決できました! 昨日あれだけ悩んだのがウソのようです。 本当にありがとうございました! Dim sSheetNM As String Dim oWbk As Workbook sSheetNM = "Manage" Set oWbk = Workbooks.Add ThisWorkbook.Worksheets(sSheetNM).Copy Before:=oWbk.Worksheets("Sheet1") oWbk.Worksheets(sSheetNM).Cells(2, 2).Value = "TestInput" oWbk.SaveAs "d:\Manage.xls" oWbk.Close

その他の回答 (3)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

コピーしたいシート上で下記を実行 Sub Macro1() ActiveSheet.Copy End Sub 以上です

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.2

下記も参考になりそうです。 演算の終ったシートだけを別名ブックとして保存する http://www.asahi-net.or.jp/~zn3y-ngi/YNxv922.html

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

インスタンスの違う Excel間でのコピーが出来ないのではないかと思います 自アプリExcelに新しいBookを追加してのコピーなら可能なように思います