Copiando dados de vários documentos do Word em uma única planilha do Excel

2

Tenho cerca de 4000 arquivos doc e docx que contêm uma tabela. Eu consegui importar estes em uma folha de excel usando o seguinte script:

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

O único problema é que fora da tabela dos documentos é uma data. Como isso não está na tabela, ele não aparece e eu tenho uma lista enorme de dados sem datas. Como posso obtê-lo para importar todos os dados ou, pelo menos, a data na folha de excel também. Sem datas, os dados que tenho podem estar em qualquer ordem e inúteis para mim.

    
por Darkstar.Industries 14.09.2013 / 04:35

1 resposta

1

Seu comentário indica que o nome do arquivo inclui a data desejada. Você está acessando o nome do arquivo na variável myFile. Por que não dividir isso para obter a data e inseri-la em algum lugar desejado? Você poderia torná-lo a primeira ou última célula na tabela de destino, por exemplo.

Exemplo adicionado:

Tente adicionar essa nova linha ao seu script.

        Next c
        'new
        xl.activeworkbook.activesheet.Cells(xlRow, xlCol + 1) = myFile
        xlRow = xlRow + 1
    
por 14.09.2013 / 22:34