Ограниченный диапазон при копировании из Excel VBA в Word - PullRequest
0 голосов
/ 27 мая 2019

Я занимаюсь разработкой макроса, который переводит диапазон ячеек из Excel в слово Bookmark. У меня проблема в том, что не весь выбранный диапазон передается. Не уверен, есть ли предел того, насколько большой может быть диапазон? Также хотите, чтобы перенесенный контент автоматически соответствовал полям текстовых документов?

Код, который у меня есть на данный момент:

'Name of the existing Word doc.
Const stWordReport As String = "Exporting a Table to a Word Document 2.docx"    

'Word objects.
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdbmRange As Word.Range

'Excel objects.
Dim wbBook As Workbook
Dim wsSheet As Worksheet
Dim rnReport As Range
'Dim Table1 As Range

Dim coluna As Integer
coluna = Worksheets("Planilha1").Cells(1, Worksheets("Planilha1").Columns.Count).End(xlToLeft).Column
Table1 = Worksheets("Planilha1").Range(Cells(4, 4), Cells(16, coluna))

'Initialize the Excel objects.
Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Planilha1")
Set rnReport = wsSheet.Range("Table1")

'Initialize the Word objects.
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\" & stWordReport)
Set wdbmRange = wdDoc.Bookmarks("Report").Range

'Turn off screen updating.
Application.ScreenUpdating = False

'Copy the report to the clipboard.
rnReport.Copy

'Select the range defined by the "Report" bookmark and paste in the report from clipboard.
With wdbmRange
    .Select
    .PasteSpecial Link:=False, _
                  DataType:=wdPasteMetafilePicture, _
                  Placement:=wdInLine, _
                  DisplayAsIcon:=False
End With

'Save and close the Word doc.
With wdDoc
    .Save
    .Close
End With

'Quit Word.
wdApp.Quit

'Null out your variables.
Set wdbmRange = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing

'Clear out the clipboard, and turn screen updating back on.
With Application
    .CutCopyMode = False
    .ScreenUpdating = True
End With

MsgBox "The report has successfully been " & vbNewLine & _
       "transferred to " & stWordReport, vbInformation

Я ожидаю, что содержимое документа word будет иметь тот же формат, что и Excel, и будет размещено на странице.

1 Ответ

0 голосов
/ 28 мая 2019

Максимальное количество столбцов в Word - 63; нет установленного ограничения строки. В любом случае, поскольку вы вставляете то, что скопировали как рисунок, ограничения таблицы не имеют значения. Я подозреваю, что настоящая проблема в том, как вы определяете колуну. Попробуйте:

'Initialize the Excel objects.
Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Planilha1")
Set rnReport = wsSheet.Range("Table1")

coluna = wsSheet.UsedRange.Cells.SpecialCells(xlCellTypeLastCell).Column
Table1 = wsSheet.Range(Cells(4, 4), Cells(16, coluna))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...