2015-04-18 31 views
0

我有Excel VBA可以從Excel複製並粘貼到Word。更改行間距的代碼正常工作,但更改邊距的代碼卻沒有。從Excel中更改Word.Application文檔的邊距

Option Explicit 

Sub CopyXLStoDOC() 

' **************************************************************************** 
' *  Make sure to set a reference to Microsoft Word Object Library!!! * 
' **************************************************************************** 

' Source of code: http://mrspreadsheets.com/1/post/2012/09/vba-code-snippet.html 

    'declare local variables and constants 
    Dim oDoc As Word.Document 
    Dim oWord As Word.Application 
    Dim rRange1 As Range, rRange2 As Range 
    Const sDocPath As String = "D:\Corinne\5 RALF WORK\A_RALFS Jobs\Document2.docx" 

    'set ranges to copy 
    Set rRange1 = Worksheets("4_Data Form").Range("B2:K68") 
    Set rRange2 = Worksheets("4_Transport").Range("C13:J53") 

    'open the Word document, if it doesn't exist, then create one 
    On Error Resume Next 
    Set oDoc = GetObject(sDocPath) 
    Set oWord = oDoc.Parent 
    If Err <> 0 Then 
     Set oWord = CreateObject("Word.Application") 
     Set oDoc = oWord.Documents.Add 
    End If 
    oWord.Visible = True 

    'Change Word sheet settings 

    'set Page Setup properties - Page Orientation, Page Size & Margins: 


    With oWord.ActiveDocument.PageSetup 
     .TopMargin = CentimetersToPoints(1.8) 
     .BottomMargin = CentimetersToPoints(1.8) 
     .LeftMargin = CentimetersToPoints(1.8) 
     .RightMargin = CentimetersToPoints(1.8) 
    End With 


    'copy and paste first range into Word 
    rRange1.Copy 
    oDoc.ActiveWindow.Selection.Paste 


    'copy and paste second range into Word after pagebreak 
    rRange2.Copy 
    'remove the next line if you want to paste rRange2 directly after rRange1 
    oDoc.ActiveWindow.Selection.InsertBreak Type:=wdPageBreak 
    oDoc.ActiveWindow.Selection.Paste 



    With oDoc.Content.ParagraphFormat 
     .LineSpacingRule = wdLineSpaceSingle 
     .SpaceAfter = 0 
     .SpaceAfter = False 
    End With 


    'Clean up objects 
    Set oDoc = Nothing 
    Set rRange1 = Nothing 
    Set rRange2 = Nothing 

End Sub 

回答

0

當您將Excel中的範圍複製並粘貼到Word文檔中時,它會作爲表插入。生成的表格將調整它自己的邊距以適合要粘貼的列中的數據。你可能必須抓住所得到的表格和格式的引用:

'... 

'copy and paste first range into Word 
rRange1.Copy 
oDoc.ActiveWindow.Selection.Paste 

With oDoc.Tables(1) 
    'apply table formatting here. 
End With 

'copy and paste second range into Word after pagebreak 
rRange2.Copy 
'remove the next line if you want to paste rRange2 directly after rRange1 
oDoc.ActiveWindow.Selection.InsertBreak Type:=wdPageBreak 
oDoc.ActiveWindow.Selection.Paste 

With oDoc.Tables(2) 
    'apply table formatting here. 
End With 

'... 
+0

謝謝,這將有助於我現在知道了複製/粘貼操作過程中是什麼格式的控制 – CorinneGermany