Гиперссылка в Excel не активна - PullRequest
0 голосов
/ 29 мая 2018

В моем Excelsheet я использую таблицу с источником данных из sql-сервера.Один столбец содержит номер телефона, другой - почтовый адрес.Теперь я хочу создать гиперссылку, такую ​​как tel:09999999 или mailto:test@test.com, чтобы открыть стандартное windows-приложение для начала звонка или написания электронного письма.Формат ячейки общий.

К сожалению, гиперссылка выглядит как обычный текст, а не как гиперссылка.Я вижу формулу как =hyperlink("tel:09999999";"09999999").Когда я щелкаю в ячейке, нажимаю клавишу [F2] и нажимаю return, затем в Excel меняю значение ячейки на «правильную» гиперссылку.

Вторая идея, которую я пытался написать макрос для всехэто клетки.но производительность не в порядке, у меня есть около 20000 строк с 5 столбцами, так что Excel работает около 1 минуты только для создания гиперссылки.Код выглядит так:

lastrow = ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp).Row
For i2 = 4 To lastrow
    'Phone1
    Worksheets("Report").Cells(i2, 11).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="tel:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If

    'Phone2
    Worksheets("Report").Cells(i2, 12).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="tel:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If

    'Phone3
    Worksheets("Report").Cells(i2, 13).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="tel:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If
    'Mail1
    Worksheets("Report").Cells(i2, 14).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="mailto:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If

    'Mail2
    Worksheets("Report").Cells(i2, 15).Select
    If Len(Selection.Value) > 0 Then
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="mailto:" + CStr(Selection), TextToDisplay:=CStr(Selection)
    End If
Next i2

1 Ответ

0 голосов
/ 30 мая 2018

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

Например, «стандартная» (оригинальная, универсальная) формула для гиперссылки:

=HYPERLINK("tel:09999999","09999999")

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

=HIPERŁĄCZE("tel:09999999";"09999999")

Как видите:

  1. имя функции отличаетсячем оригинал
  2. «разделитель формул» отличается от оригинала

Более подробную информацию об этом вы найдете здесь:

Range.Formula

Range.FormulaLocal

Application.International Property (Excel) .

Итак, если вы хотитевставить формулу через код VBA, который использует [;], вы должны использовать свойство FormulaLocal.Если вы хотите вставить формулу с помощью свойства Formula, вам нужно позаботиться об использовании правильного разделителя!

Итак, способ сохранения формулы для вставки должен получить форму:

'English (universal way)
oSheet.Range("A1").Formula = "=HYPERLINK(""tel:00009"",""000009"")"
'German
oSheet.Range("A1").FormulaLocal = "=HYPERLINK(""tel:00009""" & Application.International(xlListSeparator) & """000009"")"

Что касается вашего кода ... вас предупредили об использовании метода Select.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...