0
我設法從excel複製一個範圍到一個新打開的WORD文檔並控制行距(感謝Copy range from excel to word - set paragraph spacing to zero)。從excel複製多個範圍到word並控制行間距
但是,當我將多個範圍複製到打開的和現有的word文件(document.docx)中的多個書籤時,我無法控制行間距。代碼可以在帖子結尾處找到。
此代碼適用於具有多個工作表的Excel文件。一張是配置表。它包含包含表(位於「名稱」範圍內)的Excel工作表的名稱,並將其鏈接到單詞中的書籤名稱(範圍爲BookmarkExcel「)」。
我想這個問題是這塊代碼:
Set wdTable = myDoc.Tables(myDoc.Tables.Count)
wdTable.Range.ParagraphFormat.SpaceAfter = 0
我試過各種變化(例如,通過代表,1更換myDoc.Tables.Count,...),但沒有設法控制線條間距。我做錯了什麼?
編輯:我發現原因:該文件包含已經有一些表(我複製和粘貼的前後)導致行間距的代碼不起作用。因此,如何適應我的代碼,使其適用於已包含表格的文檔?
Sub ExcelTablesToWord()
Dim tbl As Range
Dim WordApp As Word.Application
Dim myDoc As Word.Document
Dim WordTable As Word.Table
Sheets("Configuration").Select
n = ActiveSheet.UsedRange.Rows.Count
Set ListTables = Range("Name")
Set ListExcelBookmarks = Range("BookmarkExcel")
Set WordApp = GetObject(class:="Word.Application")
WordApp.Visible = True
Set myDoc = WordApp.Documents("document.docx")
For rep = 2 To n
SheetName = ListTables.Cells(rep, 1).Value
On Error Resume Next
Set existing = Sheets(SheetName)
existing.Select 'added this
lastColumn = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
If ListExcelBookmarks.Cells(rep, 1).Value <> "" Then
Set tbl = Range(Cells(1, 1), Cells(LastRow, lastColumn))
tbl.Copy
myDoc.Bookmarks(ListExcelBookmarks.Cells(rep, 1).Value).Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
Dim wdTable As Table
Set wdTable = myDoc.Tables(myDoc.Tables.Count)
wdTable.Range.ParagraphFormat.SpaceAfter = 0
End If
Next rep
End Sub
非常感謝,代碼工作正常,只要我用Bookmarks(tabName)中的tabname替換引用書籤的東西即可。例如。通過bookName(bookName = ListExcelBookmarks.Cells(rep,1).Value)。 – koteletje
不客氣 – user3598756