4つのマクロ(basファイル)A,B,C,Dがあります。
これらを下位モジュールとする、上位モジュールをつくり
条件に応じてマクロを実行させたいと思っています。
どのようにマクロになりますでしょうか?
条件はファイル名に32~38の数字が含まれていて
32~35まではAの処理、
36はBの処理、37はCの処理、38はDの処理をしたいと考えています。
イメージとしては
IF ファイル名=*32.csv or *33.csv or *34.csv or *35.csv Then
A.bas
elseif ファイル名=*36.csv Then
B.bas
elseif ファイル名=*37.csv Then
C.bas
elseif ファイル名=*38.csv Then
D.bas
end if
上記のような感じでIF文を全てのファイルを処理するまでループさせたいのですが、どなたかお教えいただけないでしょうか?
No.2ベストアンサー
- 回答日時:
#1です
>Fnum= の行で型が一致しません。
>となります。どうしたらいいでしょうか?
>
>ファイル名 = "C:\data"
>'このフォルダ下に更に幾つかのフォルダがあり、それぞれのフォルダに対象のファイルが2つある
>Fnum = Mid(ファイル名, Len(ファイル名) - 14, 2) + 0
このまま実行すると、型が一致しませんとでると思います。
Mid関数で出力されるのは文字列で、
たとえば『32』という文字列に数字のゼロを足しているので、
32という数字になります。(32以上35以下という処理をするには数字の方が都合が良いのです)
>ファイル名 = "C:\data"
というようになっており、このままでは処理したい数字を取得できません。
ファイル名 = "C:\data\●●●●\dt000_D10_31_32.csv"
Fnum = Mid(ファイル名, Len(ファイル名) - 5, 2) + 0
というようにすれば、右から6番目と5番目の2文字を取得するので、
32という数字が取得できます。
文字列と数字を同時に処理しているので、
些細なことで型が一致しない事が発生するので注意が必要です。
フォルダ内のファイル名を取得する方法は色々ありますが、
下記のサイトも参考になると思います。
フォルダ内のワークブックを順次処理する。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
フォルダ内のファイル一覧の取得
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
No.1
- 回答日時:
ファイル名が、
ABCD32.csv
のように拡張子の直前に2桁の数字があるものを処理したいのであれば、
ファイル名 = "ABCD32.csv"
Fnum = Mid(ファイル名, Len(ファイル名) - 5, 2) + 0
とすれば数字だけ取り出せるので、
If Fnum >= 32 And Fnum <= 35 Then
とすれば処理ができると思います。
ファイル名の規則性が違うのであれば、
別な方法もあると思います。
この回答への補足
ファイル名は
dt000_D10_31_32.csv
のような感じになっています。変わるのはdtの後が001になったり、
Dの後の数字が変化するくらいです。
ありがとうございました。
だいたい形にはなったのですが
Fnum= の行で型が一致しません。
となります。どうしたらいいでしょうか?
Dim i As Integer
ファイル名 = "C:\data"
'このフォルダ下に更に幾つかのフォルダがあり、それぞれのフォルダに対象のファイルが2つある
Fnum = Mid(ファイル名, Len(ファイル名) - 14, 2) + 0
For i = 1 To 14 'とりあえず7つのフォルダのデータを処理
If Fnum >= 32 And Fnum <= 35 Then
A.bas
ElseIf Fnum = 36 Then
B.bas
ElseIf Fnum = 37 Then
C.bas
ElseIf Fnum = 38 Then
D.bas
End If
Next i
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Python CSVファイルについて
-
エクセルのVBAについて とある...
-
csvファイルをlinuxコマンドで...
-
csvをVBAを使ってエクセル形式...
-
アクセスと同フォルダのCSVファ...
-
マクロ 上位モジュールの作成
-
エクセル 指定範囲をCSV出力
-
複数のcsvファイルを統合、でも...
-
csvファイルを結合するバッ...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
バッチでテキストファイルから...
-
大量のフォルダからひとつのフ...
-
VBAでワークシートを引数として...
-
コマンドプロンプト標準出力と...
-
binファイルを解凍したいの...
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチ処理でファイルの中身を...
-
テキストファイルで提出とは?
-
拡張子を元に戻す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのVBAについて とある...
-
csvファイルをlinuxコマンドで...
-
Python CSVファイルについて
-
FTPコマンド mgetでとまってし...
-
エクセル 指定範囲をCSV出力
-
複数のcsvファイルを統合、でも...
-
アクセスと同フォルダのCSVファ...
-
csv形式からbmpを作成
-
MAC フォルダ内のPDF件数とペー...
-
バッチ処理でcsvファイルの文字...
-
【Rコマンダー】データインポー...
-
Excelで”データ”形式のCSVが作...
-
複数のCSVファイルを読み込んで...
-
複数エクセルファイルの合成
-
コマンドによるzip圧縮
-
フォルダ内のファイル読み込み
-
EXCEL マクロが正常に動かなく...
-
gnuplotで複数csvファイルから...
-
複数のCSVファイルを1つのファ...
-
コマンドプロンプトの「%1」と...
おすすめ情報