• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シートを分離して他ブックに移動して保存する方法)

シートを分離して他ブックに移動して保存する方法

このQ&Aのポイント
  • あるブックにあるシートを検索してシート名に○○○が含まれているという条件で該当したシートを他ブックに移動する方法を探しています。
  • マクロ、VB等を使用して実施することが可能です。
  • 例えば、設計書.xlsにあるシートの中から名前に「テスト」が含まれるシートを他のブックに移動して保存することができます。

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

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

やり口は色々考えられますが例えば。 sub macro1()  dim bk0 as workbook  dim bk1 as workbook  dim w as worksheet ’最初に作業対象のブックを取得すること  set bk0 = activeworkbook 'もしくは =workbooks("設計書.xls")  for each w in bk0.worksheets   if w.name like "テスト*" then   ’該当のシートを移動すること    on error goto errhandle    w.move after:=bk1.worksheets(bk1.worksheets.count)    on error goto 0   end if  next ’保存する  bk0.save  if not bk1 is nothing then bk1.saveas "設計書テスト.xls"  exit sub ’一枚目の該当シートで移動先ブックを作ること errhandle:  w.move  set bk1 = activeworkbook  resume next end sub といったカンジで。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

出来るか? 出来る。VBAの経験あるのか。 (1)質問の内容がはっきりしないが 複数ブックの中から○○○○が含まれるシートを1つのブックにまとめるのか。 それなら在るフォルダのすべてのエクセルファイル名をとらえ、そのブック内のそのシート名を見て○○○○が含まれるシートは何か1つのブックに集める。(1シートを別ブックにするのか質問ではっきりしない。 しっかり説明のこと。 Google[ででも「VBA フォルダ ファイル 取得」で照会して勉強すること。 (2)1つのブック内のシート名を見て○○○○が含まれるシートは何か1つのブックに集めるとすると この場合は Sub test01() For Each sh In Worksheets p = InStr(sh.Name, "Sh") If p <> 0 Then MsgBox sh.Name End If Next End Sub のようなのをやってみれば、やり方が判るだろう。テストではSheet1-Sheet5などの中に名前を変えたシートを作って実験してみて。

batake1012
質問者

お礼

imogasiさん 助言ありがとうございます。 質問は、(1)を想定して記述しました。 (2)のことは考えていませんでした・・・。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

VBAでやるならこんな感じで。 設計書.xlsにこのコードを入れて見てください。 サンプルなのでエラー処理一切していません。あしからず。 Sub Sample()    Dim ws As Worksheet    Dim sName() As String    Dim i    '*****シート名に「テスト」を含む物を探す    i = 0    For Each ws In Worksheets       If InStr(ws.Name, "テスト") > 0 Then          ReDim Preserve sName(i)          sName(i) = ws.Name          i = i + 1       End If    Next ws    '*****探し出したシートをMOVE    If i > 0 Then       Sheets(sName()).Move       ActiveWorkbook.SaveAs Filename:="C:\設計書テスト.xls"    End If End Sub

関連するQ&A