• ベストアンサー

EXCEL2000のVBAで、ディレクトリを指定するダイアログボックスを出したい

VBA歴日も間もない者です。仕事上でVBAをいろいろいじくっています。 Excel2000VBAで、ディレクトリの指定をできるダイアログ画面はないのでしょうか? ユーザーにディレクトリを入力してもらいたいのですが、方法としては、1)直接手で打ってもらうか、2)ダイアログで指定できるようにするかにしたいのですが、あいにく Application.Dialogs(xlDialogOpen).Show Application.GetOpenFilename で「ファイルを開く」でディレクトリを割り出す方法しか分かりませんでした。 できれば、ディレクトリ指定のダイアログ画面をだしたいのですけど、他に方法があれば教えてください。よろしくお願いします。

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

  • ベストアンサー
回答No.3

SHBrowseForFolder というAPIを使うとディレクトリを指定させるダイアログが出てきます。 過去に同じ質問/回答があるので、SHBrowseForFolderで検索してみて下さい。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

おかしいですね。Excel2000やExcel97でこのまま使っているんですが。 細かなことを忘れてしまったのは事実ですが。。。 下のページとかを参考にしました。

参考URL:
http://www.galliver.co.jp/writing/susume_vb/tre904/
jew_ish
質問者

お礼

nishi6さん、回答ありがとうございます。 参考URLでのページを上から下まで読みましたが、結局進展無しでした。VBでの説明をしているので、オブジェクトも多少?違うみたいですね。(余談ですが「進め! VBお宝発掘団」懐かしい) 他のHPでも、nishi6さん同様にコードを書いていましたが、私みたいにエラーが出る方は拝見できませんでした。う~ん。明日も何も進展しないならば、再インストールしてみようと思います。勉強になりました。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

こんな感じでしょうか。ご参考に。 Sub Test()   Dim ff As Object   Set ff = CreateObject("Shell.Application"). _          BrowseForFolder(0, "フォルダを選択してください", 0, "")   If Not ff Is Nothing Then     MsgBox ff.Items.Item.Path     '選択したフォルダ名を表示   End If End Sub

jew_ish
質問者

お礼

回答ありがとうございます。 試してみたのですけど、Set ステートメントで実行時エラーが返されてしまいました。コメントは「ActiveXコンポーネントはオブジェクトを作成できません。」とかかれています。新しくオブジェクトを生成すると言うヒントは頂けたと思います。

関連するQ&A

  • VBAの組み込みダイアログの引数Argについて

    エクセルVBAでの質問です。 エクセルとして名前をつけて保存なら Sub aaa() Application.Dialogs(xlDialogSaveAs).Show ARG1:="ABC.xls", ARG2:=1 End Sub テキストファイルとして名前をつけて保存なら Sub bbb() Application.Dialogs(xlDialogSaveAs).Show ARG1:="ABC.txt", ARG2:=3 End Sub CSVファイルとして名前をつけて保存なら Sub ccc() Application.Dialogs(xlDialogSaveAs).Show ARG1:="ABC.csv", ARG2:=6 End Sub でうまくいきます。 今度は、ファイルを開こうとxlDialogOpenに変えました。 Sub aaa2() Application.Dialogs(xlDialogOpen).Show ARG1:="ABC.xls" ', ARG2:=1 End Sub Sub bbb2() Application.Dialogs(xlDialogOpen).Show ARG1:="ABC.txt", ARG2:=3 End Sub 以上二つはファイル名入りのダイアログは出ました。でもダイアログの画面にはフォルダーしか表示されません。 Sub ccc2() Application.Dialogs(xlDialogOpen).Show ARG1:="ABC.csv", ARG2:=6 End Sub これは実行時エラーになりました。 どうも、Application.Dialogs(xlDialogSaveAs)とApplication.Dialogs(xlDialogOpen)では引数ARG2が違うようです。 Application.Dialogs(xlDialogOpen)でのARG2は何の指定なのでしょうか?またその数値の意味はなんでしょうか?

  • 「プリンタの設定」ダイアログボックスのプリンタを指定したい。

    Excel VBAにて以下のコードを書き,接続されているプリンタ一覧の表示と設定は出来るのですが、のダイアログに表示されるプリンタを指定した物だけにしたいのです。 Application.Dialogs(xlDialogPrinterSetup).Show ダイアログの組み込み定数「xlDialogPrinterSetup」は引数でプリンタ名を持てる筈なのですが、どう書いてもエラーになってしまいます。 Application.Dialogs(xlDialogPrinterSetup).Show arg1:="プリンタ名" Application.Dialogs(xlDialogPrinterSetup).Show ("プリンタ名") Application.Dialogs(xlDialogPrinterSetup).Show(arg1:="プリンタ名") やりたい事は接続されているマシンの一覧の中から一つのプリンタを選択肢、それだけの設定ダイアログを出したいのです。

  • VBAで書き込みパスワードを解除して開く

    VBAでの作成経験が浅くわからないので、教えてください。 Excel2010のVBAを作成しております。 VBAで”ファイルを開く”ダイアログを表示し、ユーザが指定したファイルのパスワードの保護をマクロの中で解除してファイルを開きたいと思い作成しました。 myMB = Application.Dialogs(xlDialogOpen).Show(arg6:=myPassword) If myMB = False Then Exit Sub End If   ※myPasswordはユーザが開くファイルに使用するパスワード この方法ですと、パスワードを入れるダイアログが表示されてしまいます。 どうしたら、パスワードをユーザが入力することなく、マクロを実行することが できるのでしょうか?

  • エクセルVBAでファイルの選択(ZIP解凍後)

    エクセルVBAで Application.Dialogs(xlDialogOpen).Show や FileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls*")  を使い、ZIPファイル解凍後のエクセルのBOOKを選択させ、開こうとしています。 しかし、解凍後のエクセルファイルは見えるのですが、それを開こうとすると実行時エラー1004になってしまいます。もちろん手動では開くことができます。どのように対応すればよいのでしょうか?

  • エクセルでCSVファイルをユーザーに選択させたい

    エクセルVBAで、特定のフォルダ(C:\Data)に入っているCSVファイルをユーザーに選択させたいのです。 ただ、その際、選択肢に表示させるファイルに、例えば”企画“という文字列があることを条件にしたいのです。 組み込みダイアログであれば OpenFileName = Application.Dialogs(xlDialogOpen).Show("C:\Data\*企画*.csv") で大丈夫だと思います。 しかし、組み込みダイアログでは実際にそのファイルがエクセルで開かれてしまい、先頭の数字の0が消える等の不都合が起きてしまいます。 そのため、ファイルは指定させますが実際には開かずファイル名だけを取得する Application.GetOpenFilenameを使おうと思いました。 これでファイル名さえ所得できればあとは外部データの取り込みでCSVデータを取得できます。 ところが、 OpenFileName = Application.GetOpenFilename("C:\Data\*企画*.csv") はエラーになってしまいます。ネットで検索すると、Application.GetOpenFilenameではファイル名にワイルドカードは使えないようです。 このような場合、どのような方法をとればよいでしょうか?

  • 目盛線のダイアログ表示

    エクセルVBAでグラフを自動で描くマクロを作成しています。 グラフの目盛線の書式をユーザーフォームから設定できるように ダイアログを表示したいのですがどのようにしたらよいでしょうか? Application.Dialogs(**).Showの方法で可能ですか? グラフの色の選択はChooseColor()を使おうと思っていますが、 目盛線の書式について同様の方法がありますでしょうか?

  • エクセルVBAの「組み込みダイアログボックス」の使用法?

    いつもありがとうございます。 組み込みダイアログボックスについて教えてください。 エクセルのシート内容をCSV形式で保存する場合、組み込みダイアログボックスを使い、下記のマクロでうまく行きました。 Sub CSV保存() '~略~ Application.Dialogs(xlDialogSaveAs).Show ARG2:=6 '~略~ End Sub 試した結果、上記の組み込みダイローグのファイルの種類のデフォルトは ARG2:=の次の値が6でcsv、1でエクセルになるようでした。 次に、エクセルを開いた状態でCSVファイルを開こうと思い、同様に組み込みダイアローグを使用するため下記のマクロを作りました。ところがうまくいきません。 Sub CSVdata取得() Application.Dialogs(xlDialogOpen).Show ARG2:=6 End Sub ・・・・と記述するとエラーになります。 この場合、どうも ARG2:=6の6の数字のところが4以上はエラーとなるようです。 ARG2:=の次の値を1~3にするとエラーにはなりませんが、デフォルトはいずれもエクセルでした。 最初からファイルの種類をCSV形式にするにはどう記述したらよいのでしょうか? どうかお助けください。

  • Excel VBAの組み込みダイアログについて

    ExcelのVBAの組み込みダイアログで、 Application.Dialogs(xlDialogInsertPicture).Show についてですが、ヘルプの組み込みダイアログボックス引数一覧をみると xlDialogInsertPicture file_name、filter_number とあります。 これは、ダイアログボックスの図の挿入で、ファイル名とファイルの種類の引数になると思いますが、 ダイアログボックスの右上に表示される、表示の縮小表示を選択することってできるのでしょうか?また、ファイルの場所の指定ってできるのでしょうか?どなたか、詳しい方いらっしゃいましたら教えてください。よろしくお願いいたします。

  • 別アプリケーションへChDir

    エクセルのVBAを使い別のアプリケーションを操作するのですが SendKeysを使い、ファイルを開くダイアログを開いた時の初期ディレクトリがどうしても変更できません。 希望は以下の内容と同じ事を別アプリで実行することです。 Sub test() ChDir "C:\test" '↓この部分はSendkeysを使う操作になっても構いません。 Application.Dialogs(xlDialogOpen).Show End Sub 何方かお助け願います。

  • ファイル保存時のダイアログ表示フォルダを変更したい

    ファイル保存時にネットワーク上のフォルダを表示するダイアログを表示するには どのように記述すればよろしでしょうか。ご教授よろしくお願い致します。 以下、教えていただいたコードですが Const PathName = "\\●●\○○\" Call SetCurrentDirectory(PathName) Application.Dialogs(xlDialogSaveAs).Show このコードでファイルを開くダイアログを記述すると 設定したネットワーク上のフォルダを表示するのですが Application.Dialogs(xlDialogOpen).Show  ---OK ファイル保存のダイアログを記述すると では、デスクトップがダイアログに表示されます。 Application.Dialogs(xlDialogSaveAs).Show ---NG Application.Dialogs(xlDialogSaveAs).Show の場合(保存ダイアログ表示)は どのように記述すれば、ネットワーク上のフォルダを表示できますでしょうか。 よろしくお願い致します。

専門家に質問してみよう