dポイントプレゼントキャンペーン実施中!

VBAで,"ファイルを開く"のダイアログボックスの中に表示されたすべてのファイル名を読み込んで.excelのsheetに書き出し,これをハイパーリンクにしたいのですが,ダイアログボックスの中のすべてのファイルを順に読み込む操作はどのようなステートメントを使えばよいでしょうか.
最終的には,このハイパーリンクをクリックすれば,ファイルを開けるようにする予定です.

A 回答 (3件)

ANo2です。


ANo1さんから、回答が出ていますが、わたしの書いたANo2が明らかに間違っていたので修正します。

Sub TEST02()
  Dim ShellApp As Object
  Dim myFdr As Object
  Dim i As Long
  Dim myPth As String, myFle As String '以上変数宣言
  Set ShellApp = CreateObject("Shell.Application")
  Set myFdr = ShellApp.BrowseForFolder(0, "フォルダ選択", 1) 'フォルダ指定
  myPth = myFdr.items.Item.Path 'パス取得
  myFle = Dir(myPth & "\*.*", vbNormal) 'ファイル名を取得
  Do While myFle <> "" ' ファイルがあるだけ繰り返す
    i = i + 1 ' 行加算
    Cells(i, "A").Value = myFle '転記
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, "A"), Address:=myPth & "\" & myFle 'ハイパーリンク
    myFle = Dir() ' 次のファイル名を取得
  Loop
End Sub
    • good
    • 0
この回答へのお礼

ご回答有り難うございました.
書かれていた内容をコピーして実行したところ,私の思い描いたことが,瞬時に実行できました.
"素晴らしい!"の一言です.
これで手間をかけずファイルを開けるシステムができました.有り難うございました.

お礼日時:2011/08/06 17:28

それではご要望のファイル名リスト作成の一例です。



Sub TEST01()
  Dim ShellApp As Object
  Dim myFdr As Object
  Dim myPth As String, myFle As String
  Set ShellApp = CreateObject("Shell.Application")
  Set myFdr = ShellApp.BrowseForFolder(0, "フォルダ選択", 1)
  myPth = oFolder.items.Item.Path 'フォルダ指定
  myFle = Dir(myPth & "\*.*", vbNormal) 'ファイル名を取得
  Do While myFle <> "" ' ファイルがあるだけ繰り返す
    i = i + 1 ' 行を加算
    Cells(i, "A").Value = myFle '転記
    myFle = Dir() ' 次のファイル名を取得
  Loop
End Sub
    • good
    • 0

>ダイアログボックスの中のすべてのファイルを順に読み込む操作は



作成例:
sub macro1()
 dim i, myfile
 with application.filedialog(msofiledialogfolderpicker)
  if .show = true then
   myfile = dir(.selecteditems(1) & "\*.*")
   do until myfile = ""
   i = i + 1
   cells(i, "A") = myfile
   activesheet.hyperlinks.add anchor:=cells(i, "A"), address:=.selecteditems(1) & "\" & myfile
   myfile = dir()
   loop
  end if
 end with
end sub
などのように。


他にも
○フォルダの中のファイルを1つ指定したら,それと同じ層にあるファイルを順繰り拾いたい
○フォルダの中で複数のファイルを指定して,選んだファイルだけを順繰り拾いたい
○フォルダを明示的に選択して,その中にあるファイルを拾いたい
等々,具体的にヤリタイ事のデザインに応じて様々な手が考えられます。
「実はもっとこういう事がしたいんです」のアイデアが湧いたら,寄せられた回答などを参考に一度頑張ってみて,それで出来なければまた新しいご相談として投稿してみてください。

参考に:
http://officetanaka.net/excel/vba/tips/tips39.htm
    • good
    • 0
この回答へのお礼

早速ご回答と親切な助言を頂き有り難うございました.
上記をコピーして実行しましたら,次の部分でエラーメッセージが出ました.
with application.filedialog(msofiledialogfolderpicker)
エラーメッセージは,"実行時エラー'438'オブジェクトはこのメソッドまたはプロパティをサポートしていません"でした.
私は,Excel2000を使っているために,エラーになったのではないかと思っています.VBAの中のobjectの機能について調べる方法を知らないので,これから勉強したいと思います.

お礼日時:2011/08/06 15:57

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