• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:難題:検索マクロの作成について)

難題:検索マクロの作成について

このQ&Aのポイント
  • VBA初心者がテキストボックスにキーワードを入力し、一致するファイルを開く検索マクロの作成方法について困っています。
  • 特定のフォルダ内にあるキーワードと日付付きの複数のファイルの中から、キーワードに一致するファイルを開くVBAの作成方法について教えてください。
  • VBAを始めたばかりで、テキストボックスに入力されたキーワードと一致するファイルを特定のフォルダから探して開く方法についての質問です。

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

  • ベストアンサー
回答No.2

とりあえず、変数 srcFileName にこんな感じのパスが入っているとして、 Dim srcFileName As String srcFileName = "D:\hoge\課題_20090411.xls" ・ ファイル名から親パスまでの文字列や拡張子を取り除く方法 FileSystemObject を使います。 Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim baseName As String baseName = fso.GetBaseName(srcFileName) これで baseName には "課題_20090411" が入ります。 ・ 日付部分が何文字目から開始されているか調べる方法 "_" の後ろから日付が始まると仮定しました。 Dim startPos As Long startPos = InStr(baseName, "_") + 1 これで startPos には 4 が入ります。 ・ 日付部分を抜き出す方法(とりあえず文字列として取り出す) 数字の部分を取り出します。 Dim datePart As String datePart = Mid(baseName, startPos) これで datePart には "20090411" が入ります。 ・ 日付文字列を日付に変換する方法 上記の日付文字列を日付型に変換し、比較しやすくします。 yyyymmdd (8文字) と yymmdd (6文字) の両方に対応。 Dim fileDate As Date If Len(datePart) = 8 Then (datePart, 1, 4) & "/" & Mid(datePart, 5, 2) & "/" & Mid(datePart, 7, 2) ElseIf Len(datePart) = 6 Then fileDate = Mid(datePart, 1, 2) & "/" & Mid(datePart, 3, 2) & "/" & Mid(datePart, 5, 2) End If ファイル名から日付部分を日付型のデーターとして取り出す方法を順を追って書きました。 あとはその他のロジックと組み合わせて適当に簡略化してください。 検索にヒットした複数のファイルについて、この方法で日付部分を比較して、ご自分のルールに従った絞込みをすればよいと思います。 ・ ファイルを開く方法 対象ファイルの拡張子にあわせ、Windows がプログラムを判断して開く方法を採用。 変数 srcFileName にファイルのフルパスが入っているとして、 最初にファイルのパスを 「短い形式」 に変換する。(いわゆる 8.3 形式) これも FileSystemObject を使用する。 Dim shortPathName As String shortPathName = fso.GetFile(srcFileName).ShortPath 次に Shell の Run メソッドでファイルを開く。 Dim wShellObje As Object Set wShellObje = CreateObject("WScript.Shell") wShellObj.Run shortPathname, vbNormalFocus, False 健闘を祈ります。

komate
質問者

お礼

お礼が遅くなりまして申し訳ございません。 詳しいやり方ありがとうございます。 おかげさまで目的VBAが作成できました。 まことにありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

検索ルールをはっきりと整理しましょう。 入力したキーワードから始まるファイル名ですか? 入力したキーワードを含むファイル名ですか? 入力したキーワードで終わるファイル名ですか? → これは無いと思いますが。 "課題" を含むファイル名は "課題_20090423.xls" と "課題_090511.xls" がありますが、なぜ両方ではなく "課題_090511.xls" なのですか? 複数ヒットした場合の特殊なルールがあるのですか? Word のファイルも提示されていますが、これも開くのですか?(当然 Word ファイルなら Word で)

komate
質問者

補足

補足足らずで申し訳ございません。 テキストBOXに入力したキーワードを含み、尚且つ日付けが新しいファイル名を開けるVBAになります。 その際、日付け部分が"xxx_20090901"や"xxx_090501"とまちまちなので検索時にそのバラバラな日付けを比較して日付けが新しいファイルを開きたいのです。 ※現状はテキストBOXを作成しキーワードを含むVBAまでは作成いたしました。しかし、"xxx_20090901"や"xxx_090501"といったバラバラな日付けを比較して新しいファイルを開くというVBAが作成できなくて困っています。 フォルダ内にはwordも存在し、wordファイルも同条件となります。 どうかご教授お願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロで文字検索と書き出し

    Excelのマクロで各フォルダ内にあるテキストファイルに特定文字が含まれていたら そのテキストファイルがあるフォルダ名をセルB1に書きだすというマクロを組みたいです。 Aというフォルダ内に 20150328 20150410 20160322 ・・・・ ・・・・ ・・・・ 20160412 というようなフォルダ名のついたフォルダが300個近くあります。 300個近いフォルダ内にはテキストファイルがあり(ないものある) そのテキストファイル内にセルA1で入力されている文字と同じ物があれば(完全一致ではなく一部一致でよい) 一番最初に見つけたそのテキストファイルが入っているフォルダ名をB1に 書きだす方法が知りたいです。 例えば上記の例で言うと 検索した文字 【計測】だとします。 20150328 20150410 20160322 このフォルダ内のテキストファイルには全て 計測 とい文字が含まれていますが 名前の順番からすると20150328のフォルダが最初なので そのフォルダ名をB1に書きだすという感じです。 また、これは出来ればでいいのですが 300個近いフォルダを全て調べていくと時間が掛ってしまうので セルA2に日付を入力しておき 上記のマクロを実行すると、セルA2に入力した日付以降に作成されたフォルダから 検索を始めるようにしたいです。 このような事が出来るかわかりませんが、宜しくお願いします。

  • アクセス2000でフォルダの作成

    アクセス2000を使っています。 アクセス2000で、フォーム上にテキストボックスを配置し、コマンドボタンを押すと、予め決められたフォルダの中にあるテキストボックスと同じ名前のフォルダを開き、同じ名前のフォルダがなければ、テキストボックスと同じ名前のフォルダを作成してから開くようにしたいのですが、VBAでできますか?  誰か教えて下さい。

  • エクセル マクロで特定ファイル名だけを開く

    エクセルのマクロで 特定のファイル名だけをフォルダの中から探して 開くというものを作りたいのですが うまくできません。 フォルダを指定して 「060927.xls」というエクセルファイルだけを 開きたいのですが この日付のところが毎日変わるので 「06XXXX.xls」というような 最初が06であと4つの文字が入ってるファイル名だけを 流動的に指定できるようにするには どのようなVBAマクロにすればよいのでしょうか? とても困っています。 是非教えてください!宜しくお願いします。

  • Excelマクロ/ファイル名を指定してインポート

    テキストファイルからExcelへインポートする作業を自動化させたいのですが。 毎回インポート元のファイル名(格納しているフォルダは同じです)が異なるので、マクロ記録ではうまく作成できません。VBAでないと無理でしょうか? できればファイル名をその都度入力するようなダイアログボックスが表示されれば理想的です。VBA初心者なので教えてください。

  • VBAのマクロについての質問です

    VBAのマクロについての質問です セルA1:タイトル1 セルA2:タイトル2 セルA3:タイトル3 上記のように各セルに文字を入力しボタンを押下します。 そうすると、事前に用意してある別のExcelファイルを(雛形.xlsとします) タイトル1.xls タイトル2.xls タイトル3.xls のような名前で入力した分だけExcelファイルを複数作成できるようにしたいのですが、 方法がよくわかりません。

  • ファイル名を変更するマクロ

    あるフォルダ内にエクセルファイルが複数あります。 そのエクセルファイルの名前の一部を一括で変更する エクセルマクロを教えて下さい。 下記のように「課題」の部分を「完了」に変更したい。 例: 変更前 1201課題.xls 1202課題.xls 1203課題.xls 1204課題.xls 変更後 1201完了.xls 1202完了.xls 1203完了.xls 1204完了.xls 説明不足かもしれませんが、宜しく御願い致します。

  • エクセルマクロ 次のようなプログラム教えてください

    エクセルのマクロで、次のようなことをしたいと思っていますが、 素人でわかりません。 教えていただけますか。 ---------------------------------- o動かしているファイルをa.xlsとします。  a.xlsは、3行目からA列に名前、B列~D列にデータが入っていて、  各行ごとのファイルを作りたい。(行数は決まっていない)  なお、セルE1にある文字が入っている。 o各ファイルは、原紙としてgensi.xlsとして保存されているファイルに、  a.xlsのB~D列のものを入力したものを作りたい。  (B~D列のデータは、gensi.xlsのそれぞれセルC7・C8・C9に入力する)   gensi.xlsは、a.xlsと同じフォルダにあります。 o作成場所は、「C:\date」の中に、セルE1にある文字のフォルダ、A列に  ある名前のフォルダに作りたい。 (セルE1の文字のフォルダは、マクロを初めて実施するときは無いと思います  が、2回目からは存在すると思います。A列の名前のフォルダはマクロ実施時  にはありません。作成するファイル名は、A列の名前と同じ(フォルダ名と同じ).xls にします。) o実行ボタンを3つ作って、1つは今選択されている行のフォルダ・ファイルを作る。  2つ目は数字を入力させて、今選択されている行から入力した数字の行までを一括  で作成する。  3つ目は、3行目から現在入力されている行すべてを一括で作成する。 ------------------------------- 上記のことをしたいと思っています。 よろしくお願いします。 駄文ですみません。 なお、エクセルは古いバージョンでエクセル2000です。

  • エクセル VBA ファイルをフォルダへ移動させる

    エクセル VBA 手探り状態です。 001大企業.xls、001中小企業.xls、003大企業.xls、003中小企業.xls、008大企業.xls、008中小企業.xls・・・・というファイルが300ほど企業種類という名前のフォルダにあります。 VBAで企業種類という名前のフォルダの中に、001、003、008・・・というフォルダは作成しました。 (ネットで”フォルダ作成”を検索して、、、自力ではVBAは書けません) それを001という名前のフォルダへは、001大企業.xls、001中小企業.xlsのファイル、003という名前のフォルダへは003大企業.xls、003中小企業.xlsのファイルを、008フォルダへは008大企業.xls、008中小業.xlsファイルを・・・というように、マクロで移動させたいのです。 これらのファイル、フォルダは全て、企業種類というフォルダの中にあります。 VBAを教えていただけましたら嬉しいです。

  • Excel VBAで、エクセルファイル作成について

    エクセルのVBAでプログラムを作成しているのですが、 ある数字を入力してプログラムを実行すると、その数字の名前のフォルダが作成され、更にその作成されたフォルダの中に、その数字の名前のエクセルファイルを作成できるようにしたいと思っています。 それでフォルダの作成はできるのですが、ファイルの作成が上手くいきません。 どうすれば良いか教えて頂けないでしょうか?よろしくお願いします。

  • VBAで今日の日付のフォルダを作る。

    VBA初心者です。 仕事で急遽EXCEL2000のVBAを使わなくてはならなくなり、本を買って急いで勉強しましたがうまくいきません。 もう日数もなく困っています、どなたかお教え下さい。 VBAでやりたいこと 1.まずTEST.xls上でボタンをつくり、それをクリックすると、TEST.xlsと同じディレクトリに20061119という(ボタンをクリックした日付)フォルダが作成される。 2.そのフォルダの中に、test1.sqlと、test2.sqlいうテキストファイルが作成される。 3.sqlテキストファイルの中身には、どちらも 123(abc/def) 456(ghi/jkl) という内容が書き込まれる。 今のところ散々頑張って、日付名ではないフォルダの中にカラのsqlテキストデータを作るまでしか出来ず困っています(-_-;) どうかよろしくお願いします。