プロが教えるわが家の防犯対策術!

みなさんのお力を貸して下さい。

現在エクセルマクロにて新規ブックを作成し、作成したブックへ既存のシートをコピーをしたいと思っています。
しかし、コピーメソッド実行時にエラー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") 

どなたかご教授、よろしくお願いします。

A 回答 (4件)

インスタンスの違う Excel間でのコピーが出来ないのではないかと思います



自アプリExcelに新しいBookを追加してのコピーなら可能なように思います
    • good
    • 0

下記も参考になりそうです。



演算の終ったシートだけを別名ブックとして保存する
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv922.html
    • good
    • 1

コピーしたいシート上で下記を実行



Sub Macro1()
ActiveSheet.Copy
End Sub

以上です
    • good
    • 0

エラーの原因は、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)のみの新しいブックが作成されます。
 
    • good
    • 2
この回答へのお礼

ご回答を頂いたみなさま。
早めのご助言を頂き感謝しております!

出来れば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

お礼日時:2009/02/21 01:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!