|
▼PPNNOOPP さん:
こんばんは
やはり、本来なら、WordVBA で Wordの世界で処理すべきものなんでしょうね。
ただ、私自身、WordVBAも経験がありませんし、ここは ExcelVBAの板ですので
おっかなびっくり、ExcelVBAでコードを書いてみました。
結構処理時間はかかるかもしれませんしロジックの自信度も60%ぐらいですが・・・・
こちらで、10ファイルぐらいで動かしても結構長くかかります。
ましてや 2000〜4000ファイル となると、う〜ん・・・・ですねぇ。
まずは、10個ぐらいで試してみてもらえますか?
Sub Sample()
Dim docapp As Object
Dim fso As Object
Dim myPath As String
myPath = "c:\TEST" '★フォルダパスは実際のものに
Set fso = CreateObject("Scripting.FileSystemObject")
Set docapp = CreateObject("Word.Application")
Retrieve fso, fso.getfolder(myPath), docapp
docapp.Quit
MsgBox "処理が完了しました"
End Sub
Sub Retrieve(fso As Object, folder As Object, docapp As Object)
Dim subfolder As Object
Dim file As Object
Dim doc As Object
Dim nName As String
'カレントフォルダ内のファイルを列挙
For Each file In folder.Files
Set doc = docapp.Documents.Open(Filename:=file.Path)
Application.DisplayAlerts = False
nName = fso.getparentfoldername(file.Path) & "\" & fso.getbasename(file.Path) & ".doc"
doc.SaveAs2 Filename:=nName, FileFormat:=0 'wdFormatDocument
Application.DisplayAlerts = True
doc.Close
Next
For Each subfolder In folder.SubFolders
'再帰的呼び出し
Retrieve fso, subfolder, docapp
Next
End Sub
|
|