web-dev-qa-db-ja.com

複数のWordドキュメントから1つのExcelシートにデータをコピーする

テーブルを含む約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シートにインポートするにはどうすればよいですか。日付がなければ、私が持っているデータは任意の順序であり、私には役に立たない可能性があります。

2

あなたのコメントは、ファイル名にあなたが望む日付が含まれていることを示しています。変数myFileのファイル名にアクセスしています。それを切り刻んで日付を取得し、好きな場所に挿入してみませんか?たとえば、宛先テーブルの最初または最後のセルにすることができます。

追加された例:

この新しい行をスクリプトに追加してみてください。

        Next c
        'new
        xl.activeworkbook.activesheet.Cells(xlRow, xlCol + 1) = myFile
        xlRow = xlRow + 1
1
Jim Mack