2

У меня есть около 4000 файлов DOC и DOCX, которые содержат таблицу. Мне удалось импортировать их в один лист 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 также. Без дат данные у меня могут быть в любом порядке и бесполезны для меня.

1 ответ1

1

Ваш комментарий указывает, что имя файла включает в себя дату, которую вы хотите. Вы обращаетесь к имени файла в переменной myFile. Почему бы не разбить это на части, чтобы получить дату, и вставить ее туда, куда вы хотите? Например, вы можете сделать это первой или последней ячейкой в таблице назначения.

Пример добавлен:

Попробуйте добавить эту новую строку в ваш скрипт.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .