このプログラムは選択したフォルダ内の全てのファイル(サブフォルダ内のファイルは含みません)の名称をクリップボードに記憶します。
オフィスクリップボードに保存するために、
新規文書を開いて
そこにファイル名を一旦貼付けて
それをコピーする
という処理をしています。
▼使い方
このプログラムを実行すると、「ファイルを開く」ダイアログが開きます。
![みんなのワードマクロ](https://stat.ameba.jp/user_images/20101126/23/gidgeerock/3f/85/p/t02200125_0800045610883231785.png?caw=800)
このダイアログで希望のフォルダを開き、その中のファイルを一つ選択します。
![みんなのワードマクロ](https://stat.ameba.jp/user_images/20101126/23/gidgeerock/d7/94/p/t02200125_0800045610883231784.png?caw=800)
「開く」ボタンをクリックすると、クリップボードへのファイル名が保存されます。
![みんなのワードマクロ](https://stat.ameba.jp/user_images/20101126/23/gidgeerock/c6/b6/p/t02200115_0428022310883234884.png?caw=800)
▼プログラム
Sub MWM_File_Names()
'ファイル名一覧 クリップボードへ(Word2000)
Dim mydlgOpen As Dialog
Dim mydlgFind As Dialog
Dim myFileName As String
Dim myFolderPath As String
Dim myFileList As String
Dim myDoc As Document '(オフィスクリップボードに入れるために)
On Error GoTo EH
Application.ScreenUpdating = False
'ダイアログボックスの設定
Set mydlgOpen = Dialogs(wdDialogFileOpen)
Set mydlgFind = Dialogs(wdDialogFileFind)
With mydlgOpen
'表示されるファイルを「すべての文書」に指定
.Name = "*.*"
Select Case .Display
Case -1 'ファイルが選択されたとき
'FileFind Dialogの更新
mydlgFind.Update
myFolderPath = mydlgFind.SearchPath
Case Else 'キャンセルボタンが押されたとき
End
End Select
End With
'上記フォルダ中の任意のファイルを検索します
myFileName = Dir(myFolderPath & "\", vbNormal)
Do While myFileName <> ""
If Len(myFileList) = 0 Then
myFileList = myFileName
Else
myFileList = myFileList & vbCr & myFileName
End If
myFileName = Dir()
Loop
'新規文書を開きます(見えない設定)
Set myDoc = Documents.Add(Visible:=False)
myDoc.Activate
Selection.TypeText Text:=myFileList
'全体を選択
myDoc.Range.Copy
myDoc.Close savechanges:=wdDoNotSaveChanges
Application.ScreenUpdating = True
'オブジェクトの解除
Set mydlgOpen = Nothing
Set mydlgFind = Nothing
MsgBox "クリップボードに「ファイル名」を保存しました。"
On Error GoTo 0
Exit Sub
EH:
MsgBox Err & " " & Err.Description
End Sub
▼関連記事
フォルダ内のファイルへのリンク自動作成マクロ
フォルダ内のファイルへのリンク自動作成マクロ (コード編)