• 締切済み

<EXCEL2007 VB(VBA) カレントフォルダの変更方法>

<EXCEL2007 VB(VBA) カレントフォルダの変更方法> VBからプログラムで用途に合わせてEXCELの読み出し、保存のフォルダ位置をコントロールしようとしています。 ファイルの読み出し、保存指定の時に希望のカレントフォルダを開けるように、プログラムでCHDIRやチェンジドライブを指定してから「GetOpen」「GetSaveAs」を実行しても、カレントフォルダはマイドキュメントから変わりません。 「EXCELのオプション-保存-規定のファイルの場所」では、固定化されてしまうので利用出来ません。 EXCEL2007では方法が変わったのでしょうか? 検索しても中々、トピックスに出会わないので思い切って質問に出してみました。 わかる方いましたらよろしくお願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

この回答は、そのままになっていますが、いかがなっていますか? 状況が分からなかったので、なかなか正答が思い当たりませんでした。 通常、物理的フォルダしか指定できないはずなので、その違いが明らかでないと難しいです。#3 で良いと思って書きましたが、ダメだったのでしょうか。

ken_yosi
質問者

補足

返事が大変遅くなりました。 現地調整でトラブル続発で、HP見る余裕すらありませんでした。 結論から言いますと、APIの「apiGetOpenFileName」を利用したら、フォルダ移動が出来るようになりました。 VBから制御しているためでしょうか。 一応解決出来ましたので、遅ればせながら報告致します。 色々、お手間をおかけいたしました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

返事が遅くなりました。私の設定は、お礼側だけにしか、連絡が来ないようななっていますので、見落としていました。 >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)
回答No.2

>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

ken_yosi
質問者

補足

すみません。 急きょ出張が入ってしまい、返答するのが大分遅くなってしまいました。 上記の方法で早速試してみましたが、やはり目的のフォルダへ移行してくれません。 excel2007のオプション設定-保存にある「規定のファイルの場所」に設定が入ってる場合そこに移動し、 ない場合は「SYSTEM32」フォルダに移動してしまいます。 EXCEL2007の設定の影響を受けているような感じです。 chdir mydir はエラーも出ずに通過します。 OSはXPです。 他に何か確認出来る方法はあるでしょうか?

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

phn = Application.GetSaveAsFilename(InitialFileName:="d:\temp") みたいな感じではだめでしょうか

関連するQ&A