- 締切済み
<EXCEL2007 VB(VBA) カレントフォルダの変更方法>
<EXCEL2007 VB(VBA) カレントフォルダの変更方法> VBからプログラムで用途に合わせてEXCELの読み出し、保存のフォルダ位置をコントロールしようとしています。 ファイルの読み出し、保存指定の時に希望のカレントフォルダを開けるように、プログラムでCHDIRやチェンジドライブを指定してから「GetOpen」「GetSaveAs」を実行しても、カレントフォルダはマイドキュメントから変わりません。 「EXCELのオプション-保存-規定のファイルの場所」では、固定化されてしまうので利用出来ません。 EXCEL2007では方法が変わったのでしょうか? 検索しても中々、トピックスに出会わないので思い切って質問に出してみました。 わかる方いましたらよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
この回答は、そのままになっていますが、いかがなっていますか? 状況が分からなかったので、なかなか正答が思い当たりませんでした。 通常、物理的フォルダしか指定できないはずなので、その違いが明らかでないと難しいです。#3 で良いと思って書きましたが、ダメだったのでしょうか。
- Wendy02
- ベストアンサー率57% (3570/6232)
返事が遅くなりました。私の設定は、お礼側だけにしか、連絡が来ないようななっていますので、見落としていました。 >OSはXPです。 それなら手はありそうですね。 ところで、最近、ここのサイトは、VBAプログラマを楽しませるような質問が少ないので、私の回答もボケていたようです。もしかしたら、その移動フォルダって、仮想フォルダと違いますか? 以下の方法で試してみてください。 '// Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long 'モジュールの上部に置く Sub Test2() Dim orgDir As String Dim myDir As String Dim myFile As String myDir = "\\wxp\mynetwork(d)" orgDir = Application.DefaultFilePath 'Excel のここがデフォルトパス SetCurrentDirectory myDir If StrComp(CurDir, myDir, 1) = 0 Then myFile = Application.GetOpenFilename("Excelファイル(*.xls?),*.xls?") Else MsgBox myDir & "は開けません。フォルダを確認してください。", vbExclamation End If ChDir orgDir End Sub
- Wendy02
- ベストアンサー率57% (3570/6232)
>EXCEL2007では方法が変わったのでしょうか? Office 2007 と比較してみましたが、あまり変わっていないようです。 OS が、Vista だとかではありませんか?おそらく、アクセスしてはならない場所を指定しているか、そうでなければ、フォルダ名が違っている可能性があります。Dir 関数等で調べていただければ良いです。 例: Sub Test1() Dim myDir As String Dim orgDir As String Dim myFile As Variant orgDir = CurDir myDir = "C:\Temp\" If Dir(myDir, vbDirectory) <> "" Then '←ここで調べます ChDir myDir myFile = Application.GetOpenFilename("Excelファイル(*.xls?),*.xls?") End If ChDir orgDir End Sub
補足
すみません。 急きょ出張が入ってしまい、返答するのが大分遅くなってしまいました。 上記の方法で早速試してみましたが、やはり目的のフォルダへ移行してくれません。 excel2007のオプション設定-保存にある「規定のファイルの場所」に設定が入ってる場合そこに移動し、 ない場合は「SYSTEM32」フォルダに移動してしまいます。 EXCEL2007の設定の影響を受けているような感じです。 chdir mydir はエラーも出ずに通過します。 OSはXPです。 他に何か確認出来る方法はあるでしょうか?
- kmetu
- ベストアンサー率41% (562/1346)
phn = Application.GetSaveAsFilename(InitialFileName:="d:\temp") みたいな感じではだめでしょうか
補足
返事が大変遅くなりました。 現地調整でトラブル続発で、HP見る余裕すらありませんでした。 結論から言いますと、APIの「apiGetOpenFileName」を利用したら、フォルダ移動が出来るようになりました。 VBから制御しているためでしょうか。 一応解決出来ましたので、遅ればせながら報告致します。 色々、お手間をおかけいたしました。