• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シートを複写して既にあるブックの中に挿入したい)

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

このQ&Aのポイント
  • Excel2007でマクロ作成中の初心者です。現在下記のコードにより、自分のPCから他のPCで正常にマクロを実行しています。加工が面倒なため、デスクトップのフォルダ「実績綴り」内の「年間集計表」というブックの最前列のシートの前に複製を追加したいです。そうすれば、1年分がひとつのブックに保存されるので便利です。ただし、既にあるシートと混在してしまう問題があります。解決策はありますか?
  • Excel2007でマクロ作成中の初心者です。下記のコードでマクロを実行していますが、問題があります。年間12個のブックを作成するため、手間がかかります。したがって、デスクトップのフォルダ「実績綴り」内の「年間集計表」というブックの最前列のシートの前に複製を追加したいです。これにより、1年分のデータをひとつのブックに保存することができます。ただし、既にあるシートが混在してしまう問題があります。対処方法はありますか?
  • Excel2007でマクロを作成していますが、問題に直面しています。下記のコードでマクロを実行していますが、年間12個のブックを作成するため、手間がかかります。そのため、デスクトップのフォルダ「実績綴り」内の「年間集計表」というブックの最前列のシートの前に複製を追加したいです。これにより、1年分のデータをひとつのブックに保存することができます。ただし、既にあるシートと混在してしまう問題があります。解決策はありますか?

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

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

>Path = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\実績綴り"の >Path = が黄色くなり、コンパイルエラー 変数が定義されていません。 おかしな現象ですね、貴方がアップされた Set WSH = CreateObject("Wscript.Shell") Path = WSH.SpecialFolders("Desktop") & "\実績綴り" にはエラーが出なくて私のには出たわけですね・・・ おそらく変数の宣言をされていないからですね Dim Path As String ただ、貴方の書かれたPathを流用しましたがPathはPathプロパティとして使われますので myPath などとしたほうが良いですね Dim myPath As String Dim WBK As Workbook Dim SN As String myPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\実績綴り" Set WBK = Workbooks.Open(myPath & "\年間集計表.xls") With ThisWorkbook.Worksheets("月売上") SN = Format(.Range("R4").Value, "ge年m月度") 'On Error Resume Next '※既に年間集計表に"ge年m月度"が有れば削除 'WBK.Worksheets(SN).Delete 'On Error GoTo 0 '"ge年m月度"シートを年間集計表の最前列のシートの前に追加 .Copy Before:=Workbooks("年間集計表.xls").Sheets(1) End With ActiveSheet.Name = SN '年間集計表を上書き保存 WBK.Close True

aitaine
質問者

お礼

今日朝5時におきて、貴方様から教えていただいたコードを印刷し、何度も試しているうちに、完璧に思ったとおりの動作を確認しました。これで作業が12分の一以上に軽減されることになりました。感謝かんげきです。たくさんのお時間を割いてくださり本当にありがとうございます。またご指導いただくことありましたらよろしくお願いします。本当にありがとうございました。

aitaine
質問者

補足

Set WBK = Workbooks.Open(myPath & "\年間集計表.xls") c:¥user¥aaaaa¥desktop¥実績綴り¥年間集計表.xlsが見つかりません。ファイル名がだたしいかどうか・・が出ます。確かに、年間集計表.xlsは存在してるのに・・・。 お世話かけてもうしわけありません。どうしてなのでしょうか?

その他の回答 (3)

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

>Set WBK = Workbooks.Open(myPath & "\年間集計表.xls") >c:¥user¥aaaaa¥desktop¥実績綴り¥年間集計表.xlsが見つかりません。 年間集計表の拡張子が xlsx とか xlsm などではないでしょうか?

aitaine
質問者

補足

自分もそう思い確認しましたが、拡張子は、xls になってます。 Set WBK = Workbooks.Open(myPath & "\年間集計表.xls") の前に MsgBox "現在のカレントフォルダは" & vbCrLf & _ CurDir & vbCrLf & "です。" をつけたところ、現在のカレントフォルダは c:¥user¥aaaaa¥desktop¥このマクロが入っているフォルダ  ・・・が表示されますけど、これは 別によろしいでしょうか。

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

参考に   '実績綴りのパス取得   Path = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\実績綴り"   '年間集計表オープン   Set WBK = Workbooks.Open(Path & "\年間集計表.xls")   '最前列のシートの前に追加していきたいのです   With ThisWorkbook.Worksheets("月売上")     SN = Format(.Range("R4").Value, "ge年m月度")     'On Error Resume Next     '※既に年間集計表に"ge年m月度"が有れば削除     'WBK.Worksheets(SN).Delete     'On Error GoTo 0     '"ge年m月度"シートを年間集計表の最前列のシートの前に追加     .Copy Before:=Workbooks("年間集計表.xls").Sheets(1)   End With   ActiveSheet.Name = SN   '年間集計表を上書き保存   WBK.Close True

aitaine
質問者

補足

'実績綴りのパス取得   Path = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\実績綴り"の Path = が黄色くなり、コンパイルエラー 変数が定義されていません。のエラーがでるのですが回避の方法教えてください。

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

Worksheets("月売上").Copy の代わりに Sheets("月売上").Copy Before:=Workbooks("年間集計表").Sheets("(前月のシート名)") とするなり、 "(前月のシート名)"を 1かWorkbooks("年間集計表").sheets.countにするかしたら できると思います。 Before:=は指定したBook.Sheetの前にコピーするというパラメタ。

aitaine
質問者

補足

ごしてきのとおり Sheets("月売上").Copy Before:=Workbooks("年間集計表").Sheets(1) やってみましたがうまくいきません。 Copyするときは、両方のブックが開いた状態でないと、うまくいかないときいています。 とすると Set WBK2 = ActiveWorkbook でなくSet WBK2 =デスクトップのフォルダの中の年間集計表を指定しなくてよろしいのでしょうか?