Откройте веб-сайт в excel с помощью ActiveWorkbook.FollowHyperlink

Итак, это в основном то, что я пытаюсь сделать. У меня есть столбец employee #в файле, который генерируется из MSSQL. Я хочу создать функцию в ячейке, где URL-адрес будет,http://www.someplace.com/employee.php?ID=Employee#FromCell

до сих пор все примеры, которые я нашел, недостаточно подробны для меня, чтобы понять, что с ним делать. Я знаю, что это неправильно, но это то, что я закончил до сих пор

Function openurl(strSKU As String)
    ActiveWorkbook.FollowHyperlink Address:="http://www.someplace.com/employee.php?ID=?strSKU=" & strSKU, NewWindow:=True
End Function

Я думаю, что я смешивание методов с функциями, но я не уверен, куда с ним идти. Я в основном хочу добавить его в качестве функции, чтобы упростить вставку в столбец.

2 ответов


Вы можете сделать это без VBA. Вы можете использовать формулу.

=Hyperlink("http://www.someplace.com/employee.php?ID="&A1,A1)

здесь A1 будет иметь идентификатор сотрудника.

проверьте этот пост, который я сделал о создании гиперссылок из внешних данных:

http://www.spreadsheetsmadeeasy.com/creating-hyperlinks-with-external-data/

перейдите к разделу "добавление гиперссылки" подробнее.


Я вижу, что кто-то предоставил вам обходной путь для достижения этого, но я дам вам способ, который вы просили (на всякий случай). FYI intellisense всасывает VBA при ссылке на объекты OLE (т. е. некоторые методы могут не принадлежать объектам button, но они принадлежат).

скрипт создаем кнопки для вас автоматически, и отправит пользователя на сайт, указанный Вами при нажатии. **Я включил примечания, которые объясняют, что каждая строка делает.

это создает кнопки в Столбцах B и получает параметр URL из столбца A:

Sub CreateButtons()


Dim btn As Button 'Create a variable for our button
Application.ScreenUpdating = False 'Speed up the process by disabling ScreenUpdating
ActiveSheet.Buttons.Delete 'Delete existing buttons.
Dim Report As Worksheet 'Create our worksheet variable.
Set Report = Excel.ActiveSheet 'Set our worksheet to the worksheet variable.
Dim t As Range 'Create a variable for the cells we will reference.

For i = 1 To Report.UsedRange.Rows.Count 'This will loop through each row in the used range of our worksheet.
    If Report.Cells(i, 1).Value <> "" Then 'If the value of the first cell is not empty, then do the following...
        Set t = Report.Range(Cells(i, 2), Cells(i, 2)) 'Assign the cell in the second column of the current row to the cell variable.
        Set btn = Report.Buttons.Add(t.Left, t.Top, t.Width, t.Height) 'Create a button and place it in the cell in the second column.

        With btn
          .OnAction = "openurl" 'Set the button to trigger the openurl sub-routine when it is clicked.
          .Caption = Report.Cells(i, 1).Value 'Set the caption of the button to equal the value of the cell in the first column.
          .Name = i 'Set the name of the button to equal the row on which it resides. This name will be used in the openurl sub; So don't change it.
        End With
   End If
Next i


End Sub

это макрос, выполняемый при нажатии пользователем кнопки:

Sub openurl()

Dim Report As Worksheet 'Create a variable for the worksheet
Set Report = Excel.ActiveSheet 'Assign the worksheet to our variable
Dim i As Integer 'Create a variable for our row number
i = Application.Caller 'Assign name of the button to our row number.

Dim address As String 'Create a variable for our address
address = "http://www.someplace.com/employee.php?ID=?strSKU=" & Report.Cells(i, 1).Value 'Assign the URL to our address variable.

ActiveWorkbook.FollowHyperlink address:=address, NewWindow:=True 'Send the user to the URL you specified (with the URL parameter at the end).

End Sub

БОНУСНАЯ ИНФОРМАЦИЯ:

выполните следующий шаг, чтобы весь процесс выполняется автоматически:

когда вы говорите, что текущие данные заполняются из базы данных MSSQL, вы, вероятно, имеете в виду, что вы тянете данные в Excel с помощью другой подпрограммы или функции VBA. Если это так, то если вы разместите скрипт для вызова подпрограммы "CreateButtons()" после скрипта, который извлекает данные, весь этот процесс будет выполнен для вас автоматически. Пример:

Sub getEmployeeData() 'This represents your sub that pulls your data from MSSQL
'================================================================
'This represents your script to get your information into Excel.
'================================================================

Call CreateButtons 'This runs the CreateButtons() subroutine.

End Sub

наслаждайтесь!