SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
東南アジアをバックパッカーしながら転職活動をした記録
東南アジアをバックパッカーしながら転職活動をした記録
7年目で初の転職活動 2カ月で内定獲得した記録
7年目で初の転職活動 2カ月で内定獲得した記録
おすすめのプログラミングスクール めざせ就職・年収アップ!
おすすめのプログラミングスクール めざせ就職・年収アップ!
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
ブログ開始3年が経った月収が1万超えてた!
ブログ開始3年が経った月収が1万超えてた!
プログラミング独学・スクール・就職(目次)
プログラミング独学・スクール・就職(目次)
previous arrowprevious arrow
next arrownext arrow
 
Shadow
VBA

Access VBA ダイアログからパス取得

VBAでファイルダイアログを開く処理について紹介します。

実際に作ったファイルはこちらからダウンロードできます。

ダイアログ用の参照設定

ファイル用もフォルダ用もダイアログを開くに参照設定を必要です。

手順はコードエディターから「ツール(T)」→「参照設定(R)」と移動します。

その後、Microsoft Office 16.0 Object Libraryにチェックを付けておいてください。

16.0はバージョンに寄ります。

ファイルパス取得のダイアログ コード

ファイルパス取得用のダイアログは以下のような書き方です。

処理の流れは以下の順です。

①ファイルダイアログを開く
②ファイルが選択されてらばパスをメッセージ表示
③選択されなければキャンセルのメッセージ表示

'=======================================
'目的    :選択したファイルのフルパスを取得
'=======================================
Private Sub GetFilePath_Click()

  '変数定義
  Dim intRet As Integer     'ダイアログ用変数
  Dim FilePath As String     'フルパス用変数

  With Application.FileDialog(msoFileDialogOpen)
    .Title = "取込みファイル設定ダイアログ"
    .Filters.Clear
    .Filters.Add "Microsoft Office Excelファイル", "*.xls,*.xlsx,*.xlsm"
    .FilterIndex = 1
    
    '複数ファイル選択を許可しない
    .AllowMultiSelect = False
    
    '初期パスを設定
    .InitialFileName = CurrentProject.Path
    
    'ダイアログを表示
    intRet = .Show

    'ファイルが選択された場合
    If intRet <> 0 Then
     'パスを設定
     FilePath = Trim(.SelectedItems.Item(1))

     'パスを表示
     MsgBox FilePath
     
    Else
     'ファイルが選択されていない場合
     MsgBox "キャンセルしました。"
     
    End If
    
  End With
    
End Sub

 

VBA C# オススメ参考書プログラミングの参考書でオススメの紹介をしていきます。 それぞれ私が使っている言語のみです。 VBAのオススメ参考書をExc...

解説

FileDialogのShowでダイアログを出します。

ダイアログで選択したファイルがある場合intRetには結果引数として「-1」が返ってきます。

ファイルを選択しなかった場合、「0」が結果引数として返ってきます。

ファイルを選択した場合、SelectedItems.Item(1)にファイルのパスが取得されます。

例えば、ダイアログから取得したファイルパスを使ってエクセルをAccessに取込むというような処理に使えそうですね。

Access エクセル取込み 複数シートAccessに複数シートをのエクセルを一括で取り込める機能が欲しかったのですが、ありませんでした。 作ってみたので残しておきます。...

補足

・フィルタ設定

エクセル関係のファイルだけしか表示されないようにしています。

用途によっては「*」でも良いでしょう。

・複数ファイル選択許可

1ファイルだけに設定していますが、複数も可能です。

その場合、FilePath = Trim(.SelectedItems.Item(1))の番号は選択したファイル番号を設定する必要があります。

フォルダのパス取得のダイアログ コード

フォルダパス取得用のダイアログは以下のような書き方です。

処理の流れは以下の順です。

①ダイアログを開く
②フォルダが選択されてればパスをメッセージ表示
③選択されなければキャンセルのメッセージ表示

'=======================================
'目的    :選択したフォルダのパスを取得
'=======================================
Private Sub GetFolderPath_Click()

  Dim FolderPath As String   'フォルダパス用変数
  
  'ファイルダイアログを開く
  With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show = True Then
      'パスを設定
      FolderPath = .SelectedItems(1)
      
      'パスを表示
      MsgBox FolderPath
    End If
    
    'フォルダが選択されていない場合
    If FolderPath = "" Then
    
      MsgBox "キャンセルしました。"
      
    End If
    
  End With
  
End Sub

 

解説

FileDialogのShowでダイアログを出します。(ファイルパス取得と同じ)

ダイアログで選択した場合、Trueが返ってきます。

Trueの場合、SelectedItems(1)に選択したフォルダのパスがセットされています。

なので、FolderPathの変数に選択したパスをセットしています。

ロジックとしてFolderPathに何も入っていない場合、フォルダ選択をやめる以外はありません。

そのため、FolderPathが空白ならキャンセルされましたと表示をしています。

例えば、ダイアログを表示して指定したフォルダにAccessからtsvやcsvを出力するときなどに使えそうですね。

RecordSetからcsv、tsvファイルを出力するAccessのテーブルからtsvファイルを出力しようとしたところ、意外と簡単に出す方法がありませんでした。 備忘録のために残してお...

補足

・複数フォルダ選択

複数フォルダ選択はできないようです。

おすすめのプログラミングスクール めざせ就職・年収アップ! プログラミングを独学でされている人は意外と多いです。 ただ、プログラミングの独学は簡単にはいきません。 自分だけの力...
プログラミング初心者の独学方法 文系卒の経験談 私はIT系の会社に勤めて4年目ですが、最初の1年は開発をさせてもらえませんでした。 文系卒でプログラミング経験はなかったの...
プログラミングの独学とはエラーとの闘い プログラミングを勉強し始めた初心者の方はつまづくことが多いと思います。 私も最初はエラーが出るたびにいちいちビビッて、意味...

・3種類の[ファイルを開く]ダイアログボックス
http://officetanaka.net/excel/vba/tips/tips154.htm
・[ファイルを開く]ダイアログボックスを表示する(GetOpenFilenameメソッド)
https://www.moug.net/tech/exvba/0060013.html

ABOUT ME
LooseCarrot
LooseCarrot
ブログ運営をしているLooseCarrotです。 興味のあることにトライして発信していきます! プロフィール

関連している記事