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

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

Access2000のCommonDialogでファイル名を取得したい・・・

Access2000でコモンダイアログBoxを使用してファイル名を取得 したいのですが、どうも上手く動きません! 取得方法を教えてください・・・ 通常だと↓でText形式の保存。ではFile名は? Dim strPath As String '指定ファイル名格納 'cdg = コモンダイアログ名 Me.cdg.Filter = "text|*.TXT"  Me.cdg.FileName = "C:\*.txt" 'コモンダイアログボックス表示 Me.cdg.ShowOpen strPath = "" & Me.cdg.FileName

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

  • ベストアンサー
  • 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

  • VBでファイル読み込み

    VBであるところにあるCSVファイルのデータを読み込みエクセルへ変換出力したいのですが教えてください。コモンダイアログボックス(?)と言うものを使って作成したいのです。よろしくお願いします。 がんばってやってみたのですがわかりません。教えてください。 Private Sub Command1_Click() Dim gnum(25), tensuu(32, 99) Dim sougouten(99), heikin(99), gouhi$(99) 'ファイルを開く On Error GoTo ErrHandler 'コモンダイアログボックス CommonDialog1.CancelError = True CommonDialog1.Filter = "すべてのファイル (*.*)|*.*|" _ & "テキスト ファイル (*.txt)|*.txt|バッチ ファイル (*.bat)|*.bat" CommonDialog1.FilterIndex = 2 CommonDialog1.ShowOpen With CommonDialog1 .FileName = "" .ShowOpen End With Exit Sub ErrHandler: ' ユーザーが [キャンセル] ボタンをクリックしました。 End Sub

  • ダイアログボックスからファイル名の取得をしたい(ACCESS97)

    コマンドボタンを押すと「ファイル名を選択」ダイアログボックスが開き、 そこで選んだファイル名がテキストボックスに表示される、という フォームをACCESS97で作成したいのですが、ダイアログボックスを表示させる ために何という関数を使えば良いのかが分かりません。 宜しくお願いいたします。

  • コモンダイアログのshowopenについて

    CommonDialog1.Filter = "テキスト(*.txt)|*.txt" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlOFNFileMustExist CommonDialog1.ShowOpen 上記のようなプログラムを書いて「ファイルを開く」 ダイアログを表示させてます。 しかし、開いたダイアログのファイル名を入力する欄が テキストではなく、コンボボックスになっています。 私はファイル名はテキストでただ入力しかできないよう にしたいのですが、どのように設定すればよいのでしょうか? それと、左側に「履歴」「デスクトップ」「マイコンピュータ-」「マイネッ トワーク」のアイコンが表示されているのですがこれも消したいのです。 過去ログを検索しましたが似たような質問がなかったので 質問させていただきました。 よろしくお願い致します。

  • 指定文字を含むファイル名の取得

    こんばんは、質問させてください。 今あるディレクトリのファイルを取得しようと考えています。ですが、取得したいファイルはファイル名末尾が"tmp"となったものだけを取得したいと考えています。 $dir = "/home/httpd/test/"; while($fnm[] = readdir($dir)); closedir($dir); sort($fnm); reset($fnm); while($a = each($fnm)){ if(($a[1] != ".") and ($a[1] != "..") and ($a[1] != "")){ $file_data[] = $a[1]; } } ってとこまでしかわからず、欲しくないファイル名まで$file_dataに入ってしまいます。 aaaaa_1111.txt(取得したくない) aaaaa_1111.txt.tmp(取得したい) aaaaa_1111.tmp.txt(取得したくない) 末尾が"tmp"のみ欲しいです。 すみませんが、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ファイルの保存ダイアログでデフォルト命名したい

    ファイルの保存ダイアログでデフォルト命名したい Win32API(C言語)編 第55章 ファイルを開く・保存のコモンダイアログ http://www.geocities.jp/ky_webid/win32c/055.html をみてファイルの保存ダイアログを出せるようになりました。 しかし、たまーにフリーソフトなどでもファイルを保存する際に、 デフォルトのファイル名が初期値として指定されているものもあります。 私のソフトでもそのようにしたいのですが、色々な部分に文字列を 入れてみて試してみても、思ったとおりの結果にはなりませんでした。 下記は上記サイトに記載されている ファイルを保存する際のダイアログの出し方から引用したものですが、 これをどのようにしたらダイアログが開いた際にファイル名部分に デフォルト命名された状態で開けるのでしょうか? static OPENFILENAME ofn; static TCHAR filename_full[MAX_PATH]; // ファイル名(フルパス)を受け取る領域 static TCHAR filename[MAX_PATH]; // ファイル名を受け取る領域 // 構造体に情報をセット ZeroMemory( &ofn, sizeof(ofn) ); // 最初にゼロクリアしておく ofn.lStructSize = sizeof(ofn); // 構造体のサイズ ofn.hwndOwner = hWnd; // コモンダイアログの親ウィンドウハンドル ofn.lpstrFilter = _T("text(*.txt)\0*.txt\0All files(*.*)\0*.*\0\0"); // ファイルの種類 ofn.lpstrFile = filename_full; // 選択されたファイル名(フルパス)を受け取る変数のアドレス ofn.lpstrFileTitle = filename; // 選択されたファイル名を受け取る変数のアドレス ofn.nMaxFile = sizeof(filename_full); // lpstrFileに指定した変数のサイズ ofn.nMaxFileTitle = sizeof(filename); // lpstrFileTitleに指定した変数のサイズ ofn.Flags = OFN_OVERWRITEPROMPT; // フラグ指定 ofn.lpstrTitle = _T("名前を付けて保存");// コモンダイアログのキャプション ofn.lpstrDefExt = _T("txt"); // デフォルトのファイルの種類 // 名前を付けて保存コモンダイアログを作成 if( !GetOpenFileName( &ofn ) ) { MessageBox( hWnd, _T("エラー"), _T("エラー"), MB_OK ); SendMessage( hWnd, WM_CLOSE, 0, 0 ); }

  • ファイル名を複数個配列で確保したいときどうすればいいですか?

    先ほど似た質問をしたのですが、勘違いしていたので質問しなおさせてください。 typedef struct file{ FILE *fp; char *filename; }sFILE; sFILE fp[5]; for(i=0;i<5;i++){ fp[i].fp=NULL; sprintf(fp[i].filename,"file(%d).txt",i); } とsprintfでファイル名を確保したいんですが、 sprintf(fp[i].filename,"file(%d).txt",i); の第一引数がこれではダメなようです。 なんとなく、ダメなのは分かるんですがアドレスについてなど分からないことが多くどうしたらいいのかわかりません。 アドバイス等お願いします。

  • あるフォルダのファイル名を取得したい(vbs)

    VBスクリプトを使って、TESTフォルダにあるJPGファイル中で、一番新しいファイルのファイル名を取得したいと思っています。 JPGは、ファイル名が日付.jpgになっています。例)061123.jpg vbsは苦手で途中挫折してしましました。。ぜひ教えて頂けないでしょうか。 --------------- Dim Fs,strPath,Fl Set Fs = CreateObject("Scripting.FileSystemObject") strPath = "C:\Test\" Set Fl = Fs.GetFile(strPath) MsgBox Fl Set Fs = Nothing Set Fl = Nothing

  • ファイル名の取得について

    よろしくお願いします、 環境はWindows 2000 SP4 Visual Studio VC8です openFileDialogクラスのFileNameメソッドで フルパスのファイル名を取得できますが、 ファイル名だけ取得したい場合はどのメソッドまたはクラスを使用したら出来るでしょうか?

  • FirefoxでFormのfileでファイルのパスが取得できない

    フォーム<form>内のファイル名入力フィールド<input type="file">をPOSTで取得すると、IE6では「パス名:ファイル名」が取得されるのですが、Firefox2.0では「ファイル名」しか取得できません。 FirefoxでもIEと同様に「パス名:ファイル名」を取得するにはどうしたらよいでしょうか? 例えば、デスクトップに「a.txt」ファイルがあれば IE6では「C:\\Documents and Settings\\Administrator\\デスクトップ\\a.txt」 Firefox2.0では「a.txt」 と表示されます。 FirefoxでもIEと同じようにするにはどうすれば良いでしょうか? よろしくお願いします。 以下はソースです。 ---------------------ソース-------------------------------- <html> <body> <form method="post" action="<?=$_SERVER["PHP_SELF"]?>"> <input type="file" name="file"> <input type="submit" name="Submit"> </form> <?php echo $_POST['file']; ?> </body> </html> ---------------------ソース--------------------------------

    • ベストアンサー
    • PHP
  • ファイルストリームからファイル名とパスの取得

    例えば、 ofstream file( "ttt.txt" ) としてファイルストリームを作った後で、このインスタンスを使ってfileが指しているファイルのファイル名やファイルのパスを取得することはできるのでしょうか。C及びC++の勉強をしていまして、できればOSやコンパイラに依存しない方法があれば知りたいと思っております。また、WindowsXP、VC++6.0(MFCは使っていません)を使っていますので、これらに依存した方法があるようでしたら教えていただけないでしょうか。お願いします。