- ベストアンサー
VBE でワイルドカード的にファイルを指定したい
いつも拝見させていただいています。 VBE 初心者です。 ファイルを開くとき、ワイルドカードのような指定はできますか? 毎日アメリカのサーバからデータをDLする作業をしています。 データは自動的にテキスト(CSV)ファイルでこちらのローカルドライブに保存されます。 そこまではアメリカでのコントロールです。 そのCSV ファイルに付いている名前が、毎日ちがうので困っています。 DLするプログラム名に番号が割り振られて保存されているのです。 例 R554211J1_PJPPM000_945844_PDF.csv R554211J1_PJPPM000_944634_PDF.csv R554211J1_PJPPM000_935448_PDF.csv このファイルを開いて加工するのですが、VBE に記述するときはどうしたらいいですか? くっついてくる番号は、予想できません。 Workbooks.Open FileName:="c:\R554211J1_PJPPM000_*.csv" としてみたらやはりダメでした(x_x)短絡的? MS-DOS のREN コマンドのようなのがあれば、楽なのですが……。 エクセルのバージョンは97 SR-2 です。 よろしくお願いします。
- megumaru
- お礼率95% (139/145)
- オフィス系ソフト
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
特定のフォルダに保存されたファイルを、無条件で全ファイル処理するのか、一部を選択するのかで違ってくると思われます。 ○フォルダ内の全csvファイルを無条件で処理するのであれば、 『FileChoose1』のようにDirを使って、ファイル名を特定できます。 今はSheet1のA列に書き出しています。 ○フォルダ内の指定したcsvファイルを処理するのであれば、 『FileChoose2』のようにしてGetOpenFilenameで複数ファイルを指定し、ファイル名を特定できます。 複数ファイルの指定は、ダイアログボックスの選択で、Shiftキー、Ctrlキーを使います。 今はSheet1のB列に書き出しています。 標準モジュールに貼りつけます。(ファイル名特定方法のサンプル) ↓ Sub FileChoose1() Dim myFolder 'フォルダ Dim myFilename As String 'ファイル名 Dim rw As Long '行カウンタ myFolder = "A:\TEST\" '例です 'DirでExcelBookを探す myFilename = Dir(myFolder & "*.csv") While myFilename <> "" rw = rw + 1 Worksheets("Sheet1").Cells(rw, 1) = myFolder & myFilename 'myFolder & myFilenameが抽出されたファイル名の1つ '***** 処理を書くこともできる **** Workbooks.Open FileName:= ・・・ '次のファイル myFilename = Dir Wend End Sub Sub FileChoose2() Dim fileToOpen As Variant Dim myFilter As String 'フィルタ Dim myTitle As String 'タイトル Dim rw As Long '行カウンタ myFilter = "excle(*.csv),*.csv" myTitle = "ファイルを指定します" fileToOpen = Application.GetOpenFilename(Filefilter:=myFilter, _ Title:=myTitle, MultiSelect:=True) If IsArray(fileToOpen) = False Then MsgBox "キャンセルされました" Else For rw = 1 To UBound(fileToOpen) Worksheets("Sheet1").Cells(rw, 2) = fileToOpen(rw) 'fileToOpen(rw)が選択したファイル名の1つ '***** 処理を書くこともできる **** Workbooks.Open FileName:= ・・・ Next End If End Sub
その他の回答 (1)
- misatoanna
- ベストアンサー率58% (528/896)
姑息な手法として―― セルA1に文字列でCSVファイルの番号だけ入力し、 Range("A1").Select AA = ActiveCell Workbooks.Open FileName:="C:\R554211J1_PJPPM000_" & AA & "_PDF.csv" としてマクロを実行されたらいかがでしょうか。
補足
さっそくありがとうございます! 少し補足します。 私だけでなく、同僚も抵抗なく実行できるようにしておきたいので…。 とくに同僚は年配ですしパソコンアレルギーの気もあり(笑)、 提示したようなファイル名を見ただけで拒絶反応を起こし、さらに そこから数字を手で抽出して…なんて言おうものなら、 「オレには出来ない!」 と拒絶されてしまうことが目に見えているのです(^^; 苦手なことを無理やりやらせるのも可哀想なので、可能な限りマクロ 実行ボタン1個でプログラムが走るようにしておきたいのです。 いろいろすみません。
関連するQ&A
- ファイルメーカーからCSVへのエクスポートについて
こんにちは。 今、ファイルメーカーで問合せデータを作成していて 顧客番号を入力する所があります。 このデータを、CSVでDLすると、「000012345」という会員番号は、CSVでは、「12345」としか表示がされません。 この番号を「0000」も表示させるにはどのような設定が必要なのでしょうか? よろしくお願いします。
- 締切済み
- その他(データベース)
- バッチファイルでファイル名を一括変更するには
大変お世話になっております。 windows上で、100個程度のファイル名を、一括で変換するバッチファイルを作りたいのですが、renコマンドの使い方が分かりませんでした。 何方か、お分かりでしたら、ご教示頂けると大変助かります。 ファイル名は、下記の通りになります。 【下記は変更前のファイル名】 235-R2022001978.pdf 2345677-R2022001979.pdf iiii-R2022001980.pdf 896-R2022001981.pdf eee-R2022001982.pdf やりたい事は、各ファイル名の変更後がR以下の文字の名前にすることです。 例えば、『235-R2022001978.pdf』→『R2022001978.pdf』へリネームしたいです。
- ベストアンサー
- Windows系OS
- C言語のファイル読み込み
あるcsvファイルがあり、それは以下のように(規則性のない)波形のデータです。 0.001 0.14 0.002 0.32 0.003 0.46 ・ ・ 2.000 0.22 左側がx軸、右側がy軸で、データはそれぞれ2000個あります。 このデータ(波形)をC言語のプログラムに読み込ませるにはどうしたらいいのでしょうか? #include <stdio.h> int main(void) { double i,j; FILE *file; file = fopen("sample.csv","r"); fscanf(file,"%ls,%ls",&i,&j); fclose(file); printf("i = %d : j = %d\n",i,j); return 0; } とすれば最初の1行目だけは読めますが、それ以降がわかりません。 配列を使えばいいのでしょうか?
- ベストアンサー
- C・C++・C#
- エクセルで任意のcsvファイルを指定して関連ずけたい
エクセルでフォームが出来ていて,特定したcsvファイル(ファイル名指定)の指定データ値をフォームに割り当て表示させています.フォームとcsvファイルは別になっています. csvデータファイルのデータの内容はフォームに合わせてあるので考えなくていいのですが,任意のcsvファイルをPCに保存してあり,そのファイルが複数あり選択指定できるようにしたいのですが,お教えいただけないでしょうか.よろしくお願いいたします.
- ベストアンサー
- オフィス系ソフト
- IrvineでDLしたファイルをファイル名を指定して保存する方法
宜しくお願いします。 irvineを使って画像を一括してDLしたいのですが、その画像のファイル名が全て『a.jpg』となっています。 ・データはcsvを使用しています ・画像の場所はcsvのセル(エクセル使用)にurlで記述されています ・その画像(商品なんですが)のIDが有るので、これを画像のファイル名にしたいのです 例えば、ID→「1234」の場合、ダウンロードするファイルは「a.jpg」ですが、保存するファイル名を「1234.jpg」という風にしたいのです。 どなたか、ご存知の方いらしたらどうか教えて下さい。 宜しくお願いいたします。
- 締切済み
- フリーウェア・フリーソフト
- batファイル 拡張子変更
こんにちは。 すいません。初心者です質問させていただきます。 ファイルの拡張子を変更するbatファイルを見ようみまねで作ってみたのですが、動きません。 -------batファイルの内容です------- set C:\rename=%basyo set syaryou_R???.0??=%Rmoto set syaryou_S???.0??=%Smoto set syaryou_R???.0??.csv=%Rato set syaryou_S???.0??.csv=%Sato cd %basyo ren %Rmoto %Rato ren %Smoto %Sato ---------------------------- こんな感じなのですが、何が悪いか分かりません。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- VC++のfopenのファイル名の指定方法について
下記のようなcsvファイルを間引くプログラムを改変したいと思っています。 環境はVS2008 C++ コンソールアプリケーションです。 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { FILE *fp,*fp1; int i, j, retu, ch, cnt=0; char data[100]; char a=0; fp=fopen("data.csv","r"); fp1=fopen("kekka.csv","w"); cnt=0; retu=0; while (1){ ch=fgetc(fp); if (ch=='\n') break; } while((ch=fgetc(fp))!=EOF){ data[retu]=ch; retu++; if (ch=='\n'){ cnt++; if (cnt>=10){ cnt=0; for(i=0;i<retu;i++){ printf("%c",data[i]); fputc(data[i], fp1); } } retu=0; } } return 0; } ただ毎回csvファイルの名前をdata.csvに書き換え、さらにkekka.csvを別名にして保存しなければいけないためとても手間です。 そこでその部分を実行時にscanfなどを用いて変更したいと思ったのですがうまくいきません。 fopenでファイル名を実行時(ビルド時)に変更するにはどうすればよいのでしょうか。 ご教授お願いします。
- ベストアンサー
- その他(ソフトウェア)
- CSVファイルについて
文字ピタを使用してある印刷を行っており、CSVファイルを参照しています。しかし、CSVデータの中のある欄(口座番号・・・頭にゼロが付く)を文字列にして保存しても、再度開くと数値(頭のゼロが取れてしまう)になってしまいます。何か良い方法は無いでしょうか?
- ベストアンサー
- オフィス系ソフト
- AccessでのCSVファイル取り込みの自動化をしたいのですが。
AccessでのCSVファイル取り込みの自動化をしたいのですが。 D:\DATA\というフォルダの下に「01」~「99」という99個のフォルダがあり、すべてのフォルダの中に「item.csv」「kaku.csv」,「kumi.csv」,「time.csv」,「total.csv」という存在します。 毎日01-99に順番にデータが格納されていきます。そのデータを毎日、Accessのテーブルに保存する作業を自動化(「01」~「99」のフォルダ指定)にしたいのですが出来ません。 どなたかご教授ください。ちなみにAccessのテーブルはCSVのファイル名と同じです。
- 締切済み
- オフィス系ソフト
- バッチでcsvファイルの指定のカラムを編集したい
バッチでファイルの編集をしたい バッチファイルを使用して、csvファイルの読み込み~編集を行いたいと思っております 元ファイル:TEST_DATA.csv 内容: 111,222,333,444,555 123,456,789,321,987 上記のcsvファイルを読み込み、 ・5カラム目が987ならば3カラム目を654に変更する という処理を実行させたいのですが、 どのように行えばよいのでしょうか? 現在考えていることは、 1.for文を使用して指定のカラムを抜く(3カラム目と5カラム目を抜く)) 2.5カラム目の値をif条件に指定し、合致した場合、抜いた3カラム目の変数に654を入れる 3.654に変更した変数を3カラム目の値として入れる という順番で行えばいいと思っているのですが、 下記まで行ったところで行き詰ってしまいました for /F "tokens=3,5 delims=," %%i IN (TEST_DATA.csv) DO @(if %%j==987 set %%i=654 echo %i %j ) お分かりになられる方、ご教授願えませんでしょうか
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとうございました! こちらの説明が足りなかったのにもかかわらず、素晴らしいお答えをいただきました。 実はDLするCSVファイルは3つあって、パターンは同じでした。 ので、教えていただいた事をヒントに自分で下記のように応用してみたところ、条件をクリアしながら順に開く事ができました。 DIRコマンドについては、わたしが持っている(初心者向きの)市販本にはありませんでした……そろそろ買い替え時ですね。 またよろしくお願いします。 Sub FileChoose1() Dim myFolder 'フォルダ Dim myFilename As String 'ファイル名 ' Dim rw As Long '行カウンタ myFolder = "D:\" 'DirでExcelBookを探す myFilename = Dir(myFolder & "R554211J1_PJPPM000*.csv") 'zaiko While myFilename <> "" ' rw = rw + 1 Workbooks.Open FileName:=myFolder & myFilename ' Worksheets("Sheet1").Cells(rw, 1) = myFolder & myFilename myFilename = Dir Wend End Sub