Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выбрать 1 строку экселя, передать в Word - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Word » Выбрать 1 строку экселя, передать в Word (Макросы/Sub)
Выбрать 1 строку экселя, передать в Word
3322244 Дата: Четверг, 25.02.2021, 21:56 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
Приветствую!
Собираю код в кучу, в просторах инета нашел похожий (стартовый) код, не могу исправить под свою задачу.

В идеале, что будет, куда иду.
Открываю таблицу, первая колонка пустая, остальные колонки заполнены уникальными данными клиента, для договоров (для 5 разных договором / шаблонов)

Выбираю строку руками, знаю, что тут нужен договор №777, добавил руками значение в колонку А = «777»,
Жмакаю на скрипт
Скрипт заполнил данными по шаблону именно для дока №777, сохранил / закрыл.
Это в идеале.

Вернемся к первому шагу
в примере с инета перебираются ВСЕ данные первой колонки (№ пп, номер),
скрипт работает если заполнена первая ячейка строки
не работает, если не заполнена ячейка
[vba]
Код


Sub main()
Dim wdApp As Object
Dim wdDoc As Object

HomeDir$ = ThisWorkbook.Path
Set wdApp = CreateObject("Word.Application")
i% = 2
Do
If Cells(i%, 1).Value = "" Then Exit Do
If Cells(i%, 1).Value <> "" Then

NPP$ = Cells(i%, 1).Text
ID$ = Cells(i%, 2).Text
Adress$ = Cells(i%, 3).Text
SN$ = Cells(i%, 4).Text

DataC$ = Date

FileCopy HomeDir$ + "\template.doc", HomeDir$ + "\" + NPP$ + "_" + ID$ + "_" + DataC$ + ".doc"
Set wdDoc = wdApp.Documents.Open(HomeDir$ + "\" + NPP$ + "_" + ID$ + "_" + DataC$ + ".doc")

wdDoc.Range.Find.Execute FindText:="&date", ReplaceWith:=DataC$

wdDoc.Range.Find.Execute FindText:="&id", ReplaceWith:=ID$
wdDoc.Range.Find.Execute FindText:="&adress", ReplaceWith:=Adress$
wdDoc.Range.Find.Execute FindText:="&sn", ReplaceWith:=SN$

wdDoc.Save
wdDoc.Close
End If

i% = i% + 1
Loop
wdApp.Quit
MsgBox "Готово!"

End Sub
[/vba]

коротко что хочу именно сейчас

исправить код, в котором скрипт:
- перебрал и выбрал строку экселя, ЕСЛИ в первой ячейке (A2-A3000) значение равно «777»

дальше второй этап уже сам, буду вставлять +4 документа и условия шаблонов Word

Огромнейшее спасибо, заранее!
К сообщению приложен файл: 5546579.xlsm (18.4 Kb) · template.doc (29.0 Kb)


Сообщение отредактировал 3322244 - Четверг, 25.02.2021, 21:58
 
Ответить
СообщениеПриветствую!
Собираю код в кучу, в просторах инета нашел похожий (стартовый) код, не могу исправить под свою задачу.

В идеале, что будет, куда иду.
Открываю таблицу, первая колонка пустая, остальные колонки заполнены уникальными данными клиента, для договоров (для 5 разных договором / шаблонов)

Выбираю строку руками, знаю, что тут нужен договор №777, добавил руками значение в колонку А = «777»,
Жмакаю на скрипт
Скрипт заполнил данными по шаблону именно для дока №777, сохранил / закрыл.
Это в идеале.

Вернемся к первому шагу
в примере с инета перебираются ВСЕ данные первой колонки (№ пп, номер),
скрипт работает если заполнена первая ячейка строки
не работает, если не заполнена ячейка
[vba]
Код


Sub main()
Dim wdApp As Object
Dim wdDoc As Object

HomeDir$ = ThisWorkbook.Path
Set wdApp = CreateObject("Word.Application")
i% = 2
Do
If Cells(i%, 1).Value = "" Then Exit Do
If Cells(i%, 1).Value <> "" Then

NPP$ = Cells(i%, 1).Text
ID$ = Cells(i%, 2).Text
Adress$ = Cells(i%, 3).Text
SN$ = Cells(i%, 4).Text

DataC$ = Date

FileCopy HomeDir$ + "\template.doc", HomeDir$ + "\" + NPP$ + "_" + ID$ + "_" + DataC$ + ".doc"
Set wdDoc = wdApp.Documents.Open(HomeDir$ + "\" + NPP$ + "_" + ID$ + "_" + DataC$ + ".doc")

wdDoc.Range.Find.Execute FindText:="&date", ReplaceWith:=DataC$

wdDoc.Range.Find.Execute FindText:="&id", ReplaceWith:=ID$
wdDoc.Range.Find.Execute FindText:="&adress", ReplaceWith:=Adress$
wdDoc.Range.Find.Execute FindText:="&sn", ReplaceWith:=SN$

wdDoc.Save
wdDoc.Close
End If

i% = i% + 1
Loop
wdApp.Quit
MsgBox "Готово!"

End Sub
[/vba]

коротко что хочу именно сейчас

исправить код, в котором скрипт:
- перебрал и выбрал строку экселя, ЕСЛИ в первой ячейке (A2-A3000) значение равно «777»

дальше второй этап уже сам, буду вставлять +4 документа и условия шаблонов Word

Огромнейшее спасибо, заранее!

Автор - 3322244
Дата добавления - 25.02.2021 в 21:56
Pelena Дата: Четверг, 25.02.2021, 22:44 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19160
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Две строчки поменяйте.
Вместо
[vba]
Код
If Cells(i%, 1).Value = "" Then Exit Do
If Cells(i%, 1).Value <> "" Then
[/vba]
напишите
[vba]
Код
If Cells(i%, 2).Value = "" Then Exit Do
If Cells(i%, 1).Value = 777 Then
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Две строчки поменяйте.
Вместо
[vba]
Код
If Cells(i%, 1).Value = "" Then Exit Do
If Cells(i%, 1).Value <> "" Then
[/vba]
напишите
[vba]
Код
If Cells(i%, 2).Value = "" Then Exit Do
If Cells(i%, 1).Value = 777 Then
[/vba]

Автор - Pelena
Дата добавления - 25.02.2021 в 22:44
3322244 Дата: Пятница, 26.02.2021, 09:57 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
Pelena, БлагоДарю!
Работает.

При условии, если в колонке А значение 777, формируется документ (ы*).
* если несколько строк имеют значение 777 - формируется несколько доков, по набору данных и шаблону *.doc.
Ровно что хотел! Вы лучший)

если не совсем обнаглел, +1 вопрос)?

Сейчас
/* Условие для 1-го шаблона, имя шаблона 777:
[vba]
Код

If Cells(i%, 2).Value = "" Then Exit Do
If Cells(i%, 1).Value = 777 Then

NPP$ = Cells(i%, 1).Text
ID$ = Cells(i%, 2).Text
Adress$ = Cells(i%, 3).Text
SN$ = Cells(i%, 4).Text
[/vba]

Новое условие,
/* ЕСЛИ несколько шаблонов (777,888,999)

Коротко суть
ставим в колонку А «777» - создается по шаблону данных #777, сохраняется в новый файл *.doc (сейчас уже есть)
ставим в колонку А «888»- создается с данными по шаблону #888 (свой набор данных, крутим шаблон888.doc)
и т.д.
второй вариант даст понимание, как умножить условия на все 5, достаточно показать +1 вариант (777 + 888)

Разверну вопрос
Как перебирать значения, выбирать вариант шаблона
в скобках далее суть, передаю как могу объяснить)
(If Cells(i%, 1).Value = 777 Then || If Cells(i%, 1).Value = 888 Then || If Cells(i%, 1).Value = 999 Then || ...)

И отдавать на создание финального документа свой набор данных, для каждого шаблона, в зависимости от значения в колонке А

наброски карандашом:
if 777
ID$ = Cells(i%, 2).Text
Adress$ = Cells(i%, 3).Text
SN$ = Cells(i%, 4).Text
сохраняем, закрываем
End If

if 888
ID$ = Cells(i%, 2444).Text
Adress$ = Cells(i%, 3444).Text
SN$ = Cells(i%, 4444).Text
сохраняем, закрываем
End If

тут просится Else, но я не художник)

Спасибище)!


Сообщение отредактировал 3322244 - Пятница, 26.02.2021, 10:27
 
Ответить
СообщениеPelena, БлагоДарю!
Работает.

При условии, если в колонке А значение 777, формируется документ (ы*).
* если несколько строк имеют значение 777 - формируется несколько доков, по набору данных и шаблону *.doc.
Ровно что хотел! Вы лучший)

если не совсем обнаглел, +1 вопрос)?

Сейчас
/* Условие для 1-го шаблона, имя шаблона 777:
[vba]
Код

If Cells(i%, 2).Value = "" Then Exit Do
If Cells(i%, 1).Value = 777 Then

NPP$ = Cells(i%, 1).Text
ID$ = Cells(i%, 2).Text
Adress$ = Cells(i%, 3).Text
SN$ = Cells(i%, 4).Text
[/vba]

Новое условие,
/* ЕСЛИ несколько шаблонов (777,888,999)

Коротко суть
ставим в колонку А «777» - создается по шаблону данных #777, сохраняется в новый файл *.doc (сейчас уже есть)
ставим в колонку А «888»- создается с данными по шаблону #888 (свой набор данных, крутим шаблон888.doc)
и т.д.
второй вариант даст понимание, как умножить условия на все 5, достаточно показать +1 вариант (777 + 888)

Разверну вопрос
Как перебирать значения, выбирать вариант шаблона
в скобках далее суть, передаю как могу объяснить)
(If Cells(i%, 1).Value = 777 Then || If Cells(i%, 1).Value = 888 Then || If Cells(i%, 1).Value = 999 Then || ...)

И отдавать на создание финального документа свой набор данных, для каждого шаблона, в зависимости от значения в колонке А

наброски карандашом:
if 777
ID$ = Cells(i%, 2).Text
Adress$ = Cells(i%, 3).Text
SN$ = Cells(i%, 4).Text
сохраняем, закрываем
End If

if 888
ID$ = Cells(i%, 2444).Text
Adress$ = Cells(i%, 3444).Text
SN$ = Cells(i%, 4444).Text
сохраняем, закрываем
End If

тут просится Else, но я не художник)

Спасибище)!

Автор - 3322244
Дата добавления - 26.02.2021 в 09:57
Pelena Дата: Пятница, 26.02.2021, 12:53 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19160
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Почитайте про Select Case
В Вашем случае будет примерно так
[vba]
Код
Select Case Cells(i%, 1).Value
Case 777
    ID$ = Cells(i%, 2).Text
    Adress$ = Cells(i%, 3).Text
    SN$ = Cells(i%, 4).Text
Case 888
    ID$ = Cells(i%, 2444).Text
    Adress$ = Cells(i%, 3444).Text
    SN$ = Cells(i%, 4444).Text
Case 999
    ....
End Select
[/vba]

И да, не надо складывать все вопросы в одну тему. Если ещё появится
Новое условие
, не относящееся к данной теме, создайте новую


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПочитайте про Select Case
В Вашем случае будет примерно так
[vba]
Код
Select Case Cells(i%, 1).Value
Case 777
    ID$ = Cells(i%, 2).Text
    Adress$ = Cells(i%, 3).Text
    SN$ = Cells(i%, 4).Text
Case 888
    ID$ = Cells(i%, 2444).Text
    Adress$ = Cells(i%, 3444).Text
    SN$ = Cells(i%, 4444).Text
Case 999
    ....
End Select
[/vba]

И да, не надо складывать все вопросы в одну тему. Если ещё появится
Новое условие
, не относящееся к данной теме, создайте новую

Автор - Pelena
Дата добавления - 26.02.2021 в 12:53
3322244 Дата: Пятница, 26.02.2021, 13:10 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
Pelena, спасибо!!!
Просто праздник, с утра)

Сделаю до финала, готов поделиться своим конструктором по заполнению Doc.

Он не FillDocuments), стартовый вариант под личную задачу.
В нем несколько макросов, для имени и цены прописью, пр. фишки ...

Ну и не без вашего участия, за что огромная благодарность.
 
Ответить
СообщениеPelena, спасибо!!!
Просто праздник, с утра)

Сделаю до финала, готов поделиться своим конструктором по заполнению Doc.

Он не FillDocuments), стартовый вариант под личную задачу.
В нем несколько макросов, для имени и цены прописью, пр. фишки ...

Ну и не без вашего участия, за что огромная благодарность.

Автор - 3322244
Дата добавления - 26.02.2021 в 13:10
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Word » Выбрать 1 строку экселя, передать в Word (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!