【发布时间】:2020-06-17 10:18:08
【问题描述】:
我正在尝试浏览一个 word 文档,并将现有的图像路径字符串替换为实际图像。当我输入硬编码的地址时,它可以工作。但是,如果我将相同的代码放入变量中,则会出现错误
错误:
运行时错误“5152”:
这不是一个有效的文件名。
请尝试以下一项或多项:
* 检查路径以确保输入正确,
* 从文件和文件夹列表中选择一个文件。
代码:
Sub InsertJPGs()
For Each singleLine In ActiveDocument.Paragraphs
Dim Value As Variant
Dim imageName As String
Options.DefaultFilePath(wdDocumentsPath) = "d:\Downloads\ReportImages\"
originalLineText = singleLine.Range.Text
lineText = singleLine.Range.Text
If InStr(lineText, ".jpg") <> 0 Then
singleLine.Range.Select
rangeText = singleLine.Range.Text
imageName = rangeText
imageName = "D:\Downloads\ReportImages\" & rangeText
'imageName = "D:\Downloads\ReportImages\PictureImportTest_ATTICSkylight#1#_img2.jpg"
Selection.InlineShapes.AddPicture FileName:= _
imageName, LinkToFile:=True, SaveWithDocument:=True
End If
If InStr(lineText, "[[[IMAGE LIST]]]") <> 0 Then
Exit For
End If
Next singleLine
End Sub
【问题讨论】:
-
是的,它是 VBA,我的错
-
在代码顶部插入
Option Explicit。声明所有变量。避免使用变体。我怀疑 VBA 是否允许您将声明放在一个循环中。不要Select任何东西。singleline是什么?一个词,一个字符,一个句子,一个段落? Word 中没有行,只有 Word 在屏幕上显示的内容。rangetext是单行的派生词。如果singleline未定义,rangetext会是什么?在将代码分配给imagename之前,在代码中插入一个中断并检查其值。 -
OP 代码错误的最可能来源是“singleLine.Range.Text”包含一个段落分隔符 - 它不能构成文件名的一部分。
标签: vba image ms-word insert inline-images