• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access2000のCommonDialogでファイル名を取得したい・・・)

Access2000のCommonDialogでファイル名を取得する方法

このQ&Aのポイント
  • Access2000でコモンダイアログBoxを使用してファイル名を取得する方法について教えてください。
  • 上手く動作しないため、どのように取得すれば良いかわかりません。
  • 通常の保存ではText形式で保存されますが、ファイル名はどのように指定すれば良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

サンプルです。 エクセル2000にて動作確認しました。 求めているものと違ったらレスをください。 Private Const CSIDL_DESKTOP   As Long = &H0    'デスクトップ フォルダ Private Const CSIDL_PROGRAMS  As Long = &H2    'WINDOWS\プログラム フォルダ Private Const CSIDL_CONTROLS  As Long = &H3    'コントロールパネル フォルダ Private Const CSIDL_PRINTERS  As Long = &H4    'プリンタ フォルダ Private Const CSIDL_PERSONAL  As Long = &H5    '共有フォルダ Private Const CSIDL_FAVORITES  As Long = &H6    'お気に入り フォルダ Private Const CSIDL_STARTUP   As Long = &H7    'スタートアップ フォルダ Private Const CSIDL_RECENT   As Long = &H8    '最近使ったファイル フォルダ Private Const CSIDL_SENDTO   As Long = &H9    '送る フォルダ Private Const CSIDL_BITBUCKET  As Long = &HA    'ごみ箱 フォルダ Private Const CSIDL_STARTMENU  As Long = &HB    'スタートメニュ- フォルダ Private Const CSIDL_DESKTOPDIRECTORY As Long = &H10 'WINDOWS\デスクトップ フォルダ Private Const CSIDL_DRIVES   As Long = &H11   'マイコンピュータ フォルダ Private Const CSIDL_NETWORK   As Long = &H12   'ネットワーク フォルダ Private Const CSIDL_NETHOOD   As Long = &H13   'NETHOOD フォルダ Private Const CSIDL_FONTS    As Long = &H14   'フォント フォルダ Private Const CSIDL_SHELLNEW  As Long = &H15   '新規作成 フォルダ Private Const BIF_RETURNONLYFSDIRS = &H1 Private Type BROWSEINFO   hWndOwner    As Long   pidlRoot    As Long   pszDisplayName As String   lpszTitle    As String   ulFlags     As Long   lpfn      As Long   lParam     As Long   iImage     As Long End Type Private Declare Function SHBrowseForFolder Lib "SHELL32" (lpbi As BROWSEINFO) As Long Private Declare Function SHGetPathFromIDList Lib "SHELL32" (ByVal pIDL As Long, ByVal pszPath As String) As Long Private Sub Main()   Dim strRtnValue As String   strRtnValue = ChoiceFolder("テスト")   If strRtnValue = "" Then     MsgBox "未選択"   Else     MsgBox strRtnValue   End If End Sub 'フォルダの参照ダイアログ '【パラメータ】ダイアログ解説文 Public Function ChoiceFolder(Optional inGuide As String = "フォルダを指定して下さい。") As String   Const MAX_PATH = 1000   Dim lngRetValue   As Long   Dim strPathBuffer  As String * MAX_PATH   Dim udtBrowseInfo  As BROWSEINFO   Dim ReturnPath   As String         strPathBuffer = String(MAX_PATH, vbNullChar)      With udtBrowseInfo     .pidlRoot = CSIDL_PROGRAMS      'ルート フォルダ(CSIDL_xxx)     .lpszTitle = inGuide & vbNullChar  'ダイアログの解説文     .ulFlags = BIF_RETURNONLYFSDIRS   End With      lngRetValue = SHBrowseForFolder(udtBrowseInfo)      If lngRetValue <> 0& Then     ' パス名だけが返る     lngRetValue = SHGetPathFromIDList(lngRetValue, strPathBuffer)     If lngRetValue = 0 Then       ' 無効なパス       ReturnPath = ""     Else       ReturnPath = Left(strPathBuffer, InStr(strPathBuffer, vbNullChar) - 1)       If Not (Right(ReturnPath, 1) = "\") Then ReturnPath = ReturnPath & "\"     End If   Else     'キャンセルされた     ReturnPath = ""   End If   ChoiceFolder = ReturnPath End Function

pooh_200x
質問者

お礼

解決しました!! ありがとうございます。

その他の回答 (2)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

なるほど、そういうことですか。 現在アクセスにコモンダイアログコントロールを使用してるという状況ですよね? それではファイルの指定はできても、フォルダを指定させるダイアログを表示させることはできません。 フォルダ参照ダイアログにはAPIが必要です。 現在VB環境が無いのですが、MS-Officeはあるのでなんとかサンプルを載せることができそうです。 今はちと忙しいので、あとでサンプルを載せておきます。

pooh_200x
質問者

お礼

ワザワザすみません! お待ちしております。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

>通常だと↓でText形式の保存 保存は ShowOpenではなく ShowSaveですよね? strPath = "" & Me.cdg.FileName MsgBox strPath で確認したところ、strPathにはきちんとパスの文字列が帰ってきましたよ。。。 >どうも上手く動きません とは、ダイアログが表示されないのですか? それともパスが取れないのですか? なにがうまく動かないのか、もう一度説明してください。

pooh_200x
質問者

補足

返答が送れてゴメンナサイ! 実はこの質問自体が間違ってます。 >>ダイアログボックスで特定のフォルダPathを取得したい。 と思っておりました。 回答がまったく無かった為、削除・修正も出来なく困っておりました。 そろそろ削除できるかと思い閲覧しました。 回答ありがとうございます。 もしよろしければご教授おねがい致します。

関連するQ&A