【问题标题】:Excel to Word (Text won't Justify) VBAExcel 到 Word(文本不对齐)VBA
【发布时间】:2018-07-11 16:40:37
【问题描述】:

所以总结一下,我正在创建一个 Word 文档并将一个 Excel 表格粘贴到 Word 文档中。我现在面临的唯一问题是 Word 文档中的文本左对齐,但我希望它对齐。但是,无论我做什么,我似乎都无法证明它的合理性,除非我在 Word 上手动执行。

请在我的代码下方找到所有不相关的内容。我是一个 VBA 菜鸟,所以我一直在做的只是复制粘贴并尝试使其适应我的需要。到目前为止,除了证明部分,一切正常。

Dim obj As Object
Set obj = GetObject(, "Word.Application")
If obj Is Nothing Then
    Set obj = CreateObject("Word.Application")
End If
obj.Visible = True

Set objDoc = obj.Documents.Add
a = Sheets("Print").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Print").Range("A1:F" & a).Copy
objDoc.Range.PasteExcelTable False, False, True
objDoc.Activate
objDoc.Tables(1).AutoFitBehavior wdAutoFitContent
Application.CutCopyMode = False
 On Error GoTo 0

With objDoc.Tables(1)
    .PreferredWidth = 505
End With

With objDoc.PageSetup
    .TopMargin = Application.InchesToPoints(0.71)
    .BottomMargin = Application.InchesToPoints(0.71)
    .LeftMargin = Application.InchesToPoints(0.71)
    .RightMargin = Application.InchesToPoints(0.71)
End With

With objDoc
    .Range.ParagraphFormat.LineSpacingRule = wdLineSpace1pt5
    'set paragraph spacing after to 0
    .Range.ParagraphFormat.SpaceAfter = 10
    .Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
 End With

Sheets("DCN Inputs").Select

End Sub

【问题讨论】:

  • 你想证明表格中的内容,还是别的什么?
  • 可能不相关:您有一个On Error Goto 0。这意味着“停止所有错误”,并且由于这是默认设置,因此不需要该行 - 除非您的代码前面有一个On Error Resume Next,如果你这样做了 - 在此期间摆脱它故障排除!哦,顺便欢迎您! :-)(另请参阅tour!)
  • 嗨@TimWilliams 是的,我想证明表格中的内容是正确的:) 我已经尝试了 objDoc.Tables(1) 上的对齐代码,但它也没有用:(
  • @ashleedawg 感谢您的热烈欢迎!会修正错误的东西:)
  • @CindyMeister 是的,我已经尝试过了,表格不合理

标签: vba excel ms-word text-alignment


【解决方案1】:

问题是您使用了 Word 枚举值 wdAlignParagraphJustify,但您没有对 Word 对象库的引用。 Excel VBA 在没有特定引用(工具/引用)的情况下无法识别 Word 对象模型的这个成员。

如果您想使用后期绑定,就像您在整个代码中使用的那样,那么您需要替换枚举的数值,在本例中为3。例如:

objDoc.Range.PasteExcelTable False, False, True
objDoc.Activate 
Set objTable = objDoc.Tables(1)
With objTable
    .AutoFitBehavior wdAutoFitContent
    .PreferredWidth = 505
    .Range.ParagraphFormat.Alignment = 3 'wdAlignParagraphJustify
End With
Application.CutCopyMode = False

【讨论】:

  • 谢谢好心的VBA女神,好用TT!我还有一个问题,使用当前代码,当我粘贴到 word 时字体颜色不跟随,是否可以更改?或者我只需要为表格的第一个单元格着色。
  • 很高兴为您工作@Walter :-) 既然您是该网站的新手,有几个提示:1)规则是一个问题/问题 - 这是一种问答格式,所以其他人很难找到/从中受益的任何后续行动或多个问题。此外,一个人可能无法回答另一个问题。因此,请提出一个新问题,添加代码、详细信息等。 2) 在 Stack Overflow 上表示感谢的公认方式是单击最能回答您的问题的贡献左侧的复选标记。之后,当您获得声望点时,您还可以投票所有您认为有帮助的贡献....
  • ...并否决您认为错误或“垃圾”的任何内容。标记答案和投票有助于其他人认识到什么是“有效的”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
相关资源
最近更新 更多