2013-05-15 46 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 
相关问题