
パワーポイントでVBAを使用しており、フォルダ名を取得しようとしてます。
エクセルのGetopenfileが使用出来ず、filedialogまたはAPIを使用するらしく、素人目で作り易そうなfiledialogを選びました。
型宣言で
dim fname as filedialog
と宣言しておき、
set fname = application.filedialog(msofiledialogfolderpicker)
と書けば、ここでウインドウが開きフォルダ指定が出来るのでしょうか?
また、型宣言が見たことのない型ですが、フォルダ名の後にファイル名を付けて、ファイルを取り込むことは出来るでしょうか?どうやればいいのでしょうか?
No.2ベストアンサー
- 回答日時:
>回答頂いたソースコードで、取得したフォルダを変数に収めたいのですが、可能でしょうか?
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/f …
※オブジェクトについてはこの上の階層のページ参照
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.h …
再度ありがとうございます。
試しましたが、p=.selecteditems(1)で止まりました。すみませんがエラーメッセージを失念しました。ピリオドで始まる変数は過去に経験ありませんが、これでいいのでしょうか?
No.3
- 回答日時:
>試しましたが、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
No.1
- 回答日時:
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は無いでしょうか?
回答頂いたソースコードで、取得したフォルダを変数に収めたいのですが、可能でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
このQ&Aを見た人はこんなQ&Aも見ています
-
なぜマクロの記録がなくなってしまったのでしょうか?
Excel(エクセル)
-
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
(VBA) Dir 関数で取得するファイル一覧の順序
PowerPoint(パワーポイント)
-
-
4
VBAでファイル名の取得方法
PowerPoint(パワーポイント)
-
5
PPTのコマンドボタンがクリックできません
その他(Microsoft Office)
-
6
ExcelのVBAで、選択したファイルが既に開かれているか確認したい
Excel(エクセル)
-
7
ExcelVBAにて既に開かれているPowerpointをアクティブにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
VBAで Set wb = Sheets(1).Cop...
-
Excelでフィルタをかけると警告...
-
上下の位置揃えについて
-
ExcelVBAでのNZ関数について
-
エクセルのVBAの標準モジュール...
-
エクセルマクロエラー「'Cells'...
-
Letステートメントの使い方につ...
-
ある文字列が全て数字であるか...
-
findメソッドの変数について
-
CreateObjectとGetObjectの違い
-
「オブジェクト変数または With...
-
コンパイルすると「メソッドま...
-
AccessVBAで「dim dbs as datab...
-
VBScriptからDLL参照設定したい
-
オブジェクト変数の取得について
-
エクセル エラー438
-
sheetsメソッドの失敗
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
テキストボックス中の文字列の...
-
ExcelVBAでのNZ関数について
-
[VBA]CDOメッセージ送信エラー
-
EXCEL VBA オートシェイプナン...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルマクロエラー「'Cells'...
-
AccessVBAで「dim dbs as datab...
-
Excel VBAでWordの複数ファイル...
-
オブジェクトが見つかりません
-
CreateObjectとGetObjectの違い
-
エクセルVBAで配列内に空白デー...
-
オブジェクト変数またはWITHブ...
-
VBScriptからDLL参照設定したい
-
エクセルVBAでcode128のバー...
おすすめ情報