Excelから新しく開いたWORDドキュメントに範囲をコピーし、行間を制御することができます(いくつかのヘルプCopy range from excel to word - set paragraph spacing to zeroのおかげで)。複数の範囲をExcelからWordにコピーし、行間を制御する
しかし、開かれた既存の単語ファイル(document.docx)内の複数の範囲を複数のブックマークにコピーすると、行間を制御できません。このコードは、記事の最後にあります。
このコードは、複数のシートを含むExcelファイルで使用できます。 1枚は構成シートです。これは、テーブルを含むExcelシートの名前(範囲 "名前")を含み、これをブックマーク名にword(範囲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
は、ブックマークを参照する何かによってブックマーク(tabName)のtabnameを置き換えると、コードが正常に動作します。例えば。 bookName(bookName = ListExcelBookmarks.Cells(rep、1).Value)による。 – koteletje
あなたは大歓迎です – user3598756