gpt4 book ai didi

excel - 如何根据另一个单元格的显示值将图像插入到单元格中?

转载 作者:行者123 更新时间:2023-12-04 20:21:18 25 4
gpt4 key购买 nike

我已经制作了一个零件路由器并正在尝试对其进行设置,以便根据单元格 B3 的显示值,它将从特定文件夹中获取 .jpg 并将其粘贴到具有特定尺寸的单元格中。
目标是让图像填充其插入的单元格下方打印页面上的剩余可用空间。
我已经浏览了一段时间试图找到解决方案,但似乎我的请求太简单了,或者我对语言太不熟悉而无法正确提问。
任何和所有的帮助表示赞赏。作为引用,我将包括我的工作表的图像。
Parts Router

最佳答案

我们可以使用 VBA 来做到这一点。
要打开 VBA 编辑器,请点击 Alt+F11打开电子表格:
VBA Editor
现在我们希望在单元格更改时运行此代码,因此我们通过双击在 VBA 编辑器中选择我们的工作表
2
然后我们选择WorksheetChange从两个下拉列表中:
i3
这将创建一个运行 whenever any cell on the worksheet changes 的函数.
worksheet change event
我们希望我们的代码在单元格 B3 时运行变化,所以我们首先确保它确实发生了。
我们可以这样做:

If Not Intersect(Target,[B3]) Is Nothing Then
Target是发生了什么变化 - 它可以是一个单元格,也可以是多个单元格。
通过使用 Intersect , 我们只检查 B3是改变的细胞之一。
插入图像 we can use this code:
With ActiveSheet.Pictures.Insert(URL)
With .ShapeRange
.LockAspectRatio = msoTrue
.Width = 75
.Height = 100
End With
.Left = Cells(1, 2).Left
.Top = Cells(1, 2).Top
.Placement = 1
.PrintObject = True
End With
在上面的代码中,“URL”是指图像的路径。
如果图片和电子表格在同一目录下,我们可以使用 ThisWorkbook.Path & "\" & [B3] & ".jpg"这将采用工作簿路径,添加必要的 \到最后,再结合 B3.jpg .
在您的示例图像中,这将变为 C:\WhateverYourPathIs\BS-01-02-03-A-01.jpg浏览其余代码, LockAspectRatio确保图像不会奇怪地拉伸(stretch)和调整大小以适应任何尺寸。如果我们愿意,我们可以决定可以拉伸(stretch)图像以填充所有剩余空间,我们可以将其设置为 msoFalse ( which is 0 )
使用 .Left.Top ,我们可以设置图像的左上角位置。
使用 .Width.Height ,我们也可以改变这些维度。
至于它“填充剩余空间”的要求,可能需要确定那个空间是什么(以及它是否会改变)。
可能还需要选择是否要将其拉伸(stretch)以填充空间。
因此,将它们放在一起并让您了解如何完成这一切:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B3]) Is Nothing Then
With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & [B3] & ".png")
With .ShapeRange
.LockAspectRatio = msoTrue
.Width = 500
'.Height = 500 'Not necessary when locking aspect ratio
End With
.Left = [B3].Left
.Top = [B3].Top + [B3].Height
.Placement = 1
.PrintObject = True
End With
End If
End Sub
请记住 B3在这种情况下,由似乎在不同工作表上更改的公式更改,因此请确保在需要的位置捕获更改(工作表更改事件仅在手动用户更改时触发)。
结果(将单元格 B3 更改为 sohelp1 后,您链接的图像与我的电子表格保存在同一目录中):
final
最后的几点说明:
如果单元格再次更改,您可能需要删除图像。
如果工作表上只有一张图像,您可以添加行 ActiveSheet.Pictures.Delete在插入新图片之前添加到代码中。
您还需要确保如果实际更改发生在您相应地引用工作表的不同工作表上。这只是意味着改变 ActiveSheet到您希望这些更改发生在任何工作表上(并跳过简写 [B3] 类型单元格引用 - 您可以使用 Sheet1.Range("B3") 来引用 Sheet1 上的单元格(作为示例))。
如果您有任何问题,请随时告诉我。

关于excel - 如何根据另一个单元格的显示值将图像插入到单元格中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71945981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com