シートを他のブックに貼付けたい

このQ&Aのポイント
  • Excel2007でマクロ作成中の初心者です。本ブックの中の「当月売上」シートを他ブックに貼付けたいです。他ブックに貼り付けた「当月売上」シート名は、セルK1の日付に変更したいです。四苦八苦して以下のコードをつくりましたが、「同じ名前のシート名に変更できません。」というエラーがでるので、名前が同じ時は上書き保存し、違うときは新しいシート名を作るというコードにしたいです。
  • 売上シートを他のブックに貼り付けるためのマクロを作成しています。本ブックの「当月売上」シートを他ブックに貼り付け、貼り付けたシート名をセルK1の日付に変更したいです。ただし、同じ名前のシートが既に存在する場合は上書き保存し、異なる名前で保存したいです。現在、コードを作成中ですが、「同じ名前のシート名に変更できません。」というエラーが発生しています。どのようにすればエラーが発生せずに上書き保存または新しい名前で保存できるでしょうか。
  • Excel2007でマクロを作成しています。本ブックの「当月売上」シートを他のブックに貼り付け、貼り付けたシートの名前をセルK1の日付に変更したいです。ただし、同じ名前のシートが既に存在する場合は上書き保存し、異なる名前で保存したいです。以下のコードを作成しましたが、「同じ名前のシート名に変更できません。」というエラーが出力されます。解決策を教えてください。
回答を見る
  • ベストアンサー

シートを他のブックに貼付けたい

Excel2007でマクロ作成中の初心者です。 やりたいことは 1)本ブックの中の「当月売上」シートを他ブックに貼付けたいです。 2)他ブックに貼り付けた「当月売上」シート名は、セルK1の日付に変更したいです。 すると、他ブックのシートが毎月順に、売上(2012年4月) 売上(2012年5月) 売上(2012年6月)というふうに増えます。 3)何月に作成しても、ブックの「当月売上」シートを貼り付けます。 四苦八苦して以下のコードをつくりましたが、「同じ名前のシート名に変更できません。」 というエラーがでるので、このエラーが出ないように、名前が同じ時は上書き保存し、違うときは新しいシート名を作るという コードにしたいです。困ってます。どうかご指導お願いします。 Sub 売上シートの貼付け() Dim WBK1 As Workbook ' 本ブックの Dim WBK2 As Workbook ' 貼付け先他ブック ChDir ThisWorkbook.Path + "\売上" On Error Resume Next Set WBK2 = Workbooks("24年度売上.xls") On Error GoTo 0 If WBK2 Is Nothing Then Set WBK2 = Workbooks.Open(ThisWorkbook.Path & "\売上\24年度売上.xlsm") End If Worksheets("当月売上").Copy After:=Workbooks("24年度売上.xlsm").Sheets(Workbooks("24年度売上.xlsm").Sheets.Count) ActiveSheet.Name = Format(Range("K1").Value, "売上(yyyy年mm月)") Application.DisplayFormulaBar = True WBK2.Close SaveChanges:=True Application.DisplayAlerts = True Set WBK2 = Nothing End Sub

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

Workbooks("24年度売上.xls")の有無を確認して処理を分けているように シートも有無を確認して処理を分ければ On Error Resume Next   Set SH = Workbooks("24年度売上.xls").Worksheets(Format(Range("K1").Value, "売上(yyyy年mm月)")) On Error GoTo 0 If SH Is Nothing Then   'シートが無い場合の処理 Else   'シートが有る場合の処理 End If

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 名前が同じ時は上書き保存し、違うときは新しいシート名を作るという 「名前が同じシートがあるか?を判定し、あれば削除する」を加えれば ほぼ今のままで行けませんか?

aitaine
質問者

お礼

ご回答ありがとうございます。ご指摘を参考にしてほぼ思い通りにできました。

aitaine
質問者

補足

「当月売上」シートは、まちがいが有った時修正します。同じ「当月売上」シートという名でも修正後の シートで貼り付けたいので、上書きは絶対条件なのですが・・。

関連するQ&A

  • VBAであるBOOKの「sample」というシートを別BOOKに

    VBAであるBOOKの「sample」というシートを別BOOKに 別Bookにコピーしたいのですが、 ネットを参考にして下記のようにするとエラーになります。 実行時エラー'9' 「インデックスが有効範囲にありません」 と表示されます。 どこが間違っているでしょうか? どなたか教えてください。 ---------------------------------------- Dim NewBook As Workbook Dim fName As String Set NewBook = Workbooks.Add fName = ThisWorkbook.Path & "cp.xls" NewBook.SaveAs Filename:=fName Workbooks("moto.xls").Sheets("ピッキング").Cells.Copy Workbooks(fName).Sheets("Sheet1").Paste Destination:=Cells(1, 1) '<---ここでエラー Workbooks(fName).Save ----------------------------------------

  • Excel VBA 非表示の別ブックへシートコピー

    Excel2010のVBAで、別のExcelブックを非表示で開いて、 シートをコピーすると、 「実行時エラー'1004':WorksheetクラスのCopyメソッドが失敗しました。」 というエラーが出て、正しくシートをコピーすることができません。 (1)のように自分のブックへはシートをコピーすることはできるのですが、 (2)のように別のExcelブック上でシートをコピーする場合と (3)のように別のExcelブック上にシートをコピーする場合の いずれも同様のエラーになります。 どのように記述すれば(2)と(3)でもコピーすることができるのでしょうか。 ------------------------------------------------------------- Sub test()  Dim newEx As Excel.Workbook  Dim newFile As String  newFile = ThisWorkbook.Path & "\New_Book.xlsx"  Set newEx = Workbooks.Open(newFile, UpdateLinks:=0)  Application.Windows("New_Book.xlsx").Visible = False  '(1)New_BookのSheet3を自分のブックにコピーする (正常)  newEx.Worksheets("Sheet3").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)  '(2)New_BookのSheet3をNew_Bookにコピーする (エラー)  newEx.Worksheets("Sheet3").Copy after:=newEx.Sheets(newEx.Sheets.Count)  '(3)自分のブックのSheet3をNew_Bookにコピーする (エラー)  ThisWorkbook.Worksheets("Sheet3").Copy after:=newEx.Sheets(newEx.Sheets.Count)  Application.Windows("New_Book.xlsx").Visible = True  Application.DisplayAlerts = False  newEx.Save  newEx.Close  Application.DisplayAlerts = True  Set newEx = Nothing End Sub -------------------------------------------------------------

  • シートを複写して既にあるブックの中に挿入したい

    Excel2007でマクロ作成中の初心者です。 現在下記のコードにより、自分のPC、他のPCで正常に、マクロ実行しています。 1)このマクロは、年間12個のブックができますので、加工が面倒です。そのため これを、デスクトップのフォルダ「実績綴り」内の、「年間集計表」というブックの  最前列のシートの前に追加していきたいのです。そうすれば、1年分がひとつのブックに 保存されるので何かと便利です。 3)追加するシート名が、無いときは問題ないですが、既にある場合は、複製が挿入されるので  最新のシートと古いシートが混在してしまいます。何か工夫はないでしょうか 。以上よろしくご指導をお願いします。 ’-------------------------------------------- Sub シートの保存() ' 現在使用しているマクロコード ’1)ブックには、シートの名「月売上」がある。 ’2)このシートを複写して、新規ブックを作成する。 ’3)このシートの「月売上」セル「R4の値」を、新規ブック名とする。 ’4)保存先は、デスクトップのフォルダ「実績綴り」とする。 ’5)セル「R4の値」が変更されない限り、上書きされるので、データは常に最新である。 Application.ScreenUpdating = False 'Const cnsTITLE = "マクロなしブックの作成" 'Const cnsFILTER = "Excelワークブック (*.xls),*.xls" Dim xlAPP As Application Dim WBK1 As Workbook ' 本ブックの Dim WBK2 As Workbook ' 作成ブック Dim strFileName As String Dim tblSH As Variant Dim lngLines As Long Dim myDate As String Worksheets("月売上").Select myDate = Range("R4").Value Set WBK1 = ThisWorkbook ' 本ブック ' 指定シートを新規ブックにコピーする Worksheets("月売上").Copy Set WBK2 = ActiveWorkbook strFileName = Format(myDate, "ge年m月度") & ".xls" Dim Path As String, WSH As Variant Set WSH = CreateObject("Wscript.Shell") Path = WSH.SpecialFolders("Desktop") & "\実績綴り" Set WSH = Nothing ChDir Path Application.DisplayAlerts = False WBK2.SaveAs "月売上" & strFileName, FileFormat:=XlFileFormat.xlExcel8 Application.DisplayFormulaBar = True WBK2.Close False Application.DisplayAlerts = True Set WBK2 = Nothing MAKE_NEWBOOK_WO_MACROS_EXIT: Set WBK1 = Nothing Set xlAPP = Nothing End Sub

  • シートに年月を入れて保存すると数字が入る

    EXcel2007でマクロ作成中の初心者です。  以下のコードを実行すると、追加されたシート名が 「H24年5月度-4143」となってしまいます。 これを「H24年5月度」にするにはどうしたらよろしいでしょうか。 Sub 年間常用シートの保存() 'シートの毎月挿入 Application.ScreenUpdating = False Dim myPath As String Dim WBK As Workbook Dim WBK1 As Workbook Dim SN As String myPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\雇用関係\H24年データ" Set WBK = Workbooks.Open(myPath & "\集計表.xlsm") Workbooks("24年度計算.xlsm").Activate Worksheets("集計1").Select SN = Format(Worksheets("集計1").Range("P3").Value, "ge年m月度") & Excel.XlFileFormat.xlWorkbookNormal On Error Resume Next '※既に年間集計表に"ge年m月度"が有れば削除 Application.DisplayAlerts = False WBK.Worksheets(SN).Delete Application.DisplayAlerts = True On Error GoTo 0 '"ge年m月度"シートを年間集計表の最前列のシートの前に追加 Worksheets("集計1").Copy Before:=Workbooks("集計表.xlsm").Sheets(1) 'End With ActiveSheet.Name = SN '集計表を上書き保存 WBK.Close True End Sub

  • 他のブックからシートをコピーする

    ExcelVBA勉強中の者です。 他のブックのsheet1をコピーし、使用中のブックのsheet1にペーストする事を目的に ネットの情報を参考に以下のコードを作成しました。 Sub test() Dim book1 As Workbook '変数book1をワークブック型で宣言 Dim book2 As Workbook '変数book2をワークブック型で宣言 Set book1 = Application.ActiveWorkbook 'アクティブになっているブックをbook1へセット Application.ScreenUpdating = False '画面の更新を止める '↓アドレスのブックを開く事までbook2にセット(ReadOnly:=Trueで読み込み専用) Set book2 = Application.Workbooks.Open("C:\Documents and Settings\AAA\デスクトップ\他のブック.xls", ReadOnly:=True) book2.Sheets("Sheet1").Copy after:=book1.Worksheets("sheet1") Set book1 = Nothing '変数book1を開放 book2.Close SaveChanges:=False 'book2を閉じる(SaveChanges:=Falseで保存せずに終了) Application.ScreenUpdating = True '画面の更新を再開する Set book2 = Nothing '変数book2を開放 End Sub 動作としては上手くいったのですが、 book2.Sheets("Sheet1").Copy after:=book1.Worksheets("sheet1") の部分でペースト先を変数book1のsheet1と指定しているにも関わらず sheet1(2)という新しいシートが作成され、そちらへペーストしてしまいます。 思うに「コピーしたシートを挿入する」という動作であると思われますが、 これをペーストするという表記が出来ず困っております。 お手数お掛けしますがどなたかご助力お願い致します。 *Excelのバージョンは2002を使用しております。

  • 保護されたブックのコピーについて

    現在、ボタンを押すと新規ブックが作成され、最初のブックのシートをコピーするというマクロを組みました。 しかし、元になるブックにはブックの保護とシートの保護を両方かけていて、途中でエラーになるはずなのですが、何故かそうならずに普通に新規ブックにコピーがされます。 上手くいったのですがエラーが出ると予想していたので気持ちが悪く、また個人だけで使うわけじゃないので原因を知っておきたいです。 どなたかよろしくお願いします。 Private Sub makeBookButton_Click() Dim myWorkBook As String Dim newWorkBook As String Dim mySheet As Worksheet Application.ScreenUpdating = False On Error GoTo ErrTrap Application.DisplayAlerts = False myWorkBook = ThisWorkbook.Name Workbooks.Add ActiveWorkbook.SaveAs Filename:=NEWBOOK newWorkBook = ActiveWorkbook.Name Workbooks(myWorkBook).Activate For Each mySheet In ThisWorkbook.Worksheets Workbooks(myWorkBook).Sheets(mySheet.Name).copy after:=Workbooks(newWorkBook).Sheets(Workbooks(newWorkBook).Sheets.Count) Next Workbooks(NEWBOOK).Sheets("Sheet1").Delete Workbooks(NEWBOOK).Sheets("Sheet2").Delete Workbooks(NEWBOOK).Sheets("Sheet3").Delete Application.DisplayAlerts = True Application.ScreenUpdating = True Exit Sub ErrTrap: Call MsgBox("ブック作成時にエラーが発生しました。", vbCritical) End Sub

  • Excel 2007 マクロ 別ブックのシートをコピーする方法

    Excel 2007 マクロ 別ブックのシートをコピーする方法 別ブックのシートをコピーして アクティブなブックのシートにコピーしたいと思います。 下記マクロを作成しました。 貼り付ける際に、クリップボードに保存するかどうか 聞かれるメッセージが表示されてうまくいきません。 またもっとシンプルな書き方があればアドバイスお願いします。 Sub 取り込み() Dim wb As Workbook Set wb = Workbooks.Open("\") Sheets("Sheet1").Select Cells.Select Selection.Copy ThisWorkbook.Activate ThisWorkbook.Sheets("特定").Select ActiveSheet.Cells(1, 1).Select ActiveSheet.Paste wb.Close End Sub

  • ExcelVBAでBook間のシートコピーについて

    以前、Excel2003を使用しているときに作成したファイルで、2003の時には特に問題なく動いたのですが、Excel2010に入れ替えてからうまくいきません。 コードは以下のようなもので、コピーするシートには埋め込みグラフ(ソースは同一シート)があります。 Dim Book_A As Workbook Dim Book_B As Workbook Set Book_A = ThisWorkbook Set Book_B = Workbooks.Open("D:\Book_B.xls") For i = 1 To 3 Book_A.Sheets(i).Copy Before:=Book_B.Sheets(i)   '※ Next i 上記※印の部分で下記のエラーが発生します。 実行時エラー '-2147417848(80010108)': オートメーションエラーです。 起動されたオブジェクトはクライアントから切断されました。 となり、止まってしまいます。 また、同じファイルを2003の入った端末から実行するとエラーは発生しません。 また、2010の入った端末で試しにシート見出しを右クリックして別のBookにコピーをしたところ、グラフやテキストボックスが抜け落ちたものがコピーされます。 2010では方法が違うのでしょうか?

  • 他のブックが開くと同時にユーザーフォームを表したい

    Aブックから他のブックが開いた時、ユーザーフォームを表示したいので 次のコードでやってみたが、なぜか表示されません。ご教示お願いします。 AブックのThisworkbookに入力しました。 (1)Private Sub Workbook_Open() A表紙.Show End Sub A表紙にコマンドボタンをつけました。 (2)Private Sub CommandButton96_Click() A表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\2年施設\計算プログラム.xlsm" Sheets(1).Select End Sub 開いた”改善プログラム”のThisworkbookに入力しました。 Private Sub Workbook_Open() UserForm1.Show End Sub

  • シートの複写をデスクトップのフォルダに挿入したい

    Excel2007でマクロ作成中の初心者です。 今正常に作動しているマクロコード「この計算シートの保存」をもとに 「この計算シートをデスクトップの決まったフォルダに挿入」としたいです。 どう変更したらいいかご指導お願いします。 ------------------------------------------- Sub この計算シートをデスクトップの決まったフォルダに挿入() ' 'Const cnsTITLE = "マクロなしブックの作成" 'Const cnsFILTER = "Excelワークブック (*.xls),*.xls" Dim xlAPP As Application Dim WBK1 As Workbook ' 本ブックの Dim WBK2 As Workbook ' 作成ブック(新規ブック) Dim strFileName As String Dim tblSH As Variant Dim lngLines As Long Dim myDate As String myDate = Range("AE4").Value 'Date = Format(Date, "ge年m月度") Set WBK1 = ThisWorkbook ' 本ブック ' この計算シートをデスクトップの「計算書庫」フォルダに挿入する   Worksheets("この計算シート").Copy Set WBK2 = ActiveWorkbook strFileName = Format(myDate, "ge年m月度") & ".xls" ChDir ThisWorkbook.Path + "\計算書庫" 'デスクトップの「計算書庫」フォルダに変更したい Application.DisplayAlerts = False WBK2.SaveAs "定期計算書" & strFileName, FileFormat:=XlFileFormat.xlExcel8 MsgBox "この計算書を " & myDate & " の名前でデスクトップの「計算書庫」フォルダに挿入しました。" Application.DisplayFormulaBar = True WBK2.Close False Application.DisplayAlerts = True Set WBK2 = Nothing MAKE_NEWBOOK_WO_MACROS_EXIT: Set WBK1 = Nothing Set xlAPP = Nothing End Sub ---------------------------------------------- Sub この計算シートの保存() ' 'Const cnsTITLE = "マクロなしブックの作成" 'Const cnsFILTER = "Excelワークブック (*.xls),*.xls" Dim xlAPP As Application Dim WBK1 As Workbook ' 本ブックの Dim WBK2 As Workbook ' 作成ブック(新規ブック) Dim strFileName As String Dim tblSH As Variant Dim lngLines As Long Dim myDate As String myDate = Range("AE4").Value 'Date = Format(Date, "ge年m月度") Set WBK1 = ThisWorkbook ' 本ブック ' この計算シートを新規ブックにコピーする Worksheets("この計算シート").Copy Set WBK2 = ActiveWorkbook strFileName = Format(myDate, "ge年m月度") & ".xls" ChDir ThisWorkbook.Path + "\計算書庫" Application.DisplayAlerts = False WBK2.SaveAs "計算書庫"" & strFileName, FileFormat:=XlFileFormat.xlExcel8 MsgBox "この計算書を " & myDate & " の名前で保存しました。" Application.DisplayFormulaBar = True WBK2.Close False Application.DisplayAlerts = True Set WBK2 = Nothing MAKE_NEWBOOK_WO_MACROS_EXIT: Set WBK1 = Nothing Set xlAPP = Nothing End Sub

専門家に質問してみよう