GetOpenFileNameでフォルダ指定するには?

解決


Hoo  2004-05-25 11:13:15  No: 83510  IP: [192.*.*.*]

ファイル選択のダイアログボックスを出すために、
既存ファイルはGetOpenFileNameメソッド、
新規ファイルはGetSaveAsFilenameメソッドを使用しています。
フォルダパスを指定したいですが、何か方法ありますか?
環境はWindowsNT、Excel97、VB6.0(SP5)です。
宜しくお願い致します。

編集 削除
Say  2004-05-25 12:11:47  No: 83511  IP: [192.*.*.*]

APIでよければ
SHBrowseForFolder
使うとか。

あるいはShell.Application使って

Dim ShellApp As Object
Dim oFolder As Object
Set ShellApp = CreateObject("Shell.Application")
Set oFolder = ShellApp.BrowseForFolder(0, "フォルダ選択", 1)

とか

編集 削除
Hoo  2004-05-25 13:04:25  No: 83512  IP: [192.*.*.*]

Sayさん、ご教授ありがとうございます。
教えていただいたコードでやってみました。
フォルダ選択しかできませんでした。

ファイル選択をする際に、フォルダ指定をしたいです。
質問がわかりにくくて、すみませんでした。
宜しくお願い致します。

編集 削除
Say  2004-05-25 14:48:27  No: 83513  IP: [192.*.*.*]

>フォルダ選択しかできませんでした。
BrowseForFolderの第三引数の設定で可能です。
Webで検索してみてください。すぐみつかります。

>ファイル選択をする際に、フォルダ指定をしたいです。
GetOpenFileNameメソッドの場合、
事前にカレントパスを変更すれば可能です。
これもWebで検索すればすぐみつかります。

編集 削除
Hoo  2004-05-25 16:25:04  No: 83514  IP: [192.*.*.*]

Sayさん、ご教授ありがとうございます。

>GetOpenFileNameメソッドの場合、
>事前にカレントパスを変更すれば可能です。
>これもWebで検索すればすぐみつかります。
カレントパスの変更はエクセルのカレントフォルダ(DefaultFilePath)の変更ですか?
やってみました。コードは下記のようです。
Public objExcelApp          As Excel.Application
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.DefaultFilePath="C:\"
IN_FILE_NAME = objExcelApp.Application.GetOpenFileName _
              (FileFilter:="EXCELファイル,*.xls", _
              Title:="入力ファイル指定", MultiSelect:=False)

カレントパスを変更できませんでした。

ご教授をお願い致します。

編集 削除
Say  2004-05-25 20:29:28  No: 83515  IP: [192.*.*.*]

たとえばこう。

    Dim xl As Excel.Application
    ChDir "C:\Program Files"
    Set xl = CreateObject("Excel.Application")
    xl.GetOpenFilename
    xl.Quit
    Set xl = Nothing

編集 削除
Hoo  2004-05-26 10:21:16  No: 83516  IP: [192.*.*.*]

Sayさん、ご教授ありがとうございます。
何度も、すみません。
ChDirでコーディングしてみましたが、
カレントパスを変更できませんでした。

ご教授をお願い致します。

編集 削除
Say  2004-05-26 23:01:19  No: 83517  IP: [192.*.*.*]

もし、きちんと掲載サンプルの順番どおりに
コーディングしているのに変更できなかったのなら、
OSかOfficeのバージョンの違いの可能性があり、
残念ながら当方には検証できる環境がありません。

編集 削除
Hoo  2004-05-27 09:19:47  No: 83518  IP: [192.*.*.*]

Sayさん、いろいろありがとうございました。
ちょっと強引なやり方ですが、解決しました。
Dim objExcelApp As Excel.Application
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.DefaultFilePath="C:\"
objExcelApp.Application.Quit
Set objExcelApp = Nothing

←ファイルパスを変えてから、再度EXCELオブジェクトを作成したら、
フォルダを指定できます。

Set objExcelApp = CreateObject("Excel.Application")
IN_FILE_NAME = objExcelApp.Application.GetOpenFileName


objExcelApp.Application.Quit
Set objExcelApp = Nothing

編集 削除
Say  2004-05-27 12:24:32  No: 83519  IP: [192.*.*.*]

>←ファイルパスを変えてから、再度EXCELオブジェクトを作成したら、
>フォルダを指定できます。
それが通って、
    ChDir "C:\Program Files"
    Set xl = CreateObject("Excel.Application")
が通らないのは不思議な感じですね。
EXCELオブジェクト作成前にパスを変えているわけですから。

編集 削除
Hoo  2004-05-27 12:50:44  No: 83520  IP: [192.*.*.*]

理由がわかりませんが、WinNT、Win2000両方ChDirをやってみました。
ディレクトリは変わりましたが(CurDirで確認)、
ダイアログボックスのフォルダは変わりませんでした。

Sayさん、ありがとうございました。

編集 削除