• 締切済み

<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

  • Excel VBA カレントフォルダのひとつ上のフォルダを指定したい

    はじめて質問をさせていただきます。 ExcelのVBA初心者なのですが、既存のファイルに継ぎ足しで新規のファイルを作成しております関係上、カレントフォルダのひとつ上のフォルダを指定したいと考えております。 変数=thisworkbook.path のようにカレントフォルダの取得の仕方は分かったのですが、そこからひとつ上を指定する方法などはあるのでしょうか? よろしくお願いいたします。

  • ExcelVBAでファイルを開くフォルダ指定方法

    ExcelのVBAを用いて実験データのcsvファイルをまとめるプログラムを書いています. 肝心のプログラムはほぼできています. しかし OpenfileName = Application.GetOpenFilename("CSVファイル,*.csv?") としたときに開かれるフォルダ(ファイルを指定するフォルダ)がカレントフォルダ?となっております. 実行するExcel(VBA入り)と実験データが下記のパスにあったとして C:\Users\ABC\Documents\Data\110302\ カレントフォルダはなぜかマイドキュメントがデフォルトになってしまいます. C:\Users\ABC\Documents\ 階層移動できるので問題なくもないのですが,一々階層移動するのも面倒なので修正したいと考えております. そこで (1)プログラム実行直前にカレントフォルダを実行するExcel(VBA入り)の位置に変更する方法 (2)カレントフォルダと関係なく実行するExcel(VBA入り)があるフォルダを開く方法 どちらかで対処できると考えたのですがその方法が見つかりません. (ちなみに実行するExcel(VBA入り)の位置は動かすものとするので絶対パスでの指定はなしとします) どなたかご教授お願いします.

  • 別ファイル起動時にはカレントフォルダの変更が必要?

    「マクロの記録」のボタンをクリックして以下の作業のマクロ構文をPCに自動記述させた場合 「ChDirステートメント」で必ずカレントフォルダが変更される一文が記述されます  1.別ファイルを起動させた場合  2.「名前を付けて保存」の処理を実行させた場合 そのため、今までは「カレントフォルダ」を変更しないことには他のファイルやブックを使用できない とばかり思っていましたが、下記ホームページを拝見したところフルパス名を使用するのであれば 特に「カレントフォルダ」を変更する必要はなさそうであることが分かりました。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_140.html これって、他のファイルやブックを使用する際に「ファイルを開く」などの操作で「ファイルの場所」を 特定したその作業をPCがマクロ処理として構文を自動作成してしまっただけの「ChDir」であって、 実際のファイル起動などのマクロ構文をフルパス名で記述するのであれば、「ChDirステートメント」 でのカレントフォルダ変更は特に必要ないという認識で正しいのでしょうか? このことについては何となく理解できたのですが、下記4点について詳しく知りたいので宜しく お願いします。  1.「ChDrive」、「ChDir」を省略した方がファイルが軽くなるのか(処理が早くなるのか)  2.「ChDrive」、「ChDir」を記述した方がファイルが軽くなるのか(処理が早くなるのか)  3.FSOなどでファイルやフォルダを新たに作成する場合は「ChDir」の記述をした方が良いのか  4.常にフルパス名でマクロ処理することによるデメリットはあるのか 以上です。宜しくお願いします。

  • EXCELファイルのカレントフォルダを取得するには?

    EXCELファイルのカレントフォルダを取得するには? C:\経理\予算.xls D:\2005年度\予算.xls EXCEL97ファイルがあります。 VBAで   カレントフォルダ名 (C:\経理\,D:\2005年度\) を取得する事は可能でしょうか? CURDIRでは上手い方法が見つかりませんでした。

  • VBA ネットワーク上のファイルでカレントフォルダを取得するには?

    VBA ネットワーク上のファイルでカレントフォルダを取得するには? VBA超初心者でネットで色々調べて、ところどころコピーしながらプログラムを作っています。 ローカルのPCでは問題なく動くまでになったのですが、実際にはネットワーク上の共有サーバで実行したいのですが、ネットワーク上ではカレントパスがうまく設定できていないようで、動きません。 CreateObject("WScript.Shell").CurrentDirectory = ThisWorkbook.Path というコードでVBAが置いてあるフォルダをカレントディレクトリに設定するようにしています。 どのようにしたらネットワークサーバで動くようになりますか?

  • エクセル2003にてカレントフォルダを確認する方法

    エクセル2007の場合は http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_140.html のやり方で、「EXCELのオプション」から確認できるようですが エクセル2003の場合どこから確認できますか? ファイル→プロパティ→ファイルの情報を見てもありません。 その「ファイルの情報」のパスと、VBAでCurDirをした時の戻り値が違うので、 「ファイルの情報」のパスはカレントフォルダではないですよね?

  • Excel97VBAで、カレントディレクトリを取得する方法

    Excel97のVBAで、ワークブックの保存ボタンを作成しています。 1.xlsというファイルを、一旦、1.prn(スペース区切りテキスト)でデスクトップに保存し、再度元のディレクトリの1.xlsに上書き保存する。というマクロを作っています。 SaveAsでFileFormatを変更するところまではわかったのですが、元のファイルに上書きする方法がわかりません。 一度、カレントディレクトリを取得して、同じ名前を付けて保存する、という方法になるのではないかと思いましたが、カレントディレクトリの取得方法がわかりません。 宜しくお願いします。

  • VB6でEXCELの表をHTML形式で保存する方法は?

    VB6でEXCELのデータを作成してHTML形式で保存したいのですが、根本的にできないものでしょうか? EXCELのVBAではWebページで保存ということができるので試行錯誤してみたのですが VB6のヘルプでSaveAsメソッドを見る感じでは新しいファイル名までは指定できますが保存形式はEXCEL VBAのように指定できないようです。 XLSファイルの表までは完成できますが、そのXLSファイルをHTMLファイルにできればぃぃんです。 VB6からEXCELを制御してHTML形式で保存させるとか なにかいい方法はないでしょうか?

  • PowerPointのカレントフォルダを移動したい

    PowerPointと組み入れた動画のファイルは全て同じフォルダに入れているのですが、 組み込んだ動画の再生が、開いた後の一度しか再生できなくなっていて困っています。 どうもPowerPoint開いたときのフォルダが再生後に既定のフォルダに移動してしまって いるようなのです。ということで、EXCELでできる以下のことと同様のことをPowerPointで したいです。なお、使ってるPowerPointは 2010 です。 Sub カレントフォルダの移動() Dim strPath As String strPath = ThisWorkbook.Path ChDrive strPath ChDir strPath End Sub できれば、PowerPointを開いた時に動作させたいです。 よろしくお願いいたします。

  • VB2005でExcel2003とExcel2007

    初めまして、VB2005でExcelに出力するプログラムの開発を 行っているのですが、大変困っています。 どなたか教えて頂けないでしょうか。 VB2005の参照設定でMicrosoft Excel12.0 Object Library指定 してExcel2007をインストールしているパソコンでは Excelに出力できますがExcel2003を インストールしているパソコンではExcelに出力できません。 又、VB2005の参照設定でMicrosoft Excel11.0 Object Library指定 してExcel2003をインストールしているパソコンでは Excelに出力できますがExcel2007を インストールしているパソコンではExcelに出力できません。 Excel2003・Excel2007どちらがインストール されていてもExcelに出力できるプログラムを作成したいの ですが、何か方法はないでしょうか。 サンプル等があるHPがありましたら教えてください。

元カノに謝罪したい
このQ&Aのポイント
  • 先週、元カノと別れました。別れた理由は元カノに仕事が忙しく精神状態が落ち着かない、僕が人の話しを聞かない、自分勝手だからと言われ、それに僕が、別れないで落ち着くまでしばらく会わない方がどうかと言いました。しかし、それに元カノに自分で気づいてないなと言われ僕が何かやらかしたと思い聞こうとするとしつこいと言われました。
  • 元カノが精神の病気を持っていて僕と付き合ったときにも本当は付き合えない状態だけど僕に魅力を感じて僕だったら元カノを支えてくれると信じていたみたいです。そして僕も責任があると思い、学生にも関わらず元カノが困っていたときにいつも側にいてくれました。しかし元カノが配信が好きで僕といるときにもずっと配信の話しかしないのです。それに僕の返事が適当だったので多分それが理由で人の話を聞かないと言われたと思います。
  • 今良く考えると確かに僕が全て悪かったのです。好きな人ができただけで浮気までひどい言葉を彼女に言って心に傷つけました。本当に悔しくて辛いです。確かに彼女が病気持ちで普通の人とは少し違うところがあることを分かった上で付き合ったのに僕が彼女を理解できませんでした。
回答を見る

専門家に質問してみよう