Я пытаюсь найти лучший способ сократить пути гиперссылок в моем изображении при нажатии кнопки отправки. Прямо сейчас все пути к пользовательским данным и файлам изображений идут в соответствующие строки / столбцы, но это ужасно. Я хочу посмотреть, как использовать VBA, чтобы сократить путь к файлу или имя файла или изменить путь к совершенно другому слову, например, «изображение». В идеале я хотел бы заменить гиперссылку словом «изображение», но я не уверен, что это возможно?
На этом сайте я нашел несколько идей о создании функций для вызова, которые сократили бы путь, но я не был уверен, как использовать эти функции при отправке данных в базу данных.
Ниже приведен мой текущий код, а затем найденная функция, которая может работать.
Private Sub CommandButton1_Click()
Dim TargetRow As Long
Dim linked_path1 As Variant
Dim linked_path2 As Variant
TargetRow = Sheets("Engine").Range("B3").Value + 1 'plus 1 move the row down 1 so it doesn't overrite last row value
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
'Set named range and a variable in teh Hyperlink.Add function
Set linked_path1 = Sheets("Database").Range("Data_Start").Offset(TargetRow, 7)
Sheets("Database").Hyperlinks.Add Anchor:=linked_path1, _
Address:=filepath1
Set linked_path2 = Sheets("Database").Range("Data_Start").Offset(TargetRow, 8)
Sheets("Database").Hyperlinks.Add Anchor:=linked_path2, _
Address:=filepath2
Unload UserForm2
End Sub
Функция, которую я нашел на этом сайте, которая могла это сделать - она захватывает только имя файла, а не расширение
Function FileNameNoExtensionFromPath(strFullPath As String) As String
Dim intStartLoc As Integer
Dim intEndLoc As Integer
Dim intLength As Integer
intStartLoc = Len(strFullPath) - (Len(strFullPath) - InStrRev(strFullPath, "\") - 1)
intEndLoc = Len(strFullPath) - (Len(strFullPath) - InStrRev(strFullPath, "."))
intLength = intEndLoc - intStartLoc
FileNameNoExtensionFromPath = Mid(strFullPath, intStartLoc, intLength)
End Function
![enter image description here](https://i.stack.imgur.com/pp7xP.png)
Большое спасибо
Апрель