Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Excel在单独的子文档中更改Word文档中的默认样式_Excel_Vba_Ms Word - Fatal编程技术网

使用Excel在单独的子文档中更改Word文档中的默认样式

使用Excel在单独的子文档中更改Word文档中的默认样式,excel,vba,ms-word,Excel,Vba,Ms Word,在Excel控制的word文档中,我想对使用的默认样式进行细微的更改。当word文档已打开时,使用以下代码可执行此操作: Private Sub basic_syle() Dim objWord As Word.Application Dim objSelection As Word.selection Set objWord = GetObject(, "Word.application") Set objSelection = objWord.selecti

在Excel控制的word文档中,我想对使用的默认样式进行细微的更改。当word文档已打开时,使用以下代码可执行此操作:

Private Sub basic_syle()
    Dim objWord As Word.Application
    Dim objSelection As Word.selection

    Set objWord = GetObject(, "Word.application")
    Set objSelection = objWord.selection

    adjust_obj_style
End Sub

Sub adjust_obj_style()
    ActiveDocument.Styles("Heading 1").ParagraphFormat.PageBreakBefore = False
End Sub
但是,如果我想让Excel创建word文档并调整样式,则不会更改样式

Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objSelection As Word.selection

Private Sub basic_syle()
    Set objWord = CreateObject("Word.Application")
    Set objDoc = objWord.Documents.Add
    Set objSelection = objWord.selection

    objWord.Visible = True

    adjust_obj_style
End Sub
虽然我认为这与activeDocument类有关,但我还没有找到正确的解决方案。激活文档对象不是解决方案


您需要重新定义子系统:

Sub adjust_obj_style(doc as Object)
然后将该文件传递给sub:

adjust_obj_style objDoc
然后使用该变量代替ActiveDocument,如下所示:

doc.Styles("Heading 1").ParagraphFormat.PageBreakBefore = False

谢谢布拉克斯,我发誓我已经尝试过类似的东西了。感谢您的快速响应。此外,除非出于某种原因需要在其他地方使用变量,否则您不需要在sub之外对变量进行调暗。在我的示例中,我使用另一个sub将文本添加到word文档中。因此,变量在sub之外声明。这导致传递的变量更少。无论如何,谢谢你的点评。