Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
Image 用字符串/文本占位符替换Word文档中的图像_Image_Vba_Ms Word - Fatal编程技术网

Image 用字符串/文本占位符替换Word文档中的图像

Image 用字符串/文本占位符替换Word文档中的图像,image,vba,ms-word,Image,Vba,Ms Word,我有一个2010年Word文档和一些图像。我已经一个接一个地导出了图像。由于文档目的地的格式,我需要删除所有图像,并在图像所在的位置保留一个文本块(类似于[[Image1.jpg]]) 图像的名称实际上并不重要。我只需要把图像换成文本。我对VBA在Word中是完全陌生的 这里有一些其他代码来调整图像的大小,是否可以修改此代码以删除图像并在该位置插入一些文本 Dim oShp As Shape Dim oILShp As InlineShape For Each oShp In ActiveDo

我有一个2010年Word文档和一些图像。我已经一个接一个地导出了图像。由于文档目的地的格式,我需要删除所有图像,并在图像所在的位置保留一个文本块(类似于[[Image1.jpg]])

图像的名称实际上并不重要。我只需要把图像换成文本。我对VBA在Word中是完全陌生的

这里有一些其他代码来调整图像的大小,是否可以修改此代码以删除图像并在该位置插入一些文本

Dim oShp As Shape
Dim oILShp As InlineShape

For Each oShp In ActiveDocument.Shapes
    With oShp
        .Height = AspectHt(.Width, .Height, _
        CentimetersToPoints(11))
        .Width = CentimetersToPoints(11)
    End With
Next

For Each oILShp In ActiveDocument.InlineShapes
    With oILShp
        .Height = AspectHt(.Width, .Height, _
        CentimetersToPoints(11))
        .Width = CentimetersToPoints(11)
    End With
Next
End Sub

两种可能的解决方案仅适用于
InlineShapes
(根据可以接受的注释)

解决方案1恒定替换文本:

Sub ReplaceInlineShapes_constant_names()

Dim oILShp As InlineShape

For Each oILShp In ActiveDocument.InlineShapes

    'insert text in place where InlineShape is located
    ActiveDocument.Range(oILShp.Range.Start, oILShp.Range.End).Text = "[Image.Jpg]"
    'delete picture is not needed- it was simply replaced with text

Next
End Sub
解决方案2索引在以下范围内的替换文本:

Sub ReplaceInlineShapes_WithIndex()

Dim oILShp As InlineShape
Dim ILShpIndex As Integer
For Each oILShp In ActiveDocument.InlineShapes
    ILShpIndex = ILShpIndex + 1
    'insert text in place where InlineShape is located
    ActiveDocument.Range(oILShp.Range.Start, oILShp.Range.End).Text = _
                                "[Image" & ILShpIndex & ".Jpg]"
    'delete picture is not needed- it was simply replaced with text

Next
End Sub

问题是您也想替换
形状
,但形状可能位于文档文本中的任何位置-上方、中间、侧面等。在这种情况下,您希望将文本放置在何处?我认为好消息是,如果我们谈论的是页边空白以外的图像,则没有形状。所有图像都在边距内,并且正在使用文本扭曲,因此现有文本不应干扰实际图像。因此,让我们假设只有
InlineShapes
。还有一些问题-您想添加包含[image.jpg]信息的文本块,还是想像[image1.jpg]、[image2.jpg]等那样计算并增加每个文本块的数量?由于我是通过保存为HTML文件来获取文档的图像,因此不需要增加,这将创建一个包含图像的子文件夹。但是如果图像被改变(颜色、大小等),它会保存另一个图像。因此,文档可以有3个嵌入图像,但HTML子文件夹有6个,因为我在Word中调整了它们的大小。这些图像用于上传到Wiki,因此占位符仅用于识别图像位置,而不是文字图像文件名。谢谢,为了计算预期的图像数量,我喜欢选项2。