パワーポイントでVBAを使用しており、フォルダ名を取得しようとしてます。
エクセルのGetopenfileが使用出来ず、filedialogまたはAPIを使用するらしく、素人目で作り易そうなfiledialogを選びました。
型宣言で
dim fname as filedialog
と宣言しておき、
set fname = application.filedialog(msofiledialogfolderpicker)
と書けば、ここでウインドウが開きフォルダ指定が出来るのでしょうか?
また、型宣言が見たことのない型ですが、フォルダ名の後にファイル名を付けて、ファイルを取り込むことは出来るでしょうか?どうやればいいのでしょうか?
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は無いでしょうか?
回答頂いたソースコードで、取得したフォルダを変数に収めたいのですが、可能でしょうか?
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
お探しの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も見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
FileDialog オブジェクトでファイル名のみを取得
PowerPoint(パワーポイント)
-
VBAで既存のパワポのファイルを開くには?
Access(アクセス)
-
-
4
PPTのコマンドボタンがクリックできません
その他(Microsoft Office)
-
5
VBAでファイル名の取得方法
PowerPoint(パワーポイント)
-
6
ExcelVBAにて既に開かれているPowerpointをアクティブにするには?
Excel(エクセル)
-
7
【VB.NET】 パワポ操作を非表示で
Visual Basic(VBA)
-
8
PowerPoint の VBA
Visual Basic(VBA)
-
9
エクセルで、2種類のデータを交互に入れなおす方法はありますでしょうか??
Excel(エクセル)
-
10
なぜマクロの記録がなくなってしまったのでしょうか?
Excel(エクセル)
-
11
powerpointマクロでJPEG画像サイズを変更したい
Visual Basic(VBA)
-
12
PowerPointVBAでスライドマスター上での編集
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
AccessVBAで「dim dbs as datab...
-
ある文字列が全て数字であるか...
-
エクセルVBAでFor each文
-
エクセルVBAで2つの画像を比較...
-
VBAで Set wb = Sheets(1).Cop...
-
VBScriptからDLL参照設定したい
-
エクセルのVBAの標準モジュール...
-
VBS 指定のフォルダ内の最新の...
-
VBへのExcel導入について
-
オブジェクト変数またはWITHブ...
-
Excelでフィルタをかけると警告...
-
VBAからPDFファイルにパスワー...
-
sheetsメソッドの失敗
-
VBA:オートシェイプの線の長...
-
ACCESS activeXコンポーネント...
-
ステップインで実行しても中断...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
テキストボックス中の文字列の...
-
PowerPointVBAでスライドマスタ...
-
エクセルマクロエラー「'Cells'...
-
VBAからPDFファイルにパスワー...
-
Excelでフィルタをかけると警告...
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
EXCEL VBA オートシェイプナン...
-
[VBA]CDOメッセージ送信エラー
-
VBAで作成するメール(開封確認...
-
VBAについてです。 初心者です...
-
VBA:オートシェイプの線の長...
-
VBで引数にDictionaryオブジェ...
-
AccessVBAで「dim dbs as datab...
おすすめ情報