アプリ版:「スタンプのみでお礼する」機能のリリースについて

パワーポイントでVBAを使用しており、フォルダ名を取得しようとしてます。
エクセルのGetopenfileが使用出来ず、filedialogまたはAPIを使用するらしく、素人目で作り易そうなfiledialogを選びました。

型宣言で
dim fname as filedialog
と宣言しておき、
set fname = application.filedialog(msofiledialogfolderpicker)
と書けば、ここでウインドウが開きフォルダ指定が出来るのでしょうか?

また、型宣言が見たことのない型ですが、フォルダ名の後にファイル名を付けて、ファイルを取り込むことは出来るでしょうか?どうやればいいのでしょうか?

A 回答 (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/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 …
    • good
    • 0
この回答へのお礼

再度ありがとうございます。
試しましたが、p=.selecteditems(1)で止まりました。すみませんがエラーメッセージを失念しました。ピリオドで始まる変数は過去に経験ありませんが、これでいいのでしょうか?

お礼日時:2013/09/09 23:52

>試しましたが、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
    • good
    • 0
この回答へのお礼

動作確認出来ました。
ありがとうございます。

お礼日時:2013/09/11 00:58

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
    • good
    • 0
この回答へのお礼

ありがとうございます。
検索でなかなか見つからずここで質問してます。どこか参照URLは無いでしょうか?
回答頂いたソースコードで、取得したフォルダを変数に収めたいのですが、可能でしょうか?

お礼日時:2013/09/09 01:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています