見学に行くとしたら【天国】と【地獄】どっち?

エクセルVBAのブックを開く方法

例えば
[20241001]
[20241002]
[20241003]のように毎日フォルダーが出来てきまして、各フォルダの中にはその日のデータが入った

データA.csv
データB.csv
データC.csvの3つのcsvが入ってます。

マクロが入ったブックを日毎にフォルダーに入れて、
そのフォルダー内のcsvを開き、名前をつけてエクセルブックで保存したいのですがどうしたらいいですか?

困っている事
毎日フォルダが変わるのでパスでは出来ないです。出来ればデータ名は毎回同じなので、[フォルダー内のデータA.csv]を開くという設定にして、名前で拾いたい。また保存も同じファイル内にしたいです

ブック[マクロ]→ファイル内のcsvを名前で開く→名前をつけてエクセルデータで同じフォルダ内に保存

A 回答 (3件)

>マクロが入ったブックを日毎にフォルダーに入れて



マクロが入ったブックは、作業対象のcsvファイルと同じフォルダに入っているということですよね。

>毎日フォルダが変わるのでパスでは出来ないです。

実行前に、フォルダにマクロファイルを入れるのであれば、マクロで現在のパスを取得することで対応するという方法もあり得るとは思います。

マクロ実行時に、最初に「ThisWorkbook.Path」を使えばよいと思います。

状況を間違えていたら、申し訳ございません。
    • good
    • 0
この回答へのお礼

これです。できました。ありがとうございました

お礼日時:2024/10/13 12:06

マクロを起動したときに、フォルダを選択するダイアログボックスを表示して、その選択されたフォルダ内のCSVファイルを処理するようにしてはいかがでしょうか。


1.処理対象となるフォルダはダイアログボックスを表示して選択する。
2.選択されたフィルだ内のCSVファイルをすべて処理する。
3.CSVファイルの文字コードはシフトJISである。

上記の前提で良ければマクロの提供は可能です。
    • good
    • 0
この回答へのお礼

大変勉強になりました。ありがとうございます。

お礼日時:2024/10/13 12:06

こんばんは



>毎日フォルダが変わるのでパスでは出来ないです。
ファイルを特定するのには、パスを用いるのが一般的です。
パスは文字列ですので、規則性のある処理であれば、文字列演算でパスを作成することは可能です。

実際に、どのような規則なのかわかりませんけれど・・
例えば、「マクロ実行時の日付のフォルダ」内の「データA.csv」であれば、

 folder = Format(Now(), "yyyymmdd\\")
 MsgBox folder & "データA.csv"

のような方法で、「20241011\データA.csv」のようにパス(の一部)を作成することが可能です。
(実行する日によってフォルダ名が変わります)

方法は異なりますが、
 「指定フォルダ内の最も遅い日付に該当するフォルダを探す」
ようなことも可能です。
実際になさりたいことが不明ですけれど、何らかのルールがあるものと想像しますので、その内容に合わせた処理を考えることで、目的を達成することができるものと思います。
    • good
    • 0
この回答へのお礼

VBAを始めたばかりでなかなか伝えきれなくてすいません。大変勉強になりました。ありがとうございます。

お礼日時:2024/10/13 12:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A