Vba 在Excel用户表单中嵌入URL中的图像

Vba 在Excel用户表单中嵌入URL中的图像,vba,image,excel,userform,Vba,Image,Excel,Userform,我是VBA的新手,一直在尝试解决这个问题,但没有任何运气 我正在尝试创建一个产品目录,并构建了一个用户表单,允许在电子表格的第一个空白行输入新产品。到目前为止还不错 然而,我陷入困境的地方是,我需要在用户表单(例如)中嵌入url中的产品图像,以便能够将文件从一台计算机移植到另一台计算机,而不会丢失已加载到电子表格中的图像 理想情况下,我根本不想将URL本身插入电子表格。当用户点击Submit时,我希望userform从online中提取图像并将其插入电子表格第一个空白行的A列中,并将其调整为特定

我是VBA的新手,一直在尝试解决这个问题,但没有任何运气

我正在尝试创建一个产品目录,并构建了一个用户表单,允许在电子表格的第一个空白行输入新产品。到目前为止还不错

然而,我陷入困境的地方是,我需要在用户表单(例如)中嵌入url中的产品图像,以便能够将文件从一台计算机移植到另一台计算机,而不会丢失已加载到电子表格中的图像

理想情况下,我根本不想将URL本身插入电子表格。当用户点击Submit时,我希望userform从online中提取图像并将其插入电子表格第一个空白行的A列中,并将其调整为特定的宽度/高度。(待定)

我发现问题有点像我需要的&&。这些问题要么没有得到回答,要么我不知道如何使它们符合我的需要


这是我现在的代码,但是它显示了一个运行时424对象错误,我显然错过了一些东西>我不确定为什么会出现运行时424对象错误。你能指定哪行代码给你错误吗

我想说这个链接有你真正需要的一切

您应该为图片声明一个对象变量

Dim myPicture As Picture 'embedded pic
每次插入图片时重复此步骤:

您需要通过设置myPicture对象变量的值将图片插入工作表。在您的情况下,可能是这样的:

Set myPicture = Pictures.Insert(txtImgUrl.Value)
然后添加一些关于如何在工作表上定位此图片的详细信息

With myPicture
    .ShapeRange.LockAspectRatio = msoFalse 'Unlock aspect ratio
    .Width = ws.Range("A" & LastRow).Width 'Picture width equal to cell width
    .Height = ws.Range("A" & LastRow).Height 'Picture height equal to cell height
    .Top = Rows(ws.Range("A" & LastRow).Row).Top 'Picture aligned to the top edge of the cell
    .Left = Columns(ws.Range("A" & LastRow).Column).Left 'Picture aligned to the left edge of the cell
End With

试试看。你好@AdamW,谢谢回复!我试图按照您的建议更新代码,但当我在设置myPicture=Pictures.Insert(txtImgUrl.Value)时运行它时,它会一直给我运行时424对象错误。我检查了拼写和所有的东西,所以没问题。我已按建议宣布了Dim。我真的不确定哪里出了问题?好吧,也许URL有问题。你检查过txtImgUrl.Value里面有什么吗?试着一步一步地使用F5,看看里面有什么。当我进入F5时,行“Set myPicture=Pictures.Insert(txtImgUrl.Value)”,myPicture=nothing&txtImgUrl=我从shutterstock输入测试的url。
With myPicture
    .ShapeRange.LockAspectRatio = msoFalse 'Unlock aspect ratio
    .Width = ws.Range("A" & LastRow).Width 'Picture width equal to cell width
    .Height = ws.Range("A" & LastRow).Height 'Picture height equal to cell height
    .Top = Rows(ws.Range("A" & LastRow).Row).Top 'Picture aligned to the top edge of the cell
    .Left = Columns(ws.Range("A" & LastRow).Column).Left 'Picture aligned to the left edge of the cell
End With