テーブルを含む約4000のdocファイルとdocxファイルがあります。次のスクリプトを使用して、これらを1つのExcelシートにインポートすることができました。
Sub Macro1()
Dim xl As Object
Set xl = CreateObject("Excel.application")
xl.workbooks.Add
xl.Visible = True
'Here put your path where you have your documents to read:
myPath = "C:\Users\" 'End with '\'
myFile = Dir(myPath & "*.docx")
xlRow = 1
Do While myFile <> ""
Documents.Open FileName:=myPath & myFile, ConfirmConversions:=False, _
ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:=""
xlCol = 0
For Each t In ActiveDocument.Tables
For Each r In t.Rows
For Each c In r.Range.Cells
myText = c
myText = Replace(myText, Chr(13), "")
myText = Replace(myText, Chr(7), "")
xlCol = xlCol + 1
xl.activeworkbook.activesheet.Cells(xlRow, xlCol) = myText
Next c
xlRow = xlRow + 1
xlCol = 0
Next r
Next t
ActiveWindow.Close False
myFile = Dir
Loop
xl.Visible = True
End Sub
唯一の問題は、ドキュメントの表の外に日付があることです。これはテーブルにないので、それを取得せず、日付のないデータの膨大なリストがあります。すべてのデータ、または少なくとも日付をExcelシートにインポートするにはどうすればよいですか。日付がなければ、私が持っているデータは任意の順序であり、私には役に立たない可能性があります。
あなたのコメントは、ファイル名にあなたが望む日付が含まれていることを示しています。変数myFileのファイル名にアクセスしています。それを切り刻んで日付を取得し、好きな場所に挿入してみませんか?たとえば、宛先テーブルの最初または最後のセルにすることができます。
追加された例:
この新しい行をスクリプトに追加してみてください。
Next c
'new
xl.activeworkbook.activesheet.Cells(xlRow, xlCol + 1) = myFile
xlRow = xlRow + 1