• ベストアンサー

VBAで Set wb = Sheets(1).Copyができないわけ?

rexfanの回答

  • rexfan
  • ベストアンサー率42% (3/7)
回答No.5

No4です。 訂正です。 Set wb = Workbooks.Add(ActiveWorkbook.Sheets(1).Copy) という形でTemplateに指定します。 ただし「Sheet1」というブックが何故か余分にできてしまい 理由がわからないので完全な回答になっていません。

merlionXX
質問者

お礼

ありがとうございます。 今、自宅の2003で試しましたら#3のコードも#4のコードもエラーになりませんね でも両方とも余分なBookができてしまうのは困りものです。 やはり、素直にそういうものなんだと覚えることにします。

関連するQ&A

  • エクセルVBAで作成した別ブックにVBAを記述したい

    VBAで別ファイルの作成は下記で出来ているのですが、出来上がったファイルにVBAを記述する方法がわかりません。 具体的には一番下のSub TEST()を新しいブックの標準モジュールに記述したいのと、sheet1に Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "ChangeTEST" End Sub を入れたいです。 また Private Sub Workbook_Open() MsgBox "OpenTEST" End Sub も入れたいのです。 どうぞご教示ください。 Sub 複製() Dim wb As Workbook, sc As Integer sc = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set wb = Workbooks.Add Application.SheetsInNewWorkbook = sc wb.Sheets("Sheet1").Select ThisWorkbook.Sheets("Sheet1").Cells.Copy wb.Sheets("Sheet1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Buttons.Add(123, 195, 68.25, 15).Select Selection.OnAction = "TEST" Selection.Characters.Text = "TEST" ActiveWorkbook.Close ThisWorkbook.Activate Sheets("Sheet1").Select End Sub Sub TEST() MsgBox "TEST!!" End Sub よろしくお願いします。

  • エクセルVBA 3/26夜の補足です

    おはようございます お忙しいに申し訳ありません 春から私用で使うための自作ソフトを作成したおります ご迷惑おかけします 指摘のサンプルです わたしなりに作成したものです Sub sheetcopy1() ThisWorkbook.Sheets("sheet1").Select Range("B2:K100").Select Selection.Copy Dim wb As Workbook Set wb = Workbooks.Add ThisWorkbook.Sheets("sheet1").Copy before:= _ wb.Worksheets(1) Set wb = Nothing End Sub これですと、新しいBOOKが起動しシートすべての項目が張り付きます シートの一部を(B2からK100)を移したいと思っています ワンクリックとはフォームのコマンドボタンで移動できればと思っています よろしければお知恵をおかりしたくおもいます よろしくお願いします

  • VBA 実行時エラーで、"プロパティまたはメソッド

    ・Sheet1(コード) Private Sub CommandButton1_Click() Call aaa End Sub ・Module1(コード) Sub aaa() Dim wb As Workbook Dim ws As Worksheet Workbooks.Open ("c:\test.xls") Set wb = Workbooks("test.xls") Set ws = wb.Worksheets("Sheet1") wb.ws.Range("A2").Value = "CCC" End Sub wb.ws.Range("A2").Value = "CCC"の部分で 以下の実行エラーが出ます。 ------------------------------------------------------------------------ 実行時エラー'438': オブジェクトは、このプロパティまたはメソッドをサポートしていません。 ------------------------------------------------------------------------ Set wb = Workbooks("test.xls") Set ws = wb.Worksheets("Sheet1") の部分で特にエラーも出ないので、オブジェクトの取得は成功していると 思うのですが、WorkSheetオブジェクトのwsからRangeメソッドを呼ぶことが できません。 動かない原因と対策を教えてください!!

  • VBAについて質問です。

    VBAについて質問です。 現在、ExcelにてWorkbookを自動で作成するモジュールを作成しています。 モジュールを記載しているWorkbookを [wbSorce] 自動で作成されるWorkbookを [wbNew] とします。 [wbSorce] でモジュールを実行すると、 [wbNew] を新規に作成し、 データを入力して保存するのですが、保存する際に [wbNew] のイベントハンドラ [Workbook_Open] に 保存された [wbNew] を開いた時の挙動を記載するには どうすればよいでしょうか? サンプルは下記になります。 ****[wbSorce]のモジュール**** Sub wbNew_Sakusei()   Dim wb As Workbook   Dim wb2 As Workbook   Dim i As Integer   Set wb = ThisWorkbook   Set wb2 = Workbooks.Add   For i = 1 To 5     wb2.Sheets(1).Cells(1, i) = wb.Sheets(1).Cells(1, i)   Next   wb2.SaveAs Filename:="wbNew" End Sub ****[wbNew]に記述したいモジュール**** Private Sub Workbook_Open()   ActiveWindow.ScrollRow = 1   MsgBox "Workbook_Openイベントが発生しました。" End Sub

  • エクセルvba

    エクセルvbaなのですが Sub test() Dim xlApp As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) 'コード・・・ Set xlApp = Nothing Set xlBook = Nothing End Sub これだと Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) の部分で、エラーになります。 実行時エラー1004です。 自身ファイルをオブジェクトに格納して操作したいのですがどうすればいいでしょうか?

  • エクセル マクロのこの意味教えて

    初心者で済みませんが 下記のマクロの意味を行ごとに教えてください。 Dim bk As Workbook Set bk = ActiveWorkbook Dim st As Worksheet For Each st In bk.Sheets Workbooks.Add st.Copy Before:=ActiveWorkbook.Sheets(1) ActiveWorkbook.SaveAs path & st.Name & ".xls" ActiveWorkbook.Close Next 以上です

  • ファイル すべてのシート 値だけ 別のシート

    ファイルAのすべてのシートに関数式が含まれています。 このシートを別フォルダーに分割し書き出すことは出来たのですが 関数式まで貼り付けられます。 これを値のみにしたいのですがご教授御願いします。 マクロはこれです。 Sub シート分割() Const path As String = "C:¥" Dim bk As Workbook Set bk = ActiveWorkbook Dim st As Worksheet For Each st In bk.Sheets Workbooks.Add st.Copy Before:=ActiveWorkbook.Sheets(1) ActiveWorkbook.SaveAs path & st.Name & ".xls" ActiveWorkbook.Close Next End Sub

  • Word VBA

    ※行頭の下線はプログラムに関係ありません、インデントと解釈ください。 Excel VBAで既に開いているワークブックの一覧取得は Sub test() __Dim wb As Workbook __For Each wb In Workbooks ____Debug.Print wb.Name __Next wb End Sub で成功したのですが、 Word VBAで Sub test() __Dim wb As Object __For Each wb In CreateObject("Excel.Application").Workbooks ____Debug.Print wb.Name __Next wb End Sub では何も表示されません。 問題解決のための知識を与えてくださる方、宜しくお願いします。

  • エクセルVBAで別BOOKに「名前の定義」のCopy

    前からあったエクセルのファイルのどこかが壊れたらしく、ときどき作業中に突然エラーとなってエクセル自体が落ちてしまうので、BOOKの複製では意味がないと考え、同じ内容のものを別BOOKに再作成するマクロを以下のとおり作ってみました。(新規作成のBOOKにこのマクロを貼ります) これで、VBAのモジュールを除き、再作成できたのですが、どういうわけか「名前の定義」を行なったセル範囲の一部が反映されません。 調べてみると、他のセルから参照されていない「名前の定義」がすっぽり抜け落ちるようにも思えるのですが、この理解であっているでしょうか? 他のセルから参照していなくとも、マクロで参照しているので抜け落ちるのは困ります。 どうすれば、すべての「名前の定義」が再作成されるでしょうか? Sub Book_Copy() Dim fn As String Dim wb1 As Workbook, wb2 As Workbook Dim ans As Integer, i As Integer Dim nm As Name Dim sh As Worksheet fn = Application.GetOpenFilename("エクセル ファイル (*.xls), *.xls") If fn = "False" Then Exit Sub Application.EnableEvents = False Set wb1 = Workbooks.Open(Filename:=fn, UpdateLinks:=1) Set wb2 = ThisWorkbook ans = MsgBox(wb1.Name & "を " & wb2.Name & " へCopyしますか?", vbYesNo + vbQuestion) If ans = vbNo Then Exit Sub For Each nm In wb2.Names nm.Delete Next nm For Each sh In wb1.Worksheets sh.Cells.Copy i = i + 1 If wb2.Worksheets.Count = i Then wb2.Worksheets.Add After:=Worksheets(i) Application.DisplayAlerts = False wb2.Activate wb2.Worksheets(i).Activate wb2.Worksheets(i).Cells.Select ActiveSheet.Paste wb2.Worksheets(i).Name = sh.Name Application.DisplayAlerts = True Application.CutCopyMode = False End If Next sh wb1.Close (False) Application.EnableEvents = True ActiveWorkbook.ChangeLink Name:=fn, NewName:=wb2.Name, Type:=xlExcelLinks Set wb1 = Nothing Set wb2 = Nothing End Sub

  • VBAでエラーが出ます

    セルの値を変数に格納して、それをブック保存時に使いたいのですが上手くいきません。 Sub サンプルブック保存() Dim myfile As String myfile = workbooks("サンプル").Worksheets("sheet1").Cells(2, 9) workbooks.Add ActiveWorkbook.SaveAs Filename:="\\C:\フォルダ\" & myFile & ".xls" End Sub エラーメッセージは、 実行時エラー'1004': SaveAs'メソッドは失敗しました'_Workbook'オブジェクト と出ます。 非常に困ってます。 教えてくだされば幸いです。