- ベストアンサー
Excel VBAで新たな保存先のパスの取得方法は?
- エクセルVBAで新たに一度に作成する複数のブックを保存するフォルダーをあらかじめ指定する方法を調べています。
- 現在思いつく方法は、ダイアログボックスを表示し、ユーザーに保存先を選択してもらう方法です。
- もっとスマートなやり方があれば知りたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
私は初心者ですので、誰か、回答してくれないかなって見ていたのですが、なかなか無く、他の人に聞いた他のサイトで検索したら、shishishishiの希望されている内容がありました。 こんな感じで良いのですよね? 最近、同サイトのメーリングリストを登録したのですが、初心者の私には難しい事を言っていて分からないものも一杯ありますけどね・・・ Sub フォルダ選択() Dim ff As Object Set ff = CreateObject("Shell.Application"). _ BrowseForFolder(0, "フォルダを選択してください", 0) If Not ff Is Nothing Then MsgBox ff.Self.Path End If End Sub
その他の回答 (4)
- list
- ベストアンサー率30% (61/203)
度々すみません #1です。 #5の補足をさせて下さい。 Excel2002で実行したところ、問題なく実行出来ました。 でも、Excel2000は職場に行かないと確認出来ないので確認出来ませんけど・・・
お礼
大変遅くなり申し訳ございません。 ありがとうございました。
- list
- ベストアンサー率30% (61/203)
こんばんは #1です。 職場のパソコンはExcel2000ですので、#1で記載したマクロを同パソコンで実施したところ、ディスクトップも問題なく表示されました。 また、マイネットワークやマイコンピューターもエラーが発生することなく表示されました。 勿論、ディスクトップと違って特定の実際のフォルダがあるわけで無いため、 マイコンピューター:「::{20D04FE0-3AEA-1069-A2D8-08002B30309D}」 マイネットワーク:「::{208D2C60-3AEA-1069-A2D7-08002B30309D}」 などと表示されました。 以上、Excel2000での結果報告です。 すみません、self.pathを調べたのですが分かりませんでした。 初心者の私には結果報告以上無理でした・・・。
- list
- ベストアンサー率30% (61/203)
度々すみません #1です。 Excel2002で以下の用にすれば、ディスクトップ以外のフォルダに関しては、出来ました。 初心者ですので、強引な手法で申し訳ありません。 Sub フォルダ選択() Dim ff As Object Set ff = CreateObject("Shell.Application"). _ BrowseForFolder(0, "フォルダを選択してください", 0) If Not ff Is Nothing Then On Error Resume Next MsgBox ff.Items.Item.Path If Err = 91 Then End End If End Sub
補足
何度もすみません。上記の方法だとデスクトップを選択した際のエラーを回避して何もせずに終了させるのですね。 それなら最初からCドライブ以下しか表示させなければいいわけで、とりあえずは Sub Excl_DP選択() Dim ff As Object Set ff = CreateObject("Shell.Application"). _ BrowseForFolder(0, "フォルダを選んでネ", 0, "c:\") If Not ff Is Nothing Then MsgBox ff.Items.Item.Path End If End Sub でやってもいいのですが、他に方法はないですかねえ。
- list
- ベストアンサー率30% (61/203)
#1です。 私は、Excel2002で試して上手く出来ました。 > 「実行時エラー438.オブジェクトはこのプロパティまたはメソッド これは、どこで発生したのですかね? > MsgBox ff.Items.Item.Path では上手く出来たと記載されていますが、ディスクトップ以外は問題無く表示されたのであれば、エラー回避処理をして、強引に処理させれば、最低限、ディスクトップ以外であれば出来るのかな? すみません 初心者ですので、掲載したマクロの意味も分からず、また、自宅ではExcel2002しか無いために実際に出来るか分からず回答していますので間違いがあれば申し訳ありません。
補足
> 私は、Excel2002で試して上手く出来ました。 バージョンが違うとダメなケースってよくありますよね。 > 「実行時エラー438.オブジェクトはこのプロパティまたはメソッド 、これは、どこで発生したのですかね? MsgBox ff.Self.Path です。すべてのフォルダでアラーになります。 MsgBox ff.Items.Item.Path ならデスlクトップ以外はOKでした。
補足
ありがとうございました。 残念ながら「実行時エラー438.オブジェクトはこのプロパティまたはメソッドをサポートしていません」となってしまいました。(エクセルのバージョンは2000で試しました。) 参考URLも拝見しましたが、そこにあったようにデスクトップを指定するとエラーになるという MsgBox ff.Items.Item.Path とやると、デスクトップ以外ではOKでした。 さて、どうしましょうか。 もうすこし待ってみます。ありがとうございました。