2013-05-15 48 views
0

我對VBA非常陌生,我的第一個代碼是複製Excel表格並將其粘貼到Word中。它的工作,但問題是,所有表被粘貼左對齊,我想它中心對齊。有誰知道如何去做?要在這裏發佈我的代碼:如何將所有表格放在Word中,來自Excel - VBA

Sub excel2word() 

Dim objWord As New Word.Application 
'Copy the range Which you want to paste in a New Word Document 
Set objWord = CreateObject("Word.Application") 


For i = 2 To 200 
With objWord 
    .Documents.Add  
    Sheets("Plan2").Select 
    Range("A" & i).Copy 
    .Selection.PasteAndFormat (wdFormatPlainText) 
    .Selection.TypeParagraph 

    Sheets("Teste").Select   
    Range(Cells((26 * (i - 1) + 1), 1).Address, Cells(((26 * (i - 1) + 7)), 3).Address).Copy 
    .Selection.PasteExcelTable True, False, False 
    .Visible = True 
    .Selection.TypeParagraph 

    Sheets("Teste").Select 
    Range(Cells((26 * (i - 1) + 8), 1).Address, Cells(((26 * (i - 1) + 16)), 3).Address).Copy 
    .Selection.PasteExcelTable True, False, False 
    .Visible = True 
    .Selection.TypeParagraph 

    Sheets("Teste").Select 
    Range(Cells((26 * (i - 1) + 17), 1).Address, Cells(((26 * (i - 1) + 25)), 3).Address).Copy 
    .Selection.PasteExcelTable True, False, False 
    .Visible = True 
    .Selection.TypeParagraph 

End With 
Next 


End Sub 

正如你可以看到,這段代碼複製粘貼在一個互動3個表,即總共600桌!所以,一個接一個地中心變得非常無聊。

任何幫助非常感謝!

+0

你想中心網頁上的表格,或在細胞中心的數據? – Christina

+0

居中! – Luiz

+0

奇怪的是,正如你可能已經意識到的那樣,Word似乎並沒有提供一個VBA方法來對齊整個表格。實際上,如果打開宏錄製器然後使用對齊,則會出現與未對齊宏錄製器時對齊的行爲。但是,您可以應用提供此對齊方式的表格樣式。在Word中創建一個樣式是您的選擇嗎?如果是這樣,我想我可以提供代碼。 (我認爲你需要在VBA之外創建樣式,然後使用VBA來應用它)。 – Christina

回答

0

所以,我要試着解釋我將如何做這個的第一部分。第一部分是VBA之外的部分。在Word中,您可以創建或修改表格樣式。既然你說你正在使用現有的樣式,你可以修改它們以使表格居中。假設您使用Light Shading表格樣式(這是我從功能區展開表格樣式時看到的第一個表格樣式)。請執行以下操作:

  • 在Word文檔中,創建一個基本表。您只需從「插入」選項卡中單擊「插入表格」並插入一個包含一對單元格的表格。
  • 選擇表格。您應該看到功能區上出現「表格工具」選項卡。點擊設計。
  • 您應該在功能區中心看到一些表格樣式。找到你需要的一個(如果需要,擴大下拉菜單),然後右鍵單擊。
  • 從上下文菜單中選擇「修改表格樣式」。
  • 修改樣式對話框將彈出。
  • 點擊格式,然後點擊表格屬性。在「表格屬性」對話框中的「表格」選項卡下,查找「對齊」。選擇中心,然後單擊確定。再次單擊確定保存更改。

現在,當您將該表格樣式應用於標準表格時,該表格將居中。

第二部分,如有必要,將以編程方式應用該風格。我現在沒有時間寫這部分,但我可以稍後編輯它。不過,這也許會成爲你的起點。

+0

哇,非常感謝,要測試它!但我現在很匆忙!但非常感謝 – Luiz

0

如果有人仍然需要它:

ActiveDocument.Tables(1).Rows.Alignment = wdAlignRowCenter 
相關問題