Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Vba 在单词标题中插入文本而不是图片_Vba_Ms Word - Fatal编程技术网

Vba 在单词标题中插入文本而不是图片

Vba 在单词标题中插入文本而不是图片,vba,ms-word,Vba,Ms Word,我有几个带有标题的Word文档。在这个标题中有一个三列的小表格。 在第一列是一个小标志。 在每个文档中,我都会更改标题内左栏中的徽标。 现在我想用一些简单的文字来替换Logo,但我无法让它工作。 以下是我更换徽标图片的代码: Sub AutoOpen() text = "Text to replace" Dim dd1 As Document: Set dd1 = ActiveDocument Dim rng1 As Range, seC As Section, an(2

我有几个带有标题的Word文档。在这个标题中有一个三列的小表格。 在第一列是一个小标志。 在每个文档中,我都会更改标题内左栏中的徽标。 现在我想用一些简单的文字来替换Logo,但我无法让它工作。 以下是我更换徽标图片的代码:

Sub AutoOpen()

text = "Text to replace"

Dim dd1 As Document: Set dd1 = ActiveDocument
Dim rng1 As Range, seC As Section, an(2) As Long
Dim rngO As Range, rngAN As Range
Dim strToPict As String

strToPict = "C:\Logo.png"

For Each rngO In dd1.StoryRanges

ActiveDocument.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader

If rngO.StoryType = wdEvenPagesHeaderStory Then
Set rng1 = rngO.Duplicate
For Each seC In rng1.Sections
    an(0) = seC.Headers(1).Range.InlineShapes(1).Height
    an(1) = seC.Headers(1).Range.InlineShapes(1).Width
    Set rngAN = seC.Headers(1).Range.InlineShapes(1).Range.Duplicate

    seC.Headers(1).Range.InlineShapes(1).Delete
    seC.Headers(1).Range.InlineShapes.AddPicture FileName:=strToPict, _
    LinkToFile:=False, SaveWithDocument:=True, Range:=rngAN

        With seC.Headers(1).Range.InlineShapes(1)
        .Height = 25

        End With
如何用文本替换现有徽标

非常感谢

试试这个:

Sub ReplaceLogoWithText()
   Dim dd1 As Document: Set dd1 = ActiveDocument

   Dim seC As Section

   'If rngO.StoryType = wdEvenPagesHeaderStory Then
   For Each seC In dd1.Sections
      With seC.Headers(wdHeaderFooterEvenPages)
         If .LinkToPrevious = False Then
            With .Range.Tables(1).Cell(1, 1).Range
               If .InlineShapes.Count = 1 Then .InlineShapes(1).Delete
               .Text = "Whatever text you want to insert"
            End With
         End If
      End With
   Next seC
    
End Sub

你好谢谢你的回答,但是你的代码不起作用。问题:with.Range.Tables(1)。单元格(1,1)。Range找不到table@0x01_PH-您的问题表明您的偶数页眉中有一个表格。显然你没有。您需要检查文档并找出三个标题中的哪一个包含表,然后使用seC.header(WDHeaderFooterEventPages)编辑行
,以指向正确的标题。对不起,我是vba中的noob。这很好用。我只是将WDHeaderFooterEventPages更改为WDHeaderFooterPerprimary,它就可以工作了。非常感谢你。