Copiando tabela do Excel para o marcador do Word usando o código VBA
Na verdade, preciso da sua ajuda para modificar esse código de macro. Eu recebi esse código de outro lugar (desculpe, esqueci o nome dele!). Basicamente, eu tenho fonte de dados de tabela da Plan1 do Excel. Preciso transferir esta tabela, mantendo a formatação, como bordas, tamanho da fonte, ajuste automático, etc. para o MS Word com o meu marcador chamado 'marcador'. Algo a observar:
A localização do marcador está no PARÁGRAFO MUITO ÚLTIMO. Eu tenho mais de 12 parágrafos no meu arquivo do Word, mas a tabela deve ser colocada no último parágrafo.Observe que o número de linhas e colunas na fonte de dados da tabela é dinâmico. Isso significa que o número de linhas e colunas não é fixo. Isso pode mudar. Meu código de macro existente funciona para isso. No entanto, excluiu completamente os parágrafos existentes. A tabela substituiu tudo no meu arquivo. Eu não sei o código de macro exato para colocar esta tabela para onde está o marcador.Agradecemos sua ajuda no item 2. Abaixo está o código:
Private Sub CommandButton1_Click()
On Error Resume Next
' FIRST GET THE ROWS COLUMNS OF A USED RANGE.
Dim iTotalRows As Integer ' GET TOTAL USED RANGE ROWS.
iTotalRows = Worksheets("sheet1").UsedRange.Rows.Count
Dim iTotalCols As Integer ' GET TOTAL COLUMNS.
iTotalCols = Worksheets("sheet1").UsedRange.Columns.Count
' WORD OBJECT.
Dim oWord As Object
Set oWord = CreateObject(Class:="Word.Application")
oWord.Visible = True
oWord.Activate
' ADD A DOCUMENT TO THE WORD OBJECT.
Dim oDoc
Set oDoc = oWord.Documents.Open("C:\Macro\samplebookmark1.docx")
' CREATE A RANGE FOR THE TABLE INSIDE WORD DOCUMENT.
Dim oRange
Set oRange = oDoc.Range
' CREATE AND DEFINE TABLE STRUCTURE USING
' THE ROWS AND COLUMNS EXTRACTED FROM EXCEL USED RANGE.
oDoc.Tables.Add oRange, iTotalRows, iTotalCols
' CREATE A TABLE OBJECT.
Dim oTable
Set oTable = oDoc.Tables(1)
oTable.Borders.Enable = True ' YES, WE WANT BORDERS.
Dim iRows, iCols As Integer
' LOOP THROUGH EACH ROW AND COLUMN TO EXTRACT DATA IN EXCEL.
For iRows = 1 To iTotalRows
For iCols = 1 To iTotalCols
Dim txt As Variant
txt = Worksheets("Sheet1").Cells(iRows, iCols)
oTable.cell(iRows, iCols).Range.Text = txt ' COPY (OR WRITE) DATA TO THE TABLE.
' BOLD HEADERS.
If Val(iRows) = 1 Then
objTable.cell(iRows, iCols).Range.Font.Bold = True
End If
Next iCols
Next iRows
Set oWord = Nothing
End Sub