objWord.ActiveDocument.SaveAs _ Filename:=FileNew, _ FileFormat:=wdFormatDocument, _ Password:="", _ AddToRecentFiles:=True, _ WritePassword:="", _ ReadOnlyRecommended:=False objWord.Quit End Sub
[/vba]
Имею шаблон вася.dot с заранее выставленными закладками.
Запустив макрос что получаю на выходе и что не устраивает:
1. Всё переносится четко 2. Новый файл на секунду открывшись, сохраняется по прописанному пути.
Вопросы:
1. как сделать, чтобы новый файл имел бы имя, указанных мной в коде ячеек, например Cells(5, 3), Cells(6, 3), Cells(7, 3). (или любых других, какие мне подойдут по смыслу). 2. Что дописать в коде, чтобы новый файл с новым названием открылся и не закрывался (я его просмотрю и сам закрою); 3. Как сделать, чтобы перенесенные данные повторяли бы форматирование как в экселе.
Спасибо
Добрый день, уважаемые знатоки VBA!
Нужна Ваша помощь. Собрал с миру по нитке код, для переноса данных из excel в word с помощью закладок.
Краткое описание: Имею файл эксель, из которого с разных листов переношу кое-какую информацию в шаблон вёрд.
Код такой:
[vba]
Код
Sub Univer()
Dim objWord As Object Dim objDoc As Object Dim FileSt Dim FileNew
Set objWord = CreateObject("Word.Application") ' Создаем приложение Word objWord.Visible = True ' делаем Word видимым
objWord.ActiveDocument.SaveAs _ Filename:=FileNew, _ FileFormat:=wdFormatDocument, _ Password:="", _ AddToRecentFiles:=True, _ WritePassword:="", _ ReadOnlyRecommended:=False objWord.Quit End Sub
[/vba]
Имею шаблон вася.dot с заранее выставленными закладками.
Запустив макрос что получаю на выходе и что не устраивает:
1. Всё переносится четко 2. Новый файл на секунду открывшись, сохраняется по прописанному пути.
Вопросы:
1. как сделать, чтобы новый файл имел бы имя, указанных мной в коде ячеек, например Cells(5, 3), Cells(6, 3), Cells(7, 3). (или любых других, какие мне подойдут по смыслу). 2. Что дописать в коде, чтобы новый файл с новым названием открылся и не закрывался (я его просмотрю и сам закрою); 3. Как сделать, чтобы перенесенные данные повторяли бы форматирование как в экселе.
2. открылся почему-то шаблон с расширением .dot и не закрывался, а новый файл с названием указанной ячейки Cells(5, 3) вообще не создался ну и ест-но не открылся... В чем может быть причина?
Pelena, добрый день! Убрал строчку, которую Вы сказали и получил:
1. выскочило желтым (ошибка) вот этот фрагмент кода (в конце основного кода): [vba]
2. открылся почему-то шаблон с расширением .dot и не закрывался, а новый файл с названием указанной ячейки Cells(5, 3) вообще не создался ну и ест-но не открылся... В чем может быть причина?grh1
если не удаляю последнюю строчку, то всё создается нормально с нужным названием... просто сразу закрывается. Ну и не совсем правильно в названии переносится формат... например сумма 27 000,00 в названии пишется 27000; а дата вместо 30 июля 2022 г. пишет 30.07.2022.
Ну это всё совсем не критично,просто немного раздражает. А вот появилась действительно проблема закладками word (кстати, Пелена, Вы кому-то уже подсказывали как решить проблему, но я не могу найти где это было).
если не удаляю последнюю строчку, то всё создается нормально с нужным названием... просто сразу закрывается. Ну и не совсем правильно в названии переносится формат... например сумма 27 000,00 в названии пишется 27000; а дата вместо 30 июля 2022 г. пишет 30.07.2022.
Ну это всё совсем не критично,просто немного раздражает. А вот появилась действительно проблема закладками word (кстати, Пелена, Вы кому-то уже подсказывали как решить проблему, но я не могу найти где это было).grh1
Vadym Gorokh
Сообщение отредактировал grh1 - Суббота, 30.07.2022, 20:28
с форматом решил, просто дописать слово нужно было .Text
Остался главный вопрос с закладками. Дело в том, что у меня в шаблоне договора есть еще дополнения и поэтому в шаблоне номер договора повторяется раза четыре, сумма повторяется раз пять ну и т.д. А закладки можно поставить с одним названием только один раз. Вообще мне эти закладки не очень нравятся, у меня был файл где я в фигурных скобках писал например {сумма} и вставлял в шаблон хоть тысячу раз. Может что-то в этом роде подскажите что-нибудь?
с форматом решил, просто дописать слово нужно было .Text
Остался главный вопрос с закладками. Дело в том, что у меня в шаблоне договора есть еще дополнения и поэтому в шаблоне номер договора повторяется раза четыре, сумма повторяется раз пять ну и т.д. А закладки можно поставить с одним названием только один раз. Вообще мне эти закладки не очень нравятся, у меня был файл где я в фигурных скобках писал например {сумма} и вставлял в шаблон хоть тысячу раз. Может что-то в этом роде подскажите что-нибудь?
Pelena, да я именно ее и видел, просто не мог найти. Вставил Ваш код [vba]
Код
Sub UpdateBookmarks(ByVal NameOfBookmark As String, ByVal ContentOfBookmark As Variant) 'процедура добавления содержимого к закладке. Необходима, чтобы после добавления содержимого закладка восстанавливалась для использования в перекрестных ссылках On Error Resume Next Dim rng As Object Dim bm As Object Set bm = wd.Bookmarks Set rng = bm(NameOfBookmark).Range rng.Text = ContentOfBookmark bm.Add NameOfBookmark, rng End Sub
[/vba]
сделал перекрестные ссылки на закладки, но не знаю как прикрутить Ваш код к своему макросу. Подскажите пожалуйста.
Pelena, да я именно ее и видел, просто не мог найти. Вставил Ваш код [vba]
Код
Sub UpdateBookmarks(ByVal NameOfBookmark As String, ByVal ContentOfBookmark As Variant) 'процедура добавления содержимого к закладке. Необходима, чтобы после добавления содержимого закладка восстанавливалась для использования в перекрестных ссылках On Error Resume Next Dim rng As Object Dim bm As Object Set bm = wd.Bookmarks Set rng = bm(NameOfBookmark).Range rng.Text = ContentOfBookmark bm.Add NameOfBookmark, rng End Sub
[/vba]
сделал перекрестные ссылки на закладки, но не знаю как прикрутить Ваш код к своему макросу. Подскажите пожалуйста.grh1
Vadym Gorokh
Сообщение отредактировал grh1 - Суббота, 30.07.2022, 22:02
Pelena, доброе утро! Рекомендуемая Вами строчка кода не вставляется. Прикрепляю сам файл и к нему вердовский файл шаблона с закладками вася.dot (ну шаблон так чисто тренировочный). Посмотрите пожалуйста, что там не так!?
Pelena, доброе утро! Рекомендуемая Вами строчка кода не вставляется. Прикрепляю сам файл и к нему вердовский файл шаблона с закладками вася.dot (ну шаблон так чисто тренировочный). Посмотрите пожалуйста, что там не так!?grh1
[/vba] И если вы используете шаблон .dot, то надо не открывать через Open, а создавать документ через Add Ну и про описание глобальной переменной я уже писала выше
Да, скобки лишние поставила [vba]
Код
UpdateBookmarks "номдог", Cells(5, 3).Value
[/vba] И если вы используете шаблон .dot, то надо не открывать через Open, а создавать документ через Add Ну и про описание глобальной переменной я уже писала вышеPelena
Pelena, всё сделал как Вы сказали - не хотят появляться закладки по перекрестным ссылкам. прикладываю файл и шаблон, где в качестве тренировки поставил закладку номер договора (номдог) и ниже два раза перекресные ссылки к этой же закладки. Номер основной закладки показывает, а перекрестные ссылки нет.
И почему-то я свои закладки не вижу и не соображу как их включить...
Pelena, всё сделал как Вы сказали - не хотят появляться закладки по перекрестным ссылкам. прикладываю файл и шаблон, где в качестве тренировки поставил закладку номер договора (номдог) и ниже два раза перекресные ссылки к этой же закладки. Номер основной закладки показывает, а перекрестные ссылки нет.
И почему-то я свои закладки не вижу и не соображу как их включить...grh1
ну выход есть такой - правда танец с бубном это, но всё же... решил в коде прописать все закладки номдог; номдог2; номдог3; номдог4; и т.д. тогда все работает
ну выход есть такой - правда танец с бубном это, но всё же... решил в коде прописать все закладки номдог; номдог2; номдог3; номдог4; и т.д. тогда все работаетgrh1
попробуйте в шаблоне закладки задать немного по-другому. Не просто по местоположению курсора, а выделить произвольный текст -- Вставка -- закладка -- Добавить. Если включен режим отображения закладок, то она должна выглядеть как квадратные скобки. Перекрестную ссылку добавьте также: сначала выделите произвольный текст -- Вставка -- Перекрестная ссылка -- Закладка -- выберите нужную закладку -- ОК В приложенном шаблоне сделала закладку номдог и ссылку на неё
И да, забыла написать, перед сохранением документа добавьте две строчки [vba]
попробуйте в шаблоне закладки задать немного по-другому. Не просто по местоположению курсора, а выделить произвольный текст -- Вставка -- закладка -- Добавить. Если включен режим отображения закладок, то она должна выглядеть как квадратные скобки. Перекрестную ссылку добавьте также: сначала выделите произвольный текст -- Вставка -- Перекрестная ссылка -- Закладка -- выберите нужную закладку -- ОК В приложенном шаблоне сделала закладку номдог и ссылку на неё
И да, забыла написать, перед сохранением документа добавьте две строчки [vba]
Sheets("Список для дог").Select Range("A1:G13").Copy objDoc.Bookmarks("таблица").Range.Paste
[/vba]
Стоит G13, но у меня меняющая колонка суммы - сейчас 13 строк, следующая будет 25, следующая 7 строк. Как подправить код, чтобы таблица переносилась не 13 строк по G13, а по последней заполненной минус три строчки (сумма, НДС, ВСЕГО - не нужно).
[/vba] Этот код выделит диапазон ячеек в столбцах с А по G, определяя последнюю ячейку по столбцу G (7) этого же листа Только не знаю, куда поставить минус три строчки??
P.P.S. Всё закрываем тему, решил сам такой строчкой: [vba]
Sheets("Список для дог").Select Range("A1:G13").Copy objDoc.Bookmarks("таблица").Range.Paste
[/vba]
Стоит G13, но у меня меняющая колонка суммы - сейчас 13 строк, следующая будет 25, следующая 7 строк. Как подправить код, чтобы таблица переносилась не 13 строк по G13, а по последней заполненной минус три строчки (сумма, НДС, ВСЕГО - не нужно).
[/vba] Этот код выделит диапазон ячеек в столбцах с А по G, определяя последнюю ячейку по столбцу G (7) этого же листа Только не знаю, куда поставить минус три строчки??
P.P.S. Всё закрываем тему, решил сам такой строчкой: [vba]
Pelena, добрый день! Прошу прощения за беспокойство, подскажите пожалуйста, что добавить в код, чтобы я мог форматировать текст в переносимой с эксель таблицы. Код такой: [vba]
Код
Sheets("Список для дог").Select ' Range("A1:G13").Copy Range("A1:G" & Cells(Rows.Count, 7).End(xlUp).Row - 3).Copy 'Этот код выделит диапазон ячеек в столбцах с А по G, определяя последнюю ячейку по столбцу G (7) этого же листа
objDoc.Bookmarks("таблица").Range.Paste
[/vba]
Пробовал в конце прописывать: [vba]
Код
.Range.PasteExcelTable False, False, True
[/vba] Но в этом варианте таблица переносится не корректно.
Хотел вставить так: [vba]
Код
With objDoc.Bookmarks("таблица").Range.Font .Name = "Times New Roman" .Size = 10 End With
[/vba] Результата не дало... хотя этот вариант устроил бы - может я его не совсем правильно записал?
Спасибо
P.S. Забыл написать - через ЗАКЛАДКУ в верде добиться желаемого шрифта не удалось.
Pelena, добрый день! Прошу прощения за беспокойство, подскажите пожалуйста, что добавить в код, чтобы я мог форматировать текст в переносимой с эксель таблицы. Код такой: [vba]
Код
Sheets("Список для дог").Select ' Range("A1:G13").Copy Range("A1:G" & Cells(Rows.Count, 7).End(xlUp).Row - 3).Copy 'Этот код выделит диапазон ячеек в столбцах с А по G, определяя последнюю ячейку по столбцу G (7) этого же листа
objDoc.Bookmarks("таблица").Range.Paste
[/vba]
Пробовал в конце прописывать: [vba]
Код
.Range.PasteExcelTable False, False, True
[/vba] Но в этом варианте таблица переносится не корректно.
Хотел вставить так: [vba]
Код
With objDoc.Bookmarks("таблица").Range.Font .Name = "Times New Roman" .Size = 10 End With
[/vba] Результата не дало... хотя этот вариант устроил бы - может я его не совсем правильно записал?
Спасибо
P.S. Забыл написать - через ЗАКЛАДКУ в верде добиться желаемого шрифта не удалось.grh1
Vadym Gorokh
Сообщение отредактировал grh1 - Воскресенье, 07.08.2022, 10:28