1

我是 VBA 的新手,但仍然很挣扎。

我在一个用相对“.\logos\”目录的内容的文件名填充的useform 上有一个列表对象。我想在名为 的书签中插入图片bmLogo,但我编写的代码(见下文)并不能解决问题。

If ListLogo <> Null Then
    ActiveDocument.Bookmarks("bmLogo").Range _
        .InlineShapes.AddPicture FileName:=ThisDocument.Path & "\logos\" & ListLogo
End If

有小费吗?另外,如果我可以设置一个高度并在不改变纵横比的情况下调整图像比例,那将非常有用!

谢谢,
路易斯

编辑1:对,所以,bmLogo 是书签的正确名称,所以这不是问题。我只是使用了一个 msgbox 来显示 '"path:" & ThisDocument.Path & "\logos\" & ListLogo',它看起来像是正确的路径。我正在使用 ThisDocument.Path 因为我希望它是相对的,因此文档更便携。我想我会暂时尝试一条绝对路径,看看是否可行,如果没有别的,它应该暗示错误不在哪里。

编辑 2:它适用于 IF 语句之外的绝对路径,当我得到一个 msgbox 来打印绝对路径和相对路径时,它们是相同的。注释掉 IF 语句后,找到相关方法。我很高兴它现在可以工作,但谁能告诉 IF 有什么问题?

编辑3:事实证明,我检查列表框中是否已选择某些内容的方法根本不起作用。相反,我将遍历列表中的每个项目并检查是否选择了该项目。这是一种非常粗略的方法,但在我找到更好的方法之前它会起作用。

4

1 回答 1

3

作为记录,这在 2010 年对我有用,所以我猜您的文件名 ( ListLogo)、书签 ( bmLogo) 或文件路径 ( ThisDocument.Path) 有问题。

1:

文件名是否符合您期望的格式?它只是文件名还是完整路径?它是否包含正确的扩展名?

2:

您的文档中是否存在书签?

3:

ThisDocument指的是你认为它的作用吗?下面的简化对我有用。

ActiveDocument.Bookmarks("TEST").Range.InlineShapes.AddPicture FileName:="P:\test.png"

我将.docx文件保存在我的P:\路径中,因此以下内容应该有效:

ActiveDocument.Bookmarks("TEST").Range.InlineShapes.AddPicture FileName:=ThisDocument.Path & "\test.png"

但是,返回的路径是我的 AppData 目录。当我观察这个ThisDocument对象时,我发现它实际上指向了Normal.dotm模板,当我录制一个宏来测试它时,代码就是在这个模板中创建的。


您能否验证这三个项目中的每一个是否正确以及您的期望?

  • 列表徽标
  • bm徽标
  • 这个文件
于 2013-04-22T17:02:35.243 回答