Openfilenameでファイルを選択するような機能をEXCELのVBAで作っています。
表示するファイルの種類までは、指定の仕方がわかるのですが、
特定のファイル名のものを表示したい時のVBAの記述方法を教えてください。
下記は、作っているプログラムの抜粋なのですが、
これだと、全部のcvsファイルが表示されます。
このCSVファイルで、ファイル名が、*XXX.csvのものをダイアログボックスに表示したいです。
Dim File_list As Variant
Dim Book As Workbook
Dim j As Integer
File_list = Application.getopenfilename(".csvfile(*csv),*.csv")
If File_list = False Then Exit Sub
Application.EnableEvents = False
Set Book = Workbooks.Open(File_list)
No.3ベストアンサー
- 回答日時:
使い物になるかどうかは別にして、一案。
'------------------------------------------
Sub test()
Dim File_list As Variant
Dim Book As Workbook
File_list = Application.Dialogs(xlDialogOpen).Show("*XXX.csv")
If File_list = False Then Exit Sub
Set Book = ActiveWorkbook
End Sub
'------------------------------------------
ブック名 : Book.Name
ブック名を除いたパス : Book.Path
フルパス : Book.Path & "\" & Book.Name
●フォルダーともに指定してもOKです。
Application.Dialogs(xlDialogOpen).Show("C:\FFF\*XXX.csv")
それから、試してみれば分かりますが今回の場合にこの組み込みダイアログを使うと、
ファイル名のテキストボックスには、「 *XXX.xls 」が表示されます。
また、表示されたファイルを選択しても、ファイル名ボックスは変化しません。
が、当然「開く」ボタンで、選択したファイルは開きます。
以上参考までに。
試してみましたら、ファイル名の指定ができました。
こちらを使うと、ファイルの種類は指定ができないようですが、
できることがわかって、助かりました。
これから、思考錯誤してみます。
ありがとうございました。
No.2
- 回答日時:
こんにちは、#1です。
>これは、どうやって使うものなのでしょうか?
サンプルを示します。
-------General-------Declarations--------------------
'ファイルを開くダイアログを表示するAPI
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" _
(pOpenfilename As OPENFILENAME) As Long
'APIに渡す構造体を定義
Public Type OPENFILENAME
lStructSize As Long 'この構造体の長さ
hwndOwner As Long '呼び出し元ウインドウハンドル
hInstance As Long
lpstrFilter As String 'フィルタ文字列
lpstrCustomFilter As String
nMaxCustrFilter As Long
nFilterIndex As Long
lpstrFile As String '選択されたファイル名(フルパス)
nMaxFile As Long 'lpstrFileのバッファサイズ
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String '初期フォルダ名
lpstrTitle As String 'コモンダイアログのタイトル名
flags As Long 'フラグ
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String 'ファイル名の入力時、拡張子が省略された時の拡張子
lCustrData As Long
lpfnHook As Long
lpTemplateName As String
End Type
-----------------------------------------------------
Sub PictureInsert()
'
' フォルダを指定する
Dim res As Long
Dim Fname As OPENFILENAME
With Fname 'GetOpenFileName関数に渡す構造体を設定
.lStructSize = Len(Fname)
.lpstrInitialDir = ThisWorkbook.Path '(最初に表示するディレクトリ)
'(フィルターでファイル種類を絞る)
.lpstrFilter = "Bmp(*.bmp)" & vbNullChar & "*.bmp" _
& vbNullChar & "Tiff(*.tif)" & vbNullChar & "*.tif" _
& vbNullChar & "Gif(*.gif)" & vbNullChar & "*.gif"
.nMaxFile = 256 '(ファイル名の最大長(パス含む))
.lpstrFile = String(256, vbNullChar) '(ファイル名を格納する文字列
' NULLで埋めておく)
End With
res = GetOpenFileName(Fname)
では。
No.1
- 回答日時:
こんにちは。
私は少しやり方が違うのですが、GetOpenFileNameというAPIを利用しています。その場合、ファイル名のフィルターに
"Tiff(*001.tif)" & vbNullChar & "*001.tif"
と記述することで複数のtifファイルから絞り込むことが可能でした。
では。
この回答への補足
さっそくの回答ありがとうございます。
ExcelVBAは初心者で、APIがよくわかりません。
これは、どうやって使うものなのでしょうか?
回答ありがとうございます。
APIは理解できました。
さっそくやってみましたが、私が絞り込みたいファイル名は、英数字で、0を含まない為か、vbNullCharでは、エラーが帰ってきました。
文字列に使えるコマンドはありますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どんなプログラムを書いても指...
-
マイクラでPythonのプログラミ...
-
フルパスから最後のディレクト...
-
windows.hがincludeされない
-
ファイルやディレクトリの存在...
-
fopenで別ディレクトリにファイ...
-
バックスラッシュって?
-
ドラッグ&ドロップについてです...
-
FTPでputすると空ファイルが出...
-
webアプリケーションでの画像フ...
-
C言語初心者の質問失礼します。
-
C言語での縦方向のファイル出力...
-
パラメータが正しくありません...
-
c言語 2つのファイルを行ご...
-
CSVファイルへの保存の際、デー...
-
xismoについてです!開こうとす...
-
1行ずつではなくまとめてファイ...
-
ファイル名の先頭にアンダース...
-
出力をExcelにすることは可能??
-
VBSで指定行に挿入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フルパスから最後のディレクト...
-
FTPでputすると空ファイルが出...
-
どんなプログラムを書いても指...
-
ExcelVBAでカレントディレクト...
-
マイクラでPythonのプログラミ...
-
windows.hがincludeされない
-
「UNCパスはサポートされません...
-
ファイルやディレクトリの存在...
-
ネットワーク上のコンピュータ...
-
C言語を用いたファイルの一括削...
-
fopenで別ディレクトリにファイ...
-
GetPrivateProfileStringでini...
-
ExcelVBA サーバーの(共有フォ...
-
絶対パスの絶対て英語で何でし...
-
FTPでリモートのファイル一覧取得
-
webアプリケーションでの画像フ...
-
ファイルダイアログのカレント...
-
VBAで自身のファイル名を取得す...
-
AfxLoadLibrary関数で、DLLのハ...
-
Ubuntu テキストファイルをどこ...
おすすめ情報