Notifications
Clear all

Centralizar a copia de uma tabela Excel to Word

6 Posts
2 Usuários
0 Reactions
1,825 Visualizações
 Alec
(@alec)
Posts: 5
Active Member
Topic starter
 

Bom dia.

Antes de mais nada sou um pouco leigo em VBA, porém entendo de programão orientada a objeto. Criei uma macro em VBA para copiar uma planilha, em anexo neste post, para uma determinada referência em um arquivo no word. Porém eu quero também centralizar a planilha. Quando o eu "colo" ela no word ela vai formatada a esquerda.
Li a respeito de alguns métodos de colagem como o ParagraphFormat.Alignment ou Rows.alignment , porém não consigo usar, na vdd eu não sei.
Acredito eu o método "rows.alignment" funciona porém quando eu colo no word eu perco a referência na tabela, ela não fica mais selecionada.

Código - Copia no excel e cola no word:

Sub Botão_127()

Dim ws As Worksheet

'Define o nome da ABA
Set ws = ThisWorkbook.Sheets("Dados para o relatório")

'Define o Objeto Word
Dim OBJWORD As Object

'Define o objeto de aplicacao WORD
Dim Doc As Word.Document

'Cria o oobjeto para abertura posteriormente
Set OBJWORD = CreateObject("Word.Application")

'Exibe a janela do word
OBJWORD.Visible = True

'Inserindo documento
Set Doc = OBJWORD.Documents.Open("C:UsersLABLUXNOVO3DesktopTestes Macro AlecRelatorio teste 127.docx")

'DADOS PARA O RELATÓRIO

        'Copia Todas as Celulas
        ws.Range("C9:L20").Copy

        'Procurou a referência Dados de Planilha
        With Doc
            .Application.Selection.Find.Text = "#DdRelat"
            .Application.Selection.Find.Execute
            .Application.Selection.PasteExcelTable False, False, False
        End With
 
Postado : 24/11/2017 7:47 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Já tentou algo assim:

ActiveDocument.Tables(1).Rows.Alignment = wdAlignRowCenter

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/11/2017 7:57 am
 Alec
(@alec)
Posts: 5
Active Member
Topic starter
 

Bom dia Alexandre.

Então, para este método eu preciso declarar o objeto?
Não sei se esta correto a maneira que usei.

Eu usei deste jeito:

 'Copia Todas as Celulas
        ws.Range("C9:L20").Copy

        'Procurou a referência Dados de Planilha
        With Doc
            .Application.Selection.Find.Text = "#DdRelat"
            .Application.Selection.Find.Execute
            .Application.Selection.PasteExcelTable False, False, False
        End With
    
ActiveDocument.Tables(1).Rows.Alignment = wdAlignRowCenter

Se estiver correto, nada aconteceu.

 
Postado : 24/11/2017 8:13 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Olha eu não sei é isso que você precisa!

Sub Botão_127()
Dim ws As Worksheet
'Define o nome da ABA
Set ws = ThisWorkbook.Sheets("Dados para o relatório")
'Define o Objeto Word
Dim OBJWORD As Object
'Define o objeto de aplicacao WORD
Dim Doc As Word.Document
'Cria o oobjeto para abertura posteriormente
Set OBJWORD = CreateObject("Word.Application")
'Exibe a janela do word
OBJWORD.Visible = True
'Inserindo documento
Set Doc = OBJWORD.Documents.Open("C:UsersAdministradorDownloadsalevba.docx")
'DADOS PARA O RELATÓRIO
'Copia Todas as Celulas
ws.Range("C9:L20").Copy
'Procurou a referência Dados de Planilha
    With Doc
        .Application.Selection.Find.Text = "#DdRelat"
        .Application.Selection.Find.Execute
        .Application.Selection.PasteExcelTable False, False, False
        .Tables(1).Rows.Alignment = wdAlignRowCenter 'Olha essa linha (mas eu não sei se é isso que você pretende)
    End With
End Sub

Para mais veja:
http://vba.relief.jp/word-macro-align-a ... -document/
http://itpscan.info/blog/excel/VBA-write-to-word.php
https://msdn.microsoft.com/en-us/vba/wo ... perty-word
Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/11/2017 12:59 pm
 Alec
(@alec)
Posts: 5
Active Member
Topic starter
 

Bom dia Alexandre!

Desculpe a demora, só tenho acesso à planilha em meu trabalho.
Resolveu o meu problema. No caso ".tables(1)..." se refere à primeira tabela em meu documento.
Não teria alguma forma de eu selecionar a tabela anterior ao cursor?
Por que desta maneira não preciso me ter uma referência relativa à posição da tabela no documento.
Mesmo assim, sou grato!

 
Postado : 27/11/2017 5:37 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Não teria alguma forma de eu selecionar a tabela anterior ao cursor?

Desculpa mas eu não estou entendendo sua dúvida!

.Tables(1).Rows.Alignment = wdAlignRowCenter

Neste momento a linha acima, referencia se a tabela de índice 1.

Mas de qualquer forma, eu não sei o que você realmente pretende fazer...

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 27/11/2017 7:21 am