Доброго времени суток. Прошу помочь решить следующую задачу: Имеется документ Word, содержащий текст. Пользователь выделяет участок текста и запускает макрос. Макрос должен сохранить выделенный текст в последнюю пустую ячейку заданного столбца закрытой книги Excel. Допускается, чтобы, на момент сохранения, макрос открывал книгу Excel в скрытом режиме, а затем закрывал.
Из одной книги Excel в другую это удается реализовать, а из Word не получается. Заранее спасибо. И с наступающим Новым Годом!
Доброго времени суток. Прошу помочь решить следующую задачу: Имеется документ Word, содержащий текст. Пользователь выделяет участок текста и запускает макрос. Макрос должен сохранить выделенный текст в последнюю пустую ячейку заданного столбца закрытой книги Excel. Допускается, чтобы, на момент сохранения, макрос открывал книгу Excel в скрытом режиме, а затем закрывал.
Из одной книги Excel в другую это удается реализовать, а из Word не получается. Заранее спасибо. И с наступающим Новым Годом!Мур
Уважаемый RAN и остальные участники форума. Прошу прощения, про решение аналогичной задачи с гиперссылками, предоставленное Вами ранее, я совсем забыл. Необходимые изменения внес, все получилось. Большое спасибо. Вместе с тем, к вопросу о копировании выделенного участка текста в Excel я пришел в связи с тем, что не смог добиться гиперссылки на произвольный участок текста в документе Word (текст не структурирован). Если поможете в решении и этой задачи, буду благодарен. В любом случае, низкий поклон.
Уважаемый RAN и остальные участники форума. Прошу прощения, про решение аналогичной задачи с гиперссылками, предоставленное Вами ранее, я совсем забыл. Необходимые изменения внес, все получилось. Большое спасибо. Вместе с тем, к вопросу о копировании выделенного участка текста в Excel я пришел в связи с тем, что не смог добиться гиперссылки на произвольный участок текста в документе Word (текст не структурирован). Если поможете в решении и этой задачи, буду благодарен. В любом случае, низкий поклон.Мур
"Гиперссылка на Excel" не нужна. И не нужна любая "ссылка". У вас же обратная задача - "сослаться на выделенный текст". И кто вам запрещает вставить ссылку на маркер из документа Word (или на поле документа) в таблицу Excel?
Что же касается "произвольного участка текста" - то это ненамного сложнее. Но намного затратнее по телепатическому восприятию ваших хотелок...
"Гиперссылка на Excel" не нужна. И не нужна любая "ссылка". У вас же обратная задача - "сослаться на выделенный текст". И кто вам запрещает вставить ссылку на маркер из документа Word (или на поле документа) в таблицу Excel?
Что же касается "произвольного участка текста" - то это ненамного сложнее. Но намного затратнее по телепатическому восприятию ваших хотелок...AndreTM
Доброго времени суток! AndreTM, спасибо за ваше желание помочь, но мне не ясно, что вы предлагаете, в частности
Цитата
вставить ссылку на маркер из документа Word (или на поле документа) в таблицу Excel
и
Цитата
по телепатическому восприятию ваших хотелок...
последнее выглядит, хочется так думать, что я не совсем корректно изложил свои "хотелки". Попробую еще раз... Каждое утро я обрабатываю (читаю с экрана) сводки происшествий по области, при этом периодически встречаются участки текста, которые необходимо копировать в последнюю пустую ячейку заданного столбца Excel. Открыть оба файла и копировать в ручную нет возможности. Выход вижу в том, чтобы создать макрос и прицепить его на какой-нибудь значок на панели инструментов. При появлении нужного текста, выделяю его и запускаю макрос, который копирует выделенный фрагмент в последнюю пустую ячейку заданного столбца Excel. RAN, уже помог мне с ссылками, но в последствии я отказался от такого решения, потому, что ссылка возвращает весь документ, потом еще надо задавать поиск самого текста, что не совсем удобно. И здесь, на мой взгляд, два выхода: либо копировать сразу участки текста, либо получать ссылку, возвращающую заданный участок текста в другом документе.
Доброго времени суток! AndreTM, спасибо за ваше желание помочь, но мне не ясно, что вы предлагаете, в частности
Цитата
вставить ссылку на маркер из документа Word (или на поле документа) в таблицу Excel
и
Цитата
по телепатическому восприятию ваших хотелок...
последнее выглядит, хочется так думать, что я не совсем корректно изложил свои "хотелки". Попробую еще раз... Каждое утро я обрабатываю (читаю с экрана) сводки происшествий по области, при этом периодически встречаются участки текста, которые необходимо копировать в последнюю пустую ячейку заданного столбца Excel. Открыть оба файла и копировать в ручную нет возможности. Выход вижу в том, чтобы создать макрос и прицепить его на какой-нибудь значок на панели инструментов. При появлении нужного текста, выделяю его и запускаю макрос, который копирует выделенный фрагмент в последнюю пустую ячейку заданного столбца Excel. RAN, уже помог мне с ссылками, но в последствии я отказался от такого решения, потому, что ссылка возвращает весь документ, потом еще надо задавать поиск самого текста, что не совсем удобно. И здесь, на мой взгляд, два выхода: либо копировать сразу участки текста, либо получать ссылку, возвращающую заданный участок текста в другом документе.Мур
получать ссылку, возвращающую заданный участок текста в другом документе.
И? Это сложно? RAN вам посоветовал изменить одну строку - а именно, текст/указатель гиперссылки. На нужное место в тексте документа Word. Которое в момент исполнения макроса у вас выделено... Вы желаете, чтобы за вас и под вас сделали конкретное решение? - добро пожаловать в платный раздел. Ибо, на мой взгляд, вам дали всё необходимое для решения. Ну и ещё - разбираться с моделью Word специалисты по Excel, скорее всего, не станут Тем более, что вы начинали разговор с "общих вопросов" - почему же вы желаете "конкретных ответов" ? А про "хотелки" - ну, без исходных Word-файлов просто нельзя проверить структуру ссылок... А они у вас - ДСП А на примеры вам - глубоко и надолго, так что...
получать ссылку, возвращающую заданный участок текста в другом документе.
И? Это сложно? RAN вам посоветовал изменить одну строку - а именно, текст/указатель гиперссылки. На нужное место в тексте документа Word. Которое в момент исполнения макроса у вас выделено... Вы желаете, чтобы за вас и под вас сделали конкретное решение? - добро пожаловать в платный раздел. Ибо, на мой взгляд, вам дали всё необходимое для решения. Ну и ещё - разбираться с моделью Word специалисты по Excel, скорее всего, не станут Тем более, что вы начинали разговор с "общих вопросов" - почему же вы желаете "конкретных ответов" ? А про "хотелки" - ну, без исходных Word-файлов просто нельзя проверить структуру ссылок... А они у вас - ДСП А на примеры вам - глубоко и надолго, так что... AndreTM
AndreTM, после чтения ваших сообщений, у меня портится настроение..... Сразу хочется возразить по всем пунктам и, примерно в вашем же стиле.....но не стану. В любом случае, спасибо за разъяснения.
AndreTM, после чтения ваших сообщений, у меня портится настроение..... Сразу хочется возразить по всем пунктам и, примерно в вашем же стиле.....но не стану. В любом случае, спасибо за разъяснения.Мур
Гиперссылку на произвольный текст создать нельзя. A вот на закладку - можно.
[vba]
Код
Sub Мяу() Dim bkm$ bkm = InputBox("Введите имя закладки") On Error GoTo err_ If VarType(b) = vbBoolean Then Exit Sub With ActiveDocument.Bookmarks .Add Range:=Selection.Range, Name:=bkm .DefaultSorting = wdSortByName .ShowHidden = True End With
Dim objExcel As Object Dim FileName$ FileName = "C:\Documents and Settings\Андр\Мои документы\0.xls" Set objExcel = CreateObject("Excel.Application") DoEvents With objExcel .DisplayAlerts = False With .Workbooks.Open(FileName) DoEvents .sheets(1).Hyperlinks.Add Anchor:=.sheets(1).Range("A1"), _ Address:=ActiveDocument.FullName, _ SubAddress:=bkm, _ TextToDisplay:=ActiveDocument.FullName .Save .Close End With .DisplayAlerts = False End With Set objExcel = Nothing
On Error GoTo 0 Exit Sub err_: MsgBox Err.Description On Error GoTo 0 End Sub
[/vba]
Гиперссылку на произвольный текст создать нельзя. A вот на закладку - можно.
[vba]
Код
Sub Мяу() Dim bkm$ bkm = InputBox("Введите имя закладки") On Error GoTo err_ If VarType(b) = vbBoolean Then Exit Sub With ActiveDocument.Bookmarks .Add Range:=Selection.Range, Name:=bkm .DefaultSorting = wdSortByName .ShowHidden = True End With
Dim objExcel As Object Dim FileName$ FileName = "C:\Documents and Settings\Андр\Мои документы\0.xls" Set objExcel = CreateObject("Excel.Application") DoEvents With objExcel .DisplayAlerts = False With .Workbooks.Open(FileName) DoEvents .sheets(1).Hyperlinks.Add Anchor:=.sheets(1).Range("A1"), _ Address:=ActiveDocument.FullName, _ SubAddress:=bkm, _ TextToDisplay:=ActiveDocument.FullName .Save .Close End With .DisplayAlerts = False End With Set objExcel = Nothing
On Error GoTo 0 Exit Sub err_: MsgBox Err.Description On Error GoTo 0 End Sub
Не знаю, как обратиться к гостю, в общем очень похоже на то что требовалось... гиперсылка создается, но пока не открывается, выдает "не удается открыть указанный файл" Подумаю, может я что не так сделал.....и отпишусь. Про закладки в Word я вообще не знал, отдельное спасибо... И еще, не могу сообразить как корректно поменять [vba]
Код
Range("A1")
[/vba] на [vba]
Код
Cells(Rows.Count,1).End(xlUp).Row
[/vba] ????? Гостю, автору кода, большое спасибо!
Не знаю, как обратиться к гостю, в общем очень похоже на то что требовалось... гиперсылка создается, но пока не открывается, выдает "не удается открыть указанный файл" Подумаю, может я что не так сделал.....и отпишусь. Про закладки в Word я вообще не знал, отдельное спасибо... И еще, не могу сообразить как корректно поменять [vba]
Код
Range("A1")
[/vba] на [vba]
Код
Cells(Rows.Count,1).End(xlUp).Row
[/vba] ????? Гостю, автору кода, большое спасибо!Мур
Заработало...! Про корову ничего не понял, одни догадки,...навреное для Андрея понятно. А как же вставить гиперссылку не в A1, а следующую свободную ячейку столбца...
Заработало...! Про корову ничего не понял, одни догадки,...навреное для Андрея понятно. А как же вставить гиперссылку не в A1, а следующую свободную ячейку столбца...Мур
Если кому интересно, то такое решение использовал: [vba]
Код
Sub Мяуу() ' Создание закладки в Word для выделенного диапазона с последующим созданием гиперссылки в заданном документе Excel на созданную закладку Dim bkm$ ' Задаем переменную для названия закладки Dim lLastRow As Long ' Задаем переменную для номера последнего непустого столбца bkm = InputBox("Введите номер задания") ' Окно с названием закладки, заодно и текст ссылки On Error GoTo err_ With ActiveDocument.Bookmarks ' Для активного документа .Add Range:=Selection.Range, Name:=bkm .DefaultSorting = wdSortByName ActiveDocument.Save .ShowHidden = True End With Dim objExcel As Object Dim FileName$ FileName = "C:\Users\user\Desktop\Книга1.xlsm" Set objExcel = CreateObject("Excel.Application") DoEvents With objExcel .DisplayAlerts = False With .Workbooks.Open(FileName) DoEvents lLastRow = .sheets(1).UsedRange.Row + .sheets(1).UsedRange.Rows.Count .sheets(1).Hyperlinks.Add Anchor:=.sheets(1).Range("A" & lLastRow), Address:=ActiveDocument.FullName, SubAddress:=bkm, TextToDisplay:=bkm .Save .Close End With .DisplayAlerts = False End With Set objExcel = Nothing On Error GoTo 0 Exit Sub err_: MsgBox Err.Description On Error GoTo 0 End Sub
[/vba] В основе конечно код "гостя" На комментарии можно не обращать внимание. Есть недостаток - по умолчанию должна быть заполнена первая или первая и последующие несколько строк...
Если кому интересно, то такое решение использовал: [vba]
Код
Sub Мяуу() ' Создание закладки в Word для выделенного диапазона с последующим созданием гиперссылки в заданном документе Excel на созданную закладку Dim bkm$ ' Задаем переменную для названия закладки Dim lLastRow As Long ' Задаем переменную для номера последнего непустого столбца bkm = InputBox("Введите номер задания") ' Окно с названием закладки, заодно и текст ссылки On Error GoTo err_ With ActiveDocument.Bookmarks ' Для активного документа .Add Range:=Selection.Range, Name:=bkm .DefaultSorting = wdSortByName ActiveDocument.Save .ShowHidden = True End With Dim objExcel As Object Dim FileName$ FileName = "C:\Users\user\Desktop\Книга1.xlsm" Set objExcel = CreateObject("Excel.Application") DoEvents With objExcel .DisplayAlerts = False With .Workbooks.Open(FileName) DoEvents lLastRow = .sheets(1).UsedRange.Row + .sheets(1).UsedRange.Rows.Count .sheets(1).Hyperlinks.Add Anchor:=.sheets(1).Range("A" & lLastRow), Address:=ActiveDocument.FullName, SubAddress:=bkm, TextToDisplay:=bkm .Save .Close End With .DisplayAlerts = False End With Set objExcel = Nothing On Error GoTo 0 Exit Sub err_: MsgBox Err.Description On Error GoTo 0 End Sub
[/vba] В основе конечно код "гостя" На комментарии можно не обращать внимание. Есть недостаток - по умолчанию должна быть заполнена первая или первая и последующие несколько строк...Мур
Сообщение отредактировал Мур - Среда, 08.01.2014, 10:17