- ベストアンサー
パワーポイントでフォルダ名を取得する方法
- VBAを使用してパワーポイントでフォルダ名を取得する方法について紹介します。
- フォルダ名を取得するためには、ファイルダイアログを使用する必要があります。
- ファイルダイアログを開き、フォルダを指定することでフォルダ名を取得することができます。また、フォルダ名の後にファイル名を付けてファイルを取り込むこともできます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>回答頂いたソースコードで、取得したフォルダを変数に収めたいのですが、可能でしょうか? No.1 のコードを実行してみていただいてお分かりかと思いますが、SelectedItems プロパティ(FileDialogSelectedItems コレクション)はフォルダなどへのパスであり、文字列です。ですからフツーに代入できます。 Dim p As String p = .SelectedItems(1) Debug.Print p >どこか参照URLは無いでしょうか? FileDialog メンバー (Office) - MSDN http://msdn.microsoft.com/ja-jp/library/office/ff863983.aspx ※オブジェクトについてはこの上の階層のページ参照 3種類の[ファイルを開く]ダイアログボックス http://officetanaka.net/excel/vba/tips/tips154.htm もうひとつの[ファイルを開く]ダイアログボックス(FileDialogオブジェクト) http://www.moug.net/tech/exvba/0060085.html 【Excel VBA】ファイルを開くダイアログを利用する http://blog.livedoor.jp/akf0/archives/51587451.html
その他の回答 (2)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
>試しましたが、p=.selecteditems(1)で止まりました。……。ピリオドで始まる変数は過去に経験ありませんが、これでいいのでしょうか? これでいいです。 With ステートメントのブロックの中では、繰り返し登場する同一オブジェクトの記述を省略できます。No.1 のコードで言えば、「Application.FileDialog(msoFileDialogFolderPicker)」(ユーザーがフォルダを指定するためのダイアログ)というオブジェクトのことです。 「.SelectedItems(1)」の部分は変数ではなく、プロパティと呼びます。上のオブジェクトに定義されているプロパティ、即ちオブジェクトが持っている値です。具体的には、ユーザーが選択することで FileDialog に与えたパスという、文字列である値です。 わざと省略せずに書くなら、「Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)」と書いてあるのと同じです。もしも With ブロックの中でこのように省略しないで書いたとしても、意味はないですが、エラーにも特になりません。 オブジェクトは、 Set fd = Application.FileDialog(msoFileDialogFolderPicker) という具合に、変数に放り込んでも構いません。その場合、 With fd '処理 End With と書かれるわけですね。 「p = .SelectedItems(1)」という行を With ~ End With の間に書かなければ、「.」から始まるのでは不完全なコードですから、当然エラーになります。 With は VBA の基本なので、どんなものなのか、一度きちんと調べてみてください。 No.1 と No.2 を合体させたコードを次に示します。 Sub test() Dim p As String With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = "D:\My Documents\" 'フォルダが入っている親フォルダなどの場所 .Show p = .SelectedItems(1) Debug.Print p End With End Sub
お礼
動作確認出来ました。 ありがとうございます。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
PowerPoint は手元にないのですが。とりあえず Excel でも使えるので、VBE ヘルプを見れば、「Application.FileDialog プロパティ」や「FileDialog オブジェクト メンバ」がちゃんと載っています。インターネットの検索でもたくさん情報が出てきます。 FileDialog のメリットは、InitialFileName プロパティにより、指定のフォルダ内を初期表示できることだと思いますよ。とりあえず下のコードを実行してみてください。 目的に応じて、msoFileDialogFolderPicker というパラメータを他のもの(ヘルプ参照)に書き換えてください。 なお型の指定は、As FileDialog でも As Variant でもいいです。 Sub test() With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = "D:\My Documents\" 'フォルダが入っている親フォルダなどの場所 .Show Debug.Print .SelectedItems(1) End With End Sub
お礼
ありがとうございます。 検索でなかなか見つからずここで質問してます。どこか参照URLは無いでしょうか? 回答頂いたソースコードで、取得したフォルダを変数に収めたいのですが、可能でしょうか?
お礼
再度ありがとうございます。 試しましたが、p=.selecteditems(1)で止まりました。すみませんがエラーメッセージを失念しました。ピリオドで始まる変数は過去に経験ありませんが、これでいいのでしょうか?