Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 8
1

Копирование гиперссылки в ВБА

15.01.2018, 18:10. Показов 5344. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите ,пожалуйста.В одной таблице в каждой ячейке хранится гиперссылка на файл документа.
В другую таблицу необходимо к одной записи добавить в колонку гиперссылок - после уже записанного текста необходимо вставить список гиперссылок из 1 таблицы. Как скопировать именно гиперссылку, а не всю ячейку( когда копируешь ячейку,заменяется вся ячейка 2-таблицы,стирается текст)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2018, 18:10
Ответы с готовыми решениями:

Графики в ВБА
Нужно построить два графика в вба, на одном поле x3 и 5-x. Не получается нифига, даже код кидать...

Прикладное программирование ВБА
Помогите пожалуйста При открытии своей книги,программным путём,формировать на листе2 заголовок...

Суммирование строк в вба
Как можно просуммировать строки матрицы согласно условию?

Увидеть код ВБА
здравствуйте, есть файл, который при открытии удаляет модуль с макросами, открыл его а код уже...

13
Заблокирован
15.01.2018, 18:15 2
olga_b, что есть и что надо - маленький пример в виде файла приложите...
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 8
15.01.2018, 18:30  [ТС] 3
Вид табличек
Вложения
Тип файла: docx 333.docx (13.2 Кб, 21 просмотров)
0
Динохромный
1375 / 749 / 271
Регистрация: 22.12.2015
Сообщений: 2,341
15.01.2018, 19:52 4
olga_b, в общем-то - смысл искать решение на VBA? Если таблицу скопировать в Эксель, скопировать первый столбец и вставить поверх второго через ctrl+alt+v с опцией "только значения", текст гиперссылки сохраняется. Копируете в любое место в Word → преобразовать в текст, и получаете нужный вам список гиперссылок, копируете его в нужную ячейку.
1
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 8
15.01.2018, 20:42  [ТС] 5
Смысл в том,что документ формируется из программы бизнес-студио, в котором много таблиц и текста, и эта одна из таблиц, в ячейку в которую нужно вставить список гиперссылок, пишутся данные из 4-таблиц. И когда это текст,то проблем не возникает,проблемы только с гиперссылками
0
Динохромный
1375 / 749 / 271
Регистрация: 22.12.2015
Сообщений: 2,341
15.01.2018, 20:47 6
Цитата Сообщение от olga_b Посмотреть сообщение
в ячейку в которую нужно вставить список гиперссылок, пишутся данные из 4-таблиц.
Ну и беда то в чем? Если с текстом проблем не возникает, то гиперссылки нужно копировать транзитом через эксель, на выходе будет текст из левой колонки с присвоенными этому тексту гиперссылками из правой.
У вас объемы большие, или таких файлов много, или в чем неудобство?
В файле есть еще гиперссылки, кроме как в этой таблице?
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 8
15.01.2018, 21:51  [ТС] 7
Попробовала через єксель. Копируете в любое место в Word → преобразовать в текст, и получаете нужный вам список гиперссылок- получаю список названий гиперссылок ,а не сами ссылки. Мне нужно именно в конец ячейки таблицы вставить список из нескольких гиперссылок. Именно в этом проблема
0
Динохромный
1375 / 749 / 271
Регистрация: 22.12.2015
Сообщений: 2,341
15.01.2018, 22:04 8
Цитата Сообщение от olga_b Посмотреть сообщение
получаю список названий гиперссылок ,а не сами ссылки
Ссылки были потеряны еще в экселе - проверьте.
Копировать столбик с текстом на столбик с гиперссылками нужно с опцией "только значения", гиперссылки должны работать еще в экселе.


Как вариант - можете использовать код ниже.
Оговорки:
1. Курсор перед началом работы нужно установить на таблицу с текстом и гиперссылками.
2. Таблица должна как в вашем примере состоять из двух столбцов, первая строка - заглавие. Пара "текст-гиперссылка" должна находиться на каждой строчке- как в вашем примере.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Sub HipInsert()
Dim tblData As Table
Dim i As Integer
 Set tblData = Selection.Tables.Item(1)
 
Selection.EndKey Unit:=wdStory
For i = 2 To tblData.Rows.Count
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=tblData.Cell(i, 2).Range.Hyperlinks.Item(1).Address, SubAddress:="", ScreenTip:="", TextToDisplay:=Replace(tblData.Cell(i, 1).Range, Chr(13) & Chr(7), "")
    Selection.TypeParagraph
Next i
tblData.Cell(1, 1).Select
Selection.Collapse
Set tblData = Nothing
End Sub
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 8
15.01.2018, 22:52  [ТС] 9
Вставляет мимо ячейки второй таблицы
Миниатюры
Копирование гиперссылки в ВБА  
0
Динохромный
1375 / 749 / 271
Регистрация: 22.12.2015
Сообщений: 2,341
15.01.2018, 23:18 10
Цитата Сообщение от olga_b Посмотреть сообщение
Вставляет мимо ячейки второй таблицы
Вставляет в конец документа, т.к. непонятно, где вторая таблица будет в реальном документе.
Если в вашем документе первая таблица всегда будет первой, а вторая - второй, а остальные таблицы - будут ниже первых двух, то код будет проще.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Sub HipInsertTwoTables()
Dim tblData As Table, tblTarget As Table
Dim i As Integer
 Set tblData = ActiveDocument.Tables.Item(1)
Set tblTarget = ActiveDocument.Tables.Item(2)
tblTarget.Cell(1, 3).Range.Paragraphs.Item(tblTarget.Cell(1, 3).Range.Paragraphs.Count - 1).Range.Select
 Selection.Collapse wdCollapseEnd
For i = 2 To tblData.Rows.Count
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=tblData.Cell(i, 2).Range.Hyperlinks.Item(1).Address, SubAddress:="", ScreenTip:="", TextToDisplay:=Replace(tblData.Cell(i, 1).Range, Chr(13) & Chr(7), "")
    Selection.TypeParagraph
Next i
tblData.Cell(1, 1).Select
Selection.Collapse
Set tblData = Nothing
Set tblTarget = Nothing
End Sub
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 8
15.01.2018, 23:29  [ТС] 11
Спасибо огромное, завтра на работе попробую на реальном документе. Должно уже получиться. У меня таблицы там по закладкам
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
15.01.2018, 23:44 12
olga_b, может это поможет - макрос преобразует таблицу типа первой таблицы в документе в простой текст с гиперссылками. Перед запуском поставьте курсор в таблицу, которую надо преобразовать. После скопируйте абзацы и вставьте в нужное место.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub bb()
Dim s$, c As Cell
  With Selection.Tables(1)
    For Each c In .Columns(2).Cells
      If c.Range.Hyperlinks.Count Then
        s = c.Previous.Range.Text
        c.Range.Hyperlinks(1).TextToDisplay = Trim$(Left$(s, Len(s) - 2))
      End If
    Next
    .Columns(1).Delete
    .ConvertToText
  End With
End Sub
1
Динохромный
1375 / 749 / 271
Регистрация: 22.12.2015
Сообщений: 2,341
16.01.2018, 00:03 13
Казанский, красиво.
c.Previous.Range - это ссылка на предыдущую ячейку таблицы Word относительно текущей?
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
16.01.2018, 00:20 14
Dinoxromniy, да. В Word VBA у многих объектов есть методы Previous и Next (F1 - Previous).
Позволяют не только сократить код, но и ускорить: Макрос на замену каждого третьего слова в тексте на код EQ
1
16.01.2018, 00:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2018, 00:20
Помогаю со студенческими работами здесь

путь к данным вба
Добрый день, Использую VBA для экселя для считывания файлов Dim Read Set Read =...

Задачка по юзерформам в ВБА
Такая проблема, нужно вычислить среднее арифметическое отрицательных нечетных чисел, стоящих на...

Задача на дату ВБА
Задача: Спасательная служба имеет информацию о туристических группах в виде: номер группы,...

Формула из ВБА в ексель
Здравствуйте, есть вопрос который у меня вызвал затруднения в решении. Если я использую формулу в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru