初めまして。
部内でIT全般担当者が退職し、その方が作ったファイルを触れる人が誰もいなくなってしまったため、付け焼刃で残されたものに手を入れています。当方VBA超初心者です。
業務PC、ファイルは持ち出せず記憶に頼って書いているので質問以外の間違いもあるかと思いますが、
以下、▲やりたいこと▲やりたいことに対してできていないことを書き出しました。皆様のお知恵を拝借できますと助かります。
▲やりたいこと
コピー元ブック名 「リスト2025年2月22日現在.xlsm」
@ Worksheets(4)のシート名「リスト」 フィルタの抽出結果のみを新しいブックに同じシート名でコピーしたい
A Worksheets(5)のシート名「yyyymmdd」 上と同じブックの「リスト」シートの右隣にこのシートをそのまま同じシート名でコピーしたい(「yyyymmdd」は任意の日付なのでコピー元シートそのままの表記と同じにしたい)
B コピー先新しいブック名「001 リスト2025年2月22日現在.xlsm」としたい
新しいブック名はコピー元ブック名の頭に"001"をつけたいです。
"001"は抽出結果のコードで連番ではないです。
C 新しいブックの保存先 "C:\ドキュメント\還元"
▲やりたいことに対してできていないこと
@ 抽出結果を新しいブックにコピーできたがシート名を「リスト」にできない(「Sheet1」になってしまう)
A 何もできていない
B 何もできていない
C 何もできていない
↓はコピー元の抽出結果が出た状態の「リスト」シートです。
リスト
コード 店名 担当者 番号 氏名 番号 商品コード 商品名
001 東京 01 1234567 〇〇 ◇◇ 5728091 1250684 商品名
001 東京 03 5293461 〇〇 ◇◇ 5847326 1518685 商品名
001 東京 07 2233156 〇〇 ◇◇ 5417128 1652335 商品名
001 東京 07 7812396 〇〇 ◇◇ 5889775 1127790 商品名
001 東京 10 5289355 〇〇 ◇◇ 5886821 1452273 商品名
001 東京 10 6639777 〇〇 ◇◇ 5838034 1176132 商品名
001 東京 10 5289355 〇〇 ◇◇ 5264009 1888657 商品名
001 東京 04 9639223 〇〇 ◇◇ 5085372 1023046 商品名
以下は自分で記憶しているコードです。
「' フィルタリングされたデータを新しいブックにコピーします」 のところでエラーになります。
その前のシート名もうまく行っていないので、ご教示いただけますでしょうか
ここから先はわからないまま書いているのでファイル名とパス名も多分エラーになると思います。
-------------------------------------------------------------
Sub フィルター結果を新しいbookに保存()
Dim sourceSheet As Worksheet
Dim newBook As Workbook
Dim filteredDataRange As Range
' フィルタリングを行うデータが含まれているシートを指定します
Set sourceSheet = ThisWorkbook.Sheets("リスト")
' フィルタリングを実行します
sourceSheet.Range("A2").AutoFilter Field:=2, Criteria1:="東京"
' フィルタリングされたデータの範囲を取得します
Set filteredDataRange = sourceSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
' 新しいブックを作成します
Set newBook = Workbooks.Add
' フィルタリングされたデータを新しいブックにコピーします
filteredDataRange.Copy newBook.Sheets(1).Range("A1")
Worksheets(5).Copy After:=newBook.Sheets(1)
' 新しいブックを保存します(ファイル名とパスを適宜変更)
newBook.SaveAs "001" & ThisWorkbook.Path, FileFormat:=xlWorkbookDefaul
' フィルタリングを解除します
sourceSheet.AutoFilterMode = False
' 新しいブックを閉じます
newBook.Close SaveChanges:=True
End Sub
初心者の質問でお恥ずかしいのですが、何卒よろしくお願いいたします。