VBAエクセルのファイル名指定方法について

このQ&Aのポイント
  • VBAエクセルのファイル名指定方法について質問します。特に、年度が変わる場合に自動的にファイル名を修正する方法について教えてください。
  • 現在、エクセルのVBAコードでファイル名を指定する際、年度が変わると手動でコードを修正する必要があります。年度が変わるたびにファイル名を修正するのは手間がかかるため、自動的にファイル名を変更する方法があれば教えてください。
  • VBAエクセルでファイル名を指定する際に、年度が変わる場合に自動的にファイル名を修正したいです。手動でファイル名を変更するのは手間がかかるため、効率的な方法があれば教えてください。
回答を見る
  • ベストアンサー

VBA エクセルのファイル名指定の件

ファイル名の指定方法について質問させていただきます。 フォルダ内に 2021年度ファイルが有ったと仮定して 私のエクセルのファイルの指定はいつも 標準モジュール内にて Workbooks("2021年度.xls") とこのようにファイルを指定しています。 ですが、この方法だと 来年2022年度のファイルになった場合 例えば2021年度のファイルをコピーして ファイル名だけ変更して2022年度にした時には Workbooks("2022年度.xls") とファイル名を標準モジュール内にて 入力しなおさないとエラーが起きます。 いちいちファイル名を修正するのは大変です。 このような場合 年度が替わるたびに標準モジュールのコードを 自動的に変わるような仕組みってあるのでしょうか? 今回なら簡単に Workbooks("2022年度.xls")にコードを 変更してくれる等 なにかいい方法あればご教授お願い致します。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (713/1474)
回答No.5

2022年度になっても、2021年度のテータを処理する可能性がある場合です。 3月締めと仮定して、 A1: =YEAR(EDATE(TODAY(),-3)) を入れておきます。 Workbooks([A1]&"年度.xls") でファイルを指定します。 その可能性が無い場合は、他の人が回答を上げているので省略します。

TaikooniQ1
質問者

お礼

ご回答ありがとうございます。 一番わかりやすかったので この回答を元に実践してみます。

その他の回答 (4)

回答No.4

"2021年度.xls"の部分を 計算式にしてしまえばよいのですが、 その計算方法には、いろいろ考えられますね。 (1) 今の年月日から計算する方法 なお、"年度"ということは 1~3月は前年なので、年から-1する必要があります。 (会社によっては自社の決算期で、年度を切り替えることもあるんで  読み替えてください) Dim nendo As String If Month(Date)<=3 Then  nendo = Year(Date) - 1  Else  nendo = Year(Date)    End if Workbooks(nendo & "年度.xls") みたいな感じ。 #DateAdd関数を使ったほうがきれいかも。 (2) Excelブック上に、ファイル名を記載するセルを用意して それを参照する方法。 (3) フォルダ内にある ”*年度.xls" というファイル名を ワイルドカードで探して、*の部分が最大のファイル名を採用する方法 (1)の場合は、4月1日から強制的に新しいファイルに切り替わります。 (2)の場合は、セルを書き換えることで 新しいファイルに切り替わります。 (3)の場合は、新しく"????年度.xls"という ファイルを作った時点から切り替わります。 他にも やり方はあるでしょうけど 現場での運用的にどのやり方が マッチするかで選ぶのがよいかと。

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

勝手(VBAで、ロジックで)に変わると、それはそれで都合が悪い場合があると思う.年度や年次経過後すぐなどにおいて。バッチ処理では、暦とデータ基準はズレルことが多い。 また質問者自身にはよいかもしれないが、他人(操作者)にはその仕組みは自然には判らないだろう。 説明が必要となる。だから戸惑いも生じるだろう。 結局利用者に、候補リストを出して(例えば、決めた1フォルダにその類のファイルだけ集めるようにして)、選ばせるにが自然ではないか。その時、リストに出すアイテムを加減できるかもしれない。VBAでファイル名の文言の1部(例 年数字)を見て。2年分ぐらいどうか。 直、その年(年1回として)だけの分もVBAで、ブック名の一部の語句から判別・選択(標示)できる しかし選択間違いの可能性もわずかに増える。その辺の加減は、設計者のシステム間による。 リストボックスのアイテムにFSOを使ってファイル名を出して、選ばせる、のが自然ではないかな。 作業月・年と、ファイルデータの基準年月とは、ずれる時期があることが多いから。ファイル名称は データの中身の時期を入れることが多いだろうから。

  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.2

たとえば4月から新年度となる場合でしたら Dim FileName As String If Month(Date) > 3 Then FileName = Year(Date) & "年度.xls" Else FileName = Year(Date) - 1 & "年度.xls" End If で Workbooks("2022年度.xls") を Workbooks(FileName) にして試してみてください。

  • emsuja
  • ベストアンサー率50% (1034/2055)
回答No.1

Workbooks("2021年度.xls") を Workbooks (Year(Date) & "年度.xls") とする

関連するQ&A

  • エクセルVBAで、PDFファイルを開きたい

    セルに入力した値のブック(xls)を開く場合、 以下となりますが、↓ Sub セルに入力したブック名のブックを開く() ブック名 = Cells(1, 2) 'B1セルの値を取り出す Workbooks.Open Filename:=ブック名 & ".xls" '指定されたブックを開く End Sub これでPDFファイルを開きたいです。 記述をどうしたらよいでしょうか。 目的はPDFファイルの検索/照会をxlsにてしたいのです。 お手数ですがお願いいたします。

  • VBAでエクセルからエクセルのファイルを開くには?

    D:\に db1.mdb Book1.xls があります。 db1.mdbのフォームのコマンドボタンをクリックして Book1.xlsを開きたいのですが VBAコードをご教授いただけますか? (マクロではなくVBAコードが知りたいです) エクセルからエクセルのファイルを開くなら Workbooks.Open ファイルのフルパス で出来ました。 ご回答よろしくお願いします。

  • エクセルVBA

    こんばんは! エクセルマクロ初心者です。 エクセルVBAについて教えてください! パス(?)を指定して、ファイルを開けてから実行する マクロを書きたいのですが、エラーになってしまいます。 Dim Filename as string (1)Workbooks.Open Filename:= "\D\MyDocument\●●.xls" (●●はファイル名) (2)Workbooks("●●").Activate (1)の部分は実行されて目的のファイルは開くのですが(2)でエラーになってしまいます。 どなたか教えてください! 以前までは、このマクロ実行できていたのですが、突然できなくなりました。 困ってます。

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • EXCEL VBA セルからファイル名を読み込む

    EXCEL VBAについての質問です 同じ処理を名前の違う複数のファイルで行いたいと思っています そこで、セルA2へファイル名の『○○.xls』○○部分だけをそれぞれのファイルに書き込んでおき、マクロは共通にしてファイル名をそれぞれのファイルから読み込んで実行したいと思っています。 良い方法を教えてください。 Workbooks("200809.csv").Activate Sheets("200809").Select Range("C3:C33").Copy Windows("○○.xls").Activate'←ここをファイルにあわせて変更できる形にしたい Sheets("報告書").Select Range("G5:G35").Select ActiveSheet.Paste Windows("200809.csv").Activate Range("K3:K33").Copy Windows("○○.xls").Activate’←ここ Sheets("報告書").Select Range("I5:I35").Select ActiveSheet.Paste Workbooks("200809.csv").Close SaveChanges:=False よろしくお願いします。

  • エクセルVBAでのファイル転送

    任意のアドレスに添付ファイルを付けて送信完了までのコードを教えてほしいです。 Workbooks("***.xls").Sheets("***").Activate Range("D8").Select /上記セルにメールアドレスを設定してます。/ Selection.Hyperlinks(1).Follow _ NewWindow:=False, AddHistory:=True 送り先は設定されるけど添付ファイルの付け方が判らない。 Workbooks("***.xls").Activate Application.Dialogs(xlDialogSendMail).Show 添付ファイルは付けれるけど送り先の設定が判らない。

  • EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる

    EXCELのVBAでマクロを使ってファイルを開こうとしている際、指定したファイルが存在しなかった場合、普通はマクロのエラーが出て「ファイルが存在しません」となりますが、指定したファイルが存在しなかった場合には、メッセージボックスを表示させ、そこで処理を中止させるか、または、その無いファイルの処理は飛ばして次のファイルの処理を行う用にさせることはできるでしょうか? Sub test1() Workbooks.Open Filename:="C:\Documents and Settings\001.xls (001が存在しない場合メッセージボックスを出しマクロを中止するか次の002を開くか選ぶ) Workbooks.Open Filename:="C:\Documents and Settings\002.xls End sub

  • Excel VBA ファイルをまとめる

    Excel2003にてフォルダにある複数ファイル(8個)の各1番左のシートを 指定したファイルにまとめるVBAを組みたいと思います。 まとめる際、ファイル名の一部を取得し、シート名にしたいのですが可能でしょうか? 例: ファイル名:20110927_△△△△株式会社.xls ⇒ シート名:△△△△株式会社 ※ファイルの個数は固定ですが、年月の部分は変わります。 簡単なVBAの経験しかなく、キーワード検索でもしっくりこないものばかりで どのようにコードを記述してよいのか非常に困っています。

  • Excel VBA 違うxlsファイルの指定したシートを開く処理

    Excel VBAで違うExcelファイルの指定したシートを開きたいのですが、 うまくいきません。現在のコードは、 *フォーム* Private Sub CB1_Click() Dim A As Integer A = MsgBox("データ展開する?", 4, "データ展開?") If A = 6 Then INPORT.FILE_OPEN1 End If End Sub *INPORTモジュール* Sub FILE_OPEN1()  FILE_OPEN8 End Sub Sub FILE_OPEN8() Dim fnames As String fnames = fnames1 Workbooks.Open Filename:=fnames ***ここでしょうか?.Sheet("")と指定しても出来ません*** End Sub Function fnames1() As Variant fnames1 = Application.GetOpenFilename( _ Title:="ファイルを開く", _ FILEFILTER:="エクセルファイル (*.xls), *.xls") If fnames1 = False Then MsgBox ("ファイルを開けませんでした。" & Chr$(13) & _ "もう一度やり直して下さい。") End End If End Function また、指定する事が出来たら、選択したシートを現在のブックにコピーもしたいのですが、どの様にすればよいでしょうか? よろしくお願いします。

  • エクセルVBAで参照ボタンを作成したい

    VBAでLAN上のエクセルファイルを指定して開くようにしたのですが、 そのファイルを参照ボタンを作成して、 ファイルを指定したいと考えています。 そのようなことはできるのでしょうか。 よろしくお願いします。 ***VBAのコード***** mypath = "\\server01\test\test.xls" ↑ このファイルを参照ボタンを使って指定したい Set wb = Workbooks.Open(mypath)

専門家に質問してみよう