• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAで新たな保存先のパスの取得方法は?)

Excel VBAで新たな保存先のパスの取得方法は?

このQ&Aのポイント
  • エクセルVBAで新たに一度に作成する複数のブックを保存するフォルダーをあらかじめ指定する方法を調べています。
  • 現在思いつく方法は、ダイアログボックスを表示し、ユーザーに保存先を選択してもらう方法です。
  • もっとスマートなやり方があれば知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • list
  • ベストアンサー率30% (61/203)
回答No.1

私は初心者ですので、誰か、回答してくれないかなって見ていたのですが、なかなか無く、他の人に聞いた他のサイトで検索したら、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

参考URL:
http://www2.moug.net/app/bbs/message.php?cat=exvba&id=20031027-000034
shishishishi
質問者

補足

ありがとうございました。 残念ながら「実行時エラー438.オブジェクトはこのプロパティまたはメソッドをサポートしていません」となってしまいました。(エクセルのバージョンは2000で試しました。) 参考URLも拝見しましたが、そこにあったようにデスクトップを指定するとエラーになるという MsgBox ff.Items.Item.Path とやると、デスクトップ以外ではOKでした。 さて、どうしましょうか。 もうすこし待ってみます。ありがとうございました。

その他の回答 (4)

  • list
  • ベストアンサー率30% (61/203)
回答No.5

度々すみません #1です。 #5の補足をさせて下さい。 Excel2002で実行したところ、問題なく実行出来ました。 でも、Excel2000は職場に行かないと確認出来ないので確認出来ませんけど・・・

shishishishi
質問者

お礼

大変遅くなり申し訳ございません。 ありがとうございました。

  • list
  • ベストアンサー率30% (61/203)
回答No.4

こんばんは #1です。 職場のパソコンはExcel2000ですので、#1で記載したマクロを同パソコンで実施したところ、ディスクトップも問題なく表示されました。 また、マイネットワークやマイコンピューターもエラーが発生することなく表示されました。 勿論、ディスクトップと違って特定の実際のフォルダがあるわけで無いため、 マイコンピューター:「::{20D04FE0-3AEA-1069-A2D8-08002B30309D}」 マイネットワーク:「::{208D2C60-3AEA-1069-A2D7-08002B30309D}」 などと表示されました。 以上、Excel2000での結果報告です。 すみません、self.pathを調べたのですが分かりませんでした。 初心者の私には結果報告以上無理でした・・・。

  • list
  • ベストアンサー率30% (61/203)
回答No.3

度々すみません #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

shishishishi
質問者

補足

何度もすみません。上記の方法だとデスクトップを選択した際のエラーを回避して何もせずに終了させるのですね。 それなら最初から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)
回答No.2

#1です。 私は、Excel2002で試して上手く出来ました。 > 「実行時エラー438.オブジェクトはこのプロパティまたはメソッド これは、どこで発生したのですかね? > MsgBox ff.Items.Item.Path では上手く出来たと記載されていますが、ディスクトップ以外は問題無く表示されたのであれば、エラー回避処理をして、強引に処理させれば、最低限、ディスクトップ以外であれば出来るのかな? すみません 初心者ですので、掲載したマクロの意味も分からず、また、自宅ではExcel2002しか無いために実際に出来るか分からず回答していますので間違いがあれば申し訳ありません。

shishishishi
質問者

補足

> 私は、Excel2002で試して上手く出来ました。 バージョンが違うとダメなケースってよくありますよね。 > 「実行時エラー438.オブジェクトはこのプロパティまたはメソッド 、これは、どこで発生したのですかね? MsgBox ff.Self.Path です。すべてのフォルダでアラーになります。  MsgBox ff.Items.Item.Path ならデスlクトップ以外はOKでした。

関連するQ&A