[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Application.GetOpenFilenameについて』(リー)
VBA中で Application.GetOpenFilename を使ってファイルのオープンを行っていますが、このダイアログに、特定の文字列を含むファイルのみ表示させることはできないものでしょうか?
例えばファイルの一部に「ABC」が含まれる xlsx だけとかです。
ご教示ください。よろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
参考
https://learn.microsoft.com/ja-jp/office/vba/api/excel.application.getopenfilename
(tkit) 2023/10/26(木) 11:37:23
念のための確認です。ファイル名のなかにですか。ファイルの中身にですか? (確認質問) 2023/10/26(木) 11:55:03
(リー) 2023/10/26(木) 12:09:31
了解です。正確に書かずに、後になって食い違う事が結構あるんですよ。 そのメソッドそのものでは無理だと思います。 FSOでファイルを全列挙して、候補に合うものをシートに書き出すのが手取り早いでしょう。 (確認質問) 2023/10/26(木) 12:55:53
では、Application.FileDialog で。 FileDialog.Filters.InitialFileNameプロパティで、 ワイルドカードで"*ABC*.xlsx" とでもしてください。
(tkit) 2023/10/26(木) 13:07:32
いや失礼しました。 拡張子はFileFilterで絞って、 「ファイル名」のところにワイルドカードを使ったファイル名を手動で入力すれば、ファイル名で絞れました。 (拡張子指定も含めて「ファイル名」のことろに手動で入れてもいいかも)
(確認質問) 2023/10/26(木) 13:52:47
(リー) 2023/10/26(木) 13:59:32
こんな方法も
Sub a() SendKeys "*abc*.xlsx~" Application.GetOpenFilename End Sub
(ねむねむ) 2023/10/26(木) 14:05:03
忘れてた。 SendKeys使うとNumLockはずれる副作用があった。
使わないほうがいいか。 (ねむねむ) 2023/10/26(木) 14:09:03
Application.Dialogsを用いて、希望の動作を実現することが
思いつかないので、後学のために、コードをのせてください。
(tkit) 2023/10/26(木) 14:21:39
tkitさん
私は下のようなコードにしました。
f_list = Application.Dialogs(xlDialogOpen).Show("*ABC*.xls?")
ちなみに、tkitさんの実際のコードものせてください。
(リー) 2023/10/26(木) 14:36:32
直接開くより、パス取得することがほとんどなので、 こちらを多用しています。 FileDialogの引数で可能です。
https://excel-ubara.com/excelvba1/EXCELVBA376.html
Sub Sample() With Application.FileDialog(msoFileDialogOpen) .Filters.Clear .Filters.Add "Excelブック", "*.xlsx" .InitialFileName = "*\*ABC*.xlsx" If .Show = True Then .Execute End With End Sub
(tkit) 2023/10/26(木) 15:00:14
主要な方法ではありませんが、SendKeysについてのTipsです。
Application.SneKeysを使うと,Numlockが外れたり、他のキーへの影響があるようでバギーです。 [[20221013171915]]でも議論されていますが、 WshShellのSendkeysを使えば確実に回避できます。 https://qiita.com/nukie_53/items/f069a1e48cddca0024c2 を参考にしてください。 (xyz) 2023/10/26(木) 15:53:59
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.