ファイル選択のダイアログボックスを出すために、
既存ファイルはGetOpenFileNameメソッド、
新規ファイルはGetSaveAsFilenameメソッドを使用しています。
フォルダパスを指定したいですが、何か方法ありますか?
環境はWindowsNT、Excel97、VB6.0(SP5)です。
宜しくお願い致します。
APIでよければ
SHBrowseForFolder
使うとか。
あるいはShell.Application使って
Dim ShellApp As Object
Dim oFolder As Object
Set ShellApp = CreateObject("Shell.Application")
Set oFolder = ShellApp.BrowseForFolder(0, "フォルダ選択", 1)
とか
Sayさん、ご教授ありがとうございます。
教えていただいたコードでやってみました。
フォルダ選択しかできませんでした。
ファイル選択をする際に、フォルダ指定をしたいです。
質問がわかりにくくて、すみませんでした。
宜しくお願い致します。
>フォルダ選択しかできませんでした。
BrowseForFolderの第三引数の設定で可能です。
Webで検索してみてください。すぐみつかります。
>ファイル選択をする際に、フォルダ指定をしたいです。
GetOpenFileNameメソッドの場合、
事前にカレントパスを変更すれば可能です。
これもWebで検索すればすぐみつかります。
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)
カレントパスを変更できませんでした。
ご教授をお願い致します。
たとえばこう。
Dim xl As Excel.Application
ChDir "C:\Program Files"
Set xl = CreateObject("Excel.Application")
xl.GetOpenFilename
xl.Quit
Set xl = Nothing
Sayさん、ご教授ありがとうございます。
何度も、すみません。
ChDirでコーディングしてみましたが、
カレントパスを変更できませんでした。
ご教授をお願い致します。
もし、きちんと掲載サンプルの順番どおりに
コーディングしているのに変更できなかったのなら、
OSかOfficeのバージョンの違いの可能性があり、
残念ながら当方には検証できる環境がありません。
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
>←ファイルパスを変えてから、再度EXCELオブジェクトを作成したら、
>フォルダを指定できます。
それが通って、
ChDir "C:\Program Files"
Set xl = CreateObject("Excel.Application")
が通らないのは不思議な感じですね。
EXCELオブジェクト作成前にパスを変えているわけですから。
理由がわかりませんが、WinNT、Win2000両方ChDirをやってみました。
ディレクトリは変わりましたが(CurDirで確認)、
ダイアログボックスのフォルダは変わりませんでした。
Sayさん、ありがとうございました。