
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も見ています
-
Application.Dialogs(xlDialogSaveAs)でキャンセルの取得
Access(アクセス)
-
ExcelVBA/ダイアログボックスで選んだファイルのファイル名を取得したい
Excel(エクセル)
-
Excelの入力規則で2列表示したい
Excel(エクセル)
-
-
4
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
5
エクセルVBAで今まで使えていたものが使えなくなった原因を教えてください。
Excel(エクセル)
-
6
参照するファイルをワイルドカードで指定したい
Visual Basic(VBA)
-
7
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どんなプログラムを書いても指...
-
FTTPで質問です
-
iphone5アルバム写真を番号順に...
-
PHPとjavascriptについて
-
「UNCパスはサポートされません...
-
コマンドプロンプトでの拡張子変更
-
リンクしていないWebページのセ...
-
VBAでファイル選択窓の初期パス...
-
セルに入力されたパスでフォル...
-
簡単にファイルやディレクトリ...
-
Visual Studio 2008コマンドプ...
-
古いファイルだけを消したい
-
フルパスから最後のディレクト...
-
pythonでの日本語操作
-
コマンドプロントでのCDUMPにつ...
-
ファイルやディレクトリの存在...
-
新規作成ファイルパスが有効か...
-
ディレクトリ・ドリームウェーバー
-
c++ ファイル操作について
-
GIFファイルを一括してWORDに挿...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どんなプログラムを書いても指...
-
フルパスから最後のディレクト...
-
「UNCパスはサポートされません...
-
FTPでputすると空ファイルが出...
-
絶対パスの絶対て英語で何でし...
-
fopenで別ディレクトリにファイ...
-
ExcelVBAでカレントディレクト...
-
ファイルやディレクトリの存在...
-
windows.hがincludeされない
-
セルに入力されたパスでフォル...
-
ネットワーク上のコンピュータ...
-
Ubuntu テキストファイルをどこ...
-
C言語を用いたファイルの一括削...
-
webアプリケーションでの画像フ...
-
新規作成ファイルパスが有効か...
-
ファイルダイアログのカレント...
-
ExcelVBA サーバーの(共有フォ...
-
GetPrivateProfileStringでini...
-
エクセルVBAで相対パスでファイ...
-
マイクラでPythonのプログラミ...
おすすめ情報