『VBA 別ブックに保存について』(maka)
いつも回覧させていただいております
シート2で作成した情報を新しいブックに貼り付けを行いたいのですが
エラーが出てしまい、VBAがまだ詳しくなくご教授いただけないでしょうか
【行いたいこと】
期間を入れたファイル名として別ブックを保存したい
ファイル名:●■企業リスト(mmdd−mmdd).xlsx
Dim FilName As String
Dim Kaisi, Owari, saveName
saveName = "●■企業リスト" Kaisi = ws1.Range("D3").Value Owari = ws1.Range("D4").Value
FilName = saveName & Kaisi & "−" & Owari & ") "
ws2.Copy
ActiveSheet.Name = Format("●■企業") ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & FilName & ".xlsx"
新しいBookとしてどうしても保存ができません。
エラー理由が
ファイルにアクセスができない事のようで
以下の理由が表示されています。
・ファイル名またはパスが存在しない
・他のプログラムによって使用されている
・保存しようとしているブックと同じ名前のブックが開かれてます
どうぞよろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
Debug.Print ThisWorkbook.Path & "\" & FilName & ".xlsx" としてイミディエイトウインドウに表示させ、 まずは、その内容を確認したらどうですか? (xyz) 2024/04/08(月) 11:00:22
ご指示ありがとうございます。
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & FilName & ".xlsx"
この時点にて
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "FilName" & ".xlsx"とした場合 【 FilName.xlsx】として保存される事は確認できました。
また、FilNameの部分を確認すると、●■企業リスト(mmdd−mmdd)として表記が紐づいていることは確認できるのですが保存名として保存ができない状況です
この"FilName"が悪いのかとは思うのです私では何がダメなのかがわからずで
改めてご教授いただけないでしょうか
よろしくお願いいたします。
(maka) 2024/04/08(月) 11:21:24
個人情報は修正したうえで、 Debug.Print ThisWorkbook.Path & "\" & FilName & ".xlsx" の結果をこちらにコピーペイストできないですか?
(xyz) 2024/04/08(月) 11:34:22
D3セルおよびD4セルにはどんな値が入力されてるのだろうか? (ねむねむ) 2024/04/08(月) 11:38:48
ご質問ありがとうございます。
D3セルおよびD4は日付となります
(maka) 2024/04/08(月) 12:05:47
お手数かけて申し訳ございませんが
ご確認頂けますでしょうか。
シート?@
部署 登録日 入金日 ー
あああ 2024/3/27 2024/3/31 確認日
いいい 2024/2/27 2024/4/03 2024/3/15
ううう 2024/1/25 2024/2/05 2024/3/31
えええ 2024/1/25 2024/3/15
おおお 2024/3/27 2024/3/31
シート?A
あああ 2024/3/27 2024/3/31
えええ 2024/1/25 2024/3/15
おおお 2024/3/27 2024/3/31
―‐‐‐
Sub 抽出()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets(”一覧")
Set ws2 = Worksheets("転用")
Dim FilName As String
Dim Kaisi, Owari, saveName
saveName = "●■企業リスト" Kaisi = ws1.Range("D3").Value Owari = ws1.Range("D4").Value FilName = saveName & Kaisi & "−" & Owari & ") "
'転記 With ws1.Range("A1").CurrentRegion .Resize(.Rows.Count - 1).Offset(1, 0).Copy ws2.Range("A3") ws2.Columns("F:M").Delete
End With
ws2.Copy ActiveSheet.Name = Format("●■企業") ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & FilName & ".xlsx"
―‐‐‐
結果
Debug.Print ThisWorkbook.Path & "\" & FilName & ".xlsx" C:\Users\PC\Desktop\作業(企業リスト)\.xlsx
よろしくお願いいたします。
(maka) 2024/04/08(月) 12:08:49
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & FilName & ".xlsx" の前の行に Debug.Print ThisWorkbook.Path & "\" & FilName & ".xlsx" を入れて実行しているんですか?
FilName = saveName & Kaisi & "−" & Owari & ") "が関与していないようですけど。
(xyz) 2024/04/08(月) 12:13:08
具体的には月日を 0408 のように4桁」の数字で入力しているのだろうか? (ねむねむ) 2024/04/08(月) 12:19:13
Sub さんぷる() Dim ws1 As Worksheet Set ws1 = ThisWorkbook.Worksheets("シート1")
ThisWorkbook.Worksheets("シート2").Copy Workbooks(Workbooks.Count).SaveAs Filename:= _ ThisWorkbook.Path & "\●■企業リスト" & _ Format(ws1.Range("D3").Value, "mmdd") & _ "−" & _ Format(ws1.Range("D4").Value, "mmdd") & ") " End Sub
(もこな2 ) 2024/04/08(月) 12:24:03
(む) 2024/04/08(月) 12:27:42
こちらの助言どおりに実行して結果を報告してもらわないと発見も遅れます。 すでに指摘があるように、"む"さんの指摘どおりでしょう。
イミディエイトウインドウの使い方をマスターすることを推奨します。 「実行途中に Debug.Printを入れて、イミディエイトウインドウに出力する」というのは、 Poor man’s debuggerなどと揶揄されることもありますが、 プリミティブで、かつとても確実なデバッグ用の道具です。
(xyz) 2024/04/08(月) 13:01:10
文字列に変換したら希望通りのファイル名にて、無事ファイル保存ができました。
ご教授本当にありがとうございます。
(maka) 2024/04/08(月) 13:21:45
ご指摘ありがとうございます。
使えない文字があること勉強になりました。
またイミディエイトウインドウについてもこれから勉強してまいります。
ご回答いただいた皆様
本当にありがとうございました。
(maka) 2024/04/08(月) 13:25:43
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.