如何将URL添加为Word文档的形状?



我正试图将通过API (API . qrserver.com)生成的QR码放入使用VBA的Word表中。由于某些原因,使用"DisplayBarcode"是不可能的。

这是对API的调用:
sURL = "https://api.qrserver.com/v1/create-qr-code/?data=" & UTF8_URL_Encode(VBA.Replace(QR_Value, " ", "+")) & "&size=240x240"

它似乎有效。我尝试了GET命令并检索了一个字符串,在我解释时,该字符串包含PNG格式的QR码。

当我尝试使用

将图片添加为Shape时
Set objGrafik = ActiveDocument.Shapes.AddPicture(sURL, True)

使用

呼叫失败

运行时错误5152

据我所知,AddPicture方法需要一个纯文件名,并且不允许使用以下任何字符:/|?*<>:"

我还尝试将GET结果存储在对象变量中:

Set oQRCode = http.responseText

但是这里我得到了错误

对象需要

如何使URL分配工作或将结果存储为图片?

我不确定你可以插入一些东西到Word(例如Shapes.AddPicture,InlineShapes.AddPicture,Range.InsertFile等)的任何方式都会让你从任何旧的https Url中做到这一点,尽管它似乎适用于某些Url。

然而,当它发生时,您可以使用INCLUDEPICTURE字段来完成它。例如

{ INCLUDEPICTURE https://api.qrserver.com/v1/create-qr-code/?data=Test&size=100x100 }

这里有一些VBA示例来完成

Sub insertqrcode()
Dim sUrl As String
Dim f As Word.Field
Dim r1 As Word.Range
Dim r2 As Word.Range
' This is just a test - plug your own Url in.
sUrl = "https://api.qrserver.com/v1/create-qr-code/?data=abcdef&size=100x100"
' Pick an empty test cell in a table
Set r1 = ActiveDocument.Tables(1).Cell(5, 4).Range
' We have to remove the end of cell character to add the field to the range
' Simplify
Set r2 = r1.Duplicate
r2.Collapse WdCollapseDirection.wdCollapseStart
Set f = r2.Fields.Add(r2, WdFieldType.wdFieldIncludePicture, sUrl, False)
' If you don't want the field code any more, do this
f.Unlink
' check that we have a new inline shape that we could work with more
' if necessary
Debug.Print r1.InlineShapes.count
Set f = Nothing
Set r2 = Nothing
Set r1 = Nothing
End Sub

使用INCLUDEPICTURE即使在当前版本的Mac Word上也有效(尽管我还没有在Mac上测试过VBA的特定部分)。

我所见过的唯一另一种方法是使用WinHTTP从web服务获取结果,ADODB将其流式传输到本地磁盘文件,然后AddPicture或其他任何内容来包含该文件,因此更复杂,也无法在Mac上工作。

相关内容

  • 没有找到相关文章

最新更新