エクセルのVBAの質問です。通常のファイルを開く画面を開いてエクセルファイルを開くことは可能なのでしょうか? ボタンを押すと特定のフォルダの特定の名前(like で指定可能)をもったファイル一覧がでてきて、それから選択して開くようにしたいのですが、そのときに、ファイル名をVBAで取得し、保存できるようにもしたいです。可能なのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/08/24 16:49:06
  • 終了:2009/08/24 23:12:33

回答(3件)

id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/08/24 17:54:11

ポイント35pt

ChDir, ChDrive メソッドと関数 GetOpenFileName を使った例を示します。

ファイル名の指定は like ではなく、ワイルドカードになります。下記の例では拡張子 csv のものに絞り込みます。

Dim infile As Variant
ChDir "C:\hogehoge\"    'フォルダを指定
ChDrive "C:"            'ドライブを指定
infile = Application.GetOpenFilename("CSVファイル (*.csv), *.csv", , , , True)   'ファイルダイアログを表示
id:SALINGER No.3

SALINGER回答回数3454ベストアンサー獲得回数9692009/08/24 19:04:21

ポイント20pt

具体的にサンプルを作ってみました。

ボタンを押されたということで、コマンドボタンとしています。

適当な関数名にしてマクロの実行から実行してもいいです。

Excelのファイルのあるフォルダだけは実際の環境に変更してください。


実行すると、インプットボックスで検索文字列を聞いてきます。

*などのワイルドカードを使って入力すると、該当するファイルが一覧に出ます。


Private Sub CommandButton1_Click()
    'Excelのファイルがあるフォルダを指定してください。
    Const rootFolder As String = "C:\Documents and Settings\hogehoge\デスクトップ\test"
    Dim FilePath As String
    
    FilePath = InputBox("検索するファイル名を入力してください")
    
    If FilePath = "" Then Exit Sub
    
    FilePath = rootFolder & "\" & FilePath
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = FilePath
    
        .AllowMultiSelect = False
        .Filters.Add "Excelファイル", "*.xls;*.xlsx"
    
        If .Show = -1 Then
            Workbooks.Open Filename:=.SelectedItems(1)
        End If
    End With
End Sub

http://q.hatena.ne.jp/

id:kaiketsu

サンプル作成、ありがとうございます。ただ、GetOpenFileName が今回の場合は簡単そうです。

2009/08/24 23:12:08
  • id:HALSPECIAL
    HALSPECIAL 2009/08/24 17:35:22
    こっちがよさげです。
    ファイルに名前を付けて保存もあります
    http://www.excel-vba.net/excel-application-007.html
  • id:SALINGER
    簡単かどうかはともかくとして、勉強の為にGetOpenFileNameで特定の名前をもったファイル一覧を表示する方法をご教授願えませんでしょうか。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません