[[20240408103210]] 『VBA 別ブックに保存について』(maka) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『VBA 別ブックに保存について』(maka)

いつも回覧させていただいております

シート2で作成した情報を新しいブックに貼り付けを行いたいのですが
エラーが出てしまい、VBAがまだ詳しくなくご教授いただけないでしょうか

【行いたいこと】
期間を入れたファイル名として別ブックを保存したい

ファイル名:●■企業リスト(mmdd−mmdd).xlsx
  


【作成したコード一部】
シート1に 指定期間
シート2に コピーしたいデータ

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は作成され、新しいBookのシート名は変更されるのですが
この、 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

xyz様

ご指示ありがとうございます。

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


xyz様

お手数かけて申し訳ございませんが
ご確認頂けますでしょうか。

シート?@
部署 登録日    入金日   ー
あああ 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

横からですが、Format関数を使って、日付(シリアル値)を文字列に変換してはどうですか?
    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


SaveAsの時に、ファイル名に使えない文字の/(スラッシュ)を入れたら、同じエラーメッセージが出ることを確認できたよん

(む) 2024/04/08(月) 12:27:42


 こちらの助言どおりに実行して結果を報告してもらわないと発見も遅れます。
 すでに指摘があるように、"む"さんの指摘どおりでしょう。

 イミディエイトウインドウの使い方をマスターすることを推奨します。
 「実行途中に Debug.Printを入れて、イミディエイトウインドウに出力する」というのは、
  Poor man’s debuggerなどと揶揄されることもありますが、
 プリミティブで、かつとても確実なデバッグ用の道具です。

(xyz) 2024/04/08(月) 13:01:10


もこな2様

文字列に変換したら希望通りのファイル名にて、無事ファイル保存ができました。
ご教授本当にありがとうございます。

(maka) 2024/04/08(月) 13:21:45


む様
xyz様

ご指摘ありがとうございます。

使えない文字があること勉強になりました。
またイミディエイトウインドウについてもこれから勉強してまいります。

ご回答いただいた皆様
本当にありがとうございました。
(maka) 2024/04/08(月) 13:25:43


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.