Notifications
Clear all

Tabela no Word com critério e novo arquivo Excel

5 Posts
3 Usuários
0 Reactions
1,200 Visualizações
(@gtsalikis)
Posts: 2373
Noble Member
Topic starter
 

Pessoal, sei que o foco é o Excel, mas estou com bastante dificuldade para encontrar as informações que preciso. Por isso vim perguntar se alguém pode ajudar, mesmo que seja indicando links para consulta, já está valendo. E caso o tópico seja inadequado, podem fechar.

Tenho muitos arquivos no Word (*.docx) com +/- 150 páginas e +/- 50 tabelas cada (além de muito texto).

O que preciso: 2 macros para Word.

Macro 1:
Para cada tabela do arquivo, SE tiver uma palavra específica na célula (1, 1), e se tiver uma palavra específica na célula ( 2, 1), então, copia as linhas 1 e 2 para um novo arquivo. Percorre todas as tabelas e, ao final, terei um arquivo novo do Word só com o que preciso. Então renomeia o arquivo com o mesmo nome do primeiro e a data, por exemplo.
Depois disso, copia as informações da célula (1, 2) de cada tabela para uma pasta de trabalho do Excel. Essa planilha pode ser nova, que depois seria já formatada pela macro, ou pode ser uma já existente somente para inserir as informações. Salva a pasta de trabalho com o mesmo nome do arquivo do Word.

Macro 2:
No primeiro arquivo do Word, para cada tabela que tenha as duas condições acima (texto específico na célula (1, 1) e na célula (2, 1)), pega o código da célula (1, 2), localiza na pasta uma imagem com o mesmo código e insere na célula (2, 2).

Estou apanhando para escrever no VBA do Word, as referências de tabela, achar o fim do documento, inserir quebra de linha, criar uma pasta de trabalho do Excel. Até agora o que consegui foi navegar nas tabelas com um loop (For Each).

Obrigado a quem ajudar.

 
Postado : 23/10/2013 8:28 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

gtsalikis,

Bom Dia!

VBA para Word não é bem a minha praia, todavia, alguns poucos código que fiz para Word, vi que a melhor forma de se trabalhar com o Word é nomeando, previamente, aquilo que se quer encontrar quando estiver programando. Ou seja, no caso de tabelas: você precisa inserir indicadores paras as tabelas e para os campos de cada tabela (células) para depois, gravar (pelo gravador de macros), por exemplo, uma macro, que se desloque até o indicador que você quer. Assim, você conseguirá localizar mais facilmente o lugar onde você quer fazer alguma coisa.

 
Postado : 24/10/2013 9:11 am
(@gtsalikis)
Posts: 2373
Noble Member
Topic starter
 

Wagner, obrigado pela dica. É mais ou menos por esse caminho que eu estou seguindo. Mas está muito lento, pois encontrar as informações sobre comandos e referências e indicadores em VBA para Word é mais difícil (pelo menos pra mim), do que encontrar no VBA para excel.

Abaixo está o código que estou escrevendo:

Sub Exportar()

Dim Tbl As Table
Dim Nome As String

Nome = Replace(ActiveDocument.Name, ".docm", "")

Application.Documents.Add
    'Achar o comando para renomear o novo arquivo para "Recurso_" & Nome

Windows(1).Activate

    For Each Tbl In ActiveDocument.Tables
    
        If InStr(Tbl.Cell(1, 1).Range.Text, "Recurso") Then
            'Achar o comando para copiar a tabela para "Recurso_" & Nome
            'Achar o comando para inserir quebra de página após a tabela
        End If
    
    Next

'Achar o comando para salvar o arquivo "Recurso_" & Nome

'Achar o comando para chamar uma nova planilha do excel

'Achar o comando para usar um loop (For each) para copiar o texto de Cell(1, 2) de cada tabela do word para a planilha do Excel.
    
'Achar o comando para salvar a planilha como "Lista_" & Nome

End Sub

Está cheio de comentários do tipo "achar o comando", que é a minha maior dificuldade. :roll:

 
Postado : 24/10/2013 11:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Word não e minha praia, na realidade "temos" algum desencontros (rsrsrs).
Mas vamos tentar:

'Achar o comando para renomear o novo arquivo para "Recurso_" & Nome

Se o que deseja e renomear o arquivo ativo (o que está aberto) creio não ser possivel, somente na base do saveas ou salvar uma copia.
Para salvar como é +/- assim:

  ActiveDocument.SaveAs FileName:="ase.doc", FileFormat:=wdFormatDocument, _
        LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False

Se o objetivo e renomear algum arquivo salvo, de uma vista na instruçao NAME, similar ao do excel, com ela pode renomear no mesmo local e/ou renomear salvando em outro local.

Do Help
Exemplo da instrução Name
Este exemplo usa a instrução Name para renomear um arquivo. Para este exemplo, suponha que os diretórios ou pastas especificados já existem. No Macintosh, “HD:” é o nome da unidade padrão e as partes do nome do caminho são separadas por dois pontos em vez de barras invertidas.

Dim OldName, NewName
OldName = "ARQANT": NewName = "NOVOARQ" ' Definir nomes de arquivos.
Name OldName As NewName ' Renomear arquivo.

OldName = "C:MEUDIRARQANT": NewName = "C:SEUDIRNOVOARQ"
Name OldName As NewName ' Mover e renomear arquivo.

 
Postado : 24/10/2013 12:59 pm
(@gtsalikis)
Posts: 2373
Noble Member
Topic starter
 

Olá, Reinaldo, obrigado pela ajuda; cada comando encontrado me deixa mais perto de terminar o código.

Também confesso que VBA pra Word não me agrada nem um pouco. Porém, se conseguir escrever esse código, calculo que consigo um ganho de 5 a 20 horas em cada arquivo. Considerando-se que devo ter uns 500 arquivos, creio que vale a pena tentar, rsrs

 
Postado : 24/10/2013 7:45 pm