VBA 如何将图像文件路径作为超链接提交到数据库

VBA How to Submit an Image filepath to database as Hyperlink

在单击提交命令按钮时寻求有关将图像文件路径字符串转换为超链接的正确语法的帮助。

我已成功将字符串提交到正确的行和列中,但无法弄清楚 hyperlinks.add 的放置位置。下面是我将字符串提交到数据库的代码。

是否要将 hyperlinks.add 方法添加到文件名 1 和 2 的行中?

filepath1 = image1控件放置filepath的文本框

filepath1 = image2 控件放置文件路径的文本框。

Private Sub CommandButton1_Click()
Dim TargetRow As Integer
TargetRow = Sheets("Engine").Range("B3").Value + 1 
Sheets("Database").Range("Data_Start").Offset(TargetRow, 1) = orderid
Sheets("Database").Range("Data_Start").Offset(TargetRow, 2) = ComboBox1
Sheets("Database").Range("Data_Start").Offset(TargetRow, 3) = ComboBox2
Sheets("Database").Range("Data_Start").Offset(TargetRow, 4) = ComboBox3
Sheets("Database").Range("Data_Start").Offset(TargetRow, 5) = TextBox2
Sheets("Database").Range("Data_Start").Offset(TargetRow, 6) = TextBox3
Sheets("Database").Range("Data_Start").Offset(TargetRow, 7) = filepath1
Sheets("Database").Range("Data_Start").Offset(TargetRow, 8) = filepath2
Unload UserForm2
End Sub

非常感谢 四月

是的,您可以通过两种方式进行:

1 - 您在 Hyperlink.Add 函数中使用范围

'Use named range and use the offset directly in the Hyperlink.Add function
Sheets("Database").Hyperlinks.Add Anchor:=Sheets("Database").Range("Data_Start").Offset(TargetRow, 7), _
Address:=filepath1

2 - 您将范围定义为变量 (linked_path) 并在 Hyperlink.Add 函数

中使用该变量
'Use named range and a variable in the Hyperlink.Add function
Set linked_path = Sheets("Database").Range("Data_Start").Offset(TargetRow, 8)

Sheets("Database").Hyperlinks.Add Anchor:=linked_path, _
Address:=filepath2


测试代码

Private Sub CommandButton1_Click()
Dim TargetRow As Long
Dim filepath1 As String
Dim filepath2 As String
Dim linked_path As Variant
Dim orderid As Long
orderid = 1 'Test value for orderid

filepath1 = "G:\test\Stack Overflow\Book7.xlsx"
filepath2 = "G:\test\Stack Overflow\Book6.xlsx"

TargetRow = Sheets("Engine").Range("B3").Value + 1
Sheets("Database").Range("E3").Offset(TargetRow, 1) = orderid
Sheets("Database").Range("Data_Start").Offset(TargetRow, 1) = orderid
'.etc

'####### Hyperlink versions #######
'Data_Start is named range in Cell "C3". Cell C3 is named "Data_Start"

'Define static range (E3:E4)
Sheets("Database").Hyperlinks.Add Anchor:=Sheets("Database").Range("E3:E4").Offset(TargetRow, 8), _
 Address:=filepath2

'Use named range and use the offset directly in the Hyperlink.Add function
Sheets("Database").Hyperlinks.Add Anchor:=Sheets("Database").Range("Data_Start").Offset(TargetRow, 7), _
 Address:=filepath1

'Use named range and a variable in the Hyperlink.Add function
Set linked_path = Sheets("Database").Range("Data_Start").Offset(TargetRow, 8)

Sheets("Database").Hyperlinks.Add Anchor:=linked_path, _
 Address:=filepath2

End Sub