• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ワークシートを移動するVBAをご指導ください。)

VBAを使ったワークシートの移動方法を教えてください

このQ&Aのポイント
  • 現在、手動でワークシートの移動をしているが、VBAを使って自動化したい。具体的には、実績ワークシートの五つ目を1月から昇順に実績フォルダーの年度別フォルダーの月別ブックに移動したい。
  • さらに、移動先のブックを開く方法も教えてほしい。移動するたびにブックを開かなければならないため。
  • 移動方法や手順を教えていただけると幸いです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

5枚目のシート,その1枚だけを,目的のブックの所定の場所に差し込みたいという事ですね。 ぶっちゃけ指導するのはメンドクサイので,コタエを書いておきます。自習して,必要な部分は自力で応用してください。 #追加機能  ・5枚目のシート名が不適切だった場合の対応  ・所定のフォルダが無かった場合の対応  ・所定のブックが無かった場合の対応 sub macro1()  dim y,m,d  dim myPath as string  dim w as workbook  dim i as long ’準備  d = thisworkbook.worksheets(5).name  if not d like "??-??-??" then   msgbox "INVALID SHEET NAME"   exit sub  end if  mypath = "c:\どこかのフォルダ\実績フォルダー\"  ’★適切に設定  y = year(datevalue(d)) & "年度\"  m = format(datevalue(d), "yy-mm") & ".xls"  ’★または".xlsx" ’ブックを開く  on error resume next  mkdir mypath & y  on error goto errhandle  set w = workbooks.open(filename:=mypath & y & m)  on error goto 0 ’差込先を探して差し込む  for i = 1 to w.worksheets.count   if w.worksheets(i).name > d then exit for  next i  if i = 1 then   thisworkbook.worksheets(5).copy before:=w.worksheets(1)  else   thisworkbook.worksheets(5).copy after:=w.worksheets(i - 1)  end if retpos: ’「5枚目のシートを移動したい」場合は次を生かす 'application.displayalerts = false 'thisworkbook.worksheets(5).delete 'application.displayalerts = true ’終了する  w.close savechanges:=true  exit sub ’実績ブックが用意されてなかったら作らないといけない errhandle:  thisworkbook.worksheets(5).copy  set w = activeworkbook  w.saveas filename:=mypath & y & m  resume retpos end sub

isekaoru
質問者

お礼

keithin先生 質問の拙い表現にもかかわらず、ご推察いただき完璧なご指導を賜り心より御礼申し上げます。 随所に適切なコメントを付記していただいたり、拡張子までご配慮いただきありがとうございました。 お蔭様でこのように出来れば最高と考えていました通り出来ました。

すると、全ての回答が全文表示されます。

関連するQ&A