powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена Hyperlinks.Add Anchor
7 сообщений из 7, страница 1 из 1
Замена Hyperlinks.Add Anchor
    #39563501
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли в VBA такая команда/метод , который действовал аналогично Hyperlinks.Add Anchor , но работал с переменными , а не с диапазонами ?
Код: vbnet
1.
book1.ActiveSheet.Hyperlinks.Add Anchor:=Cells(34 + (x - 1), (26 + (iLoop * 21)) + (y - 1)), Address:=data(x, y), TextToDisplay:=vata(x, y)


Что бы вместо
Код: vbnet
1.
Cells(34 + (x - 1), (26 + (iLoop * 21)) + (y - 1))

была переменная
К моему вопросу весь код не нужен , но все равно прикреплю (он работает хорошо)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
Sub Softгиперссылки()
Application.DisplayAlerts = False


Call mainмассивы

Application.DisplayAlerts = True
End Sub


Sub mainмассивы()
    Dim r As Range
    Dim firstAddress As String
    Dim iLoop As Long
    Dim book1 As Workbook
    Dim sheetNames(1 To 19) As String
    Dim Ssilka As String
    
          
    
   
    sheetNames(1) = "Лист1"
    sheetNames(2) = "Лист2"
    sheetNames(3) = "Лист3"
    sheetNames(4) = "Лист4"
    sheetNames(5) = "Лист5"
    sheetNames(6) = "Лист6"
    sheetNames(7) = "Лист7"
    sheetNames(8) = "Лист8"
    sheetNames(9) = "Лист9"
    sheetNames(10) = "Лист10"
    sheetNames(11) = "Лист11"
    sheetNames(12) = "Лист12"
    sheetNames(13) = "Лист13"
    sheetNames(14) = "Лист14"
    sheetNames(15) = "Лист15"
    sheetNames(16) = "Лист16"
    sheetNames(17) = "Лист17"
    sheetNames(18) = "Лист18"
    sheetNames(19) = "Лист19"
    
   
    
    Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Ускорение Softello\переменные\6.xlsm")
    
    iLoop = -1
    
    With book1.Worksheets("Лист1").Range("R34:R99")
    
      For Each r In .Rows
             If r.Value = 1 Then
            
                iLoop = iLoop + 1
                Ssilka = r.Offset(, -13).Hyperlinks.Item(1).Address
                .Parent.Parent.Worksheets(sheetNames(1)).Activate
                .Parent.Parent.Save
                extractTable Ssilka, book1, iLoop
                
              End If
      Next r
     
    End With
   book1.Save
   book1.Close
    Exit Sub

  
   End Sub


Function extractTable(Ssilka As String, book1 As Workbook, iLoop As Long)
    Dim oDom As Object, oTable As Object, oRow As Object
    Dim iRows As Integer, iCols As Integer
    Dim x As Integer, y As Integer
    Dim data()
    Dim vata()
    Dim tata()
    Dim oHttp As Object
    Dim oRegEx As Object
    Dim sResponse As String
    Dim oRange As Range
    Dim Perem1 As String
    Dim Perem2 As String
    
    
  
          
    
    ' get page
    Set oHttp = CreateObject("MSXML2.XMLHTTP")
    oHttp.Open "GET", Ssilka, False
    oHttp.Send
    
    ' cleanup response
    sResponse = StrConv(oHttp.responseBody, vbUnicode)
    Set oHttp = Nothing
    
    sResponse = Mid$(sResponse, InStr(1, sResponse, "<!DOCTYPE "))
    
    Set oRegEx = CreateObject("vbscript.regexp")
    With oRegEx
        .MultiLine = True
        .Global = True
        .IgnoreCase = False
        .Pattern = "<(script|SCRIPT)[\w\W]+?</\1>"
        sResponse = .Replace(sResponse, "")
    End With
    Set oRegEx = Nothing
    
    ' create Document from response
    Set oDom = CreateObject("htmlFile")
    oDom.Write sResponse
    DoEvents
    
    ' table with results, indexes starts with zero
    Set oTable = oDom.getelementsbytagname("table")(3)
    
    DoEvents
    
    iRows = oTable.Rows.Length
    iCols = oTable.Rows(1).Cells.Length
    
    ' first row and first column contain no intresting data
    ReDim data(1 To iRows - 1, 1 To iCols - 1)
    ReDim vata(1 To iRows - 1, 1 To iCols - 1)
    ReDim tata(1 To iRows - 1, 1 To iCols - 1)
    ' fill in data array
    For x = 1 To iRows - 1
        Set oRow = oTable.Rows(x)
        
        For y = 1 To iCols - 1
             If oRow.Cells(y).Children.Length > 0 Then
                data(x, y) = oRow.Cells(y).getelementsbytagname("a")(0).getattribute("href")
                    data(x, y) = Replace(data(x, y), "about:", "http://allscores.ru/soccer/")
                vata(x, y) = oRow.Cells(y).innerText
                 book1.ActiveSheet.Hyperlinks.Add Anchor:=Cells(34 + (x - 1), (26 + (iLoop * 21)) + (y - 1)), Address:=data(x, y), TextToDisplay:=vata(x, y)
            End If

        Next y
    Next x
    
    Set oRow = Nothing
    Set oTable = Nothing
    Set oDom = Nothing
    
    
End Function


...
Рейтинг: 0 / 0
Замена Hyperlinks.Add Anchor
    #39563512
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxim863,
Код: vbnet
1.
2.
3.
4.
dim myCell as range
'...
set myCell = Cells(34 + (x - 1), (26 + (iLoop * 21)) + (y - 1))
book1.ActiveSheet.Hyperlinks.Add Anchor:=myCell, ...
...
Рейтинг: 0 / 0
Замена Hyperlinks.Add Anchor
    #39563528
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,
Да , но я не этого хочу добиться , так что такой вариант не подойдет
...
Рейтинг: 0 / 0
Замена Hyperlinks.Add Anchor
    #39563566
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxim863, так непонятно, чего Вы хотите. может, это?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim myCell As Range, myCell1 As Range
'...
    Set myCell1 = Cells(a, b) 'a,b - некие начальные координаты, вычислите сами
    For x = 1 To iRows - 1
        Set oRow = oTable.Rows(x)
        Set myCell1 = myCell1.Offset(1) 'смещение на 1 вниз
        Set myCell = myCell1 'переменная для внутреннего цикла
        For y = 1 To iCols - 1
            '...
            Set myCell = myCell.Offset(, 1) 'смещение на 1 вправо
myCell.Select 'используйте для отладки при пошаговом проходе, потом удалите
            book1.ActiveSheet.Hyperlinks.Add Anchor:=myCell ' ...
...
Рейтинг: 0 / 0
Замена Hyperlinks.Add Anchor
    #39563607
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,
У меня есть 2 динамических массива , хочу создать 3-ий дин-ий массив (соединив 2 первых массива в стиле метода (Hyperlinks.Add Anchor)) и затем вставить 3-ий массив целиком и сразу в Excel (вообще моя главная цель ускорить работу моей изначальной программы)
...
Рейтинг: 0 / 0
Замена Hyperlinks.Add Anchor
    #39563980
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxim863хочу создать 3-ий дин-ий массив (соединив 2 первых массива в стиле метода (Hyperlinks.Add Anchor)) и затем вставить 3-ий массив целиком и сразу в ExcelНе получится. Гиперссылки в диапазоне не образуют массив, как .Value или .Formula.
maxim863вообще моя главная цель ускорить работу моей изначальной программыПопробуйте добавить до цикла
Код: vbnet
1.
2.
Application.ScreenUpdating = False
Application.EnableEvents = False

, после цикла верните =True.
...
Рейтинг: 0 / 0
Замена Hyperlinks.Add Anchor
    #39564152
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,
Придумал , как по другому решить задачу
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена Hyperlinks.Add Anchor
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]