Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2011, 14:41   #1
meg8639
 
Регистрация: 23.09.2011
Сообщений: 8
По умолчанию макрос в word

Здравствуйте, на форуме я прочитал что, мне могут помочь написать макрос из exel под word, только если я приложу файлы, не могли бы вы мне помочь? В файле exel - "меню", есть кнопка сформировать письма, необходимо что бы по этой кнопке в файле word - "письмо", началось слияние с файлом exel - "письма", в принципе файл word, полностью готов для слияния, но есть три нюанса которые надо учитывать при слиянии:
1. в 5-м меню необходимо нажать кнопку изменить список и отсортировать только по не пустым ячейкам,
2. дата из файла exel -"письма" всегда прописывается числовым значением, но если в файле exel -"письма" начать шевелить формат двух столбцов с датами( даты письма и даты контракта), то даты отражаются в word - "письмо" как даты ( КАК СДЕЛАТЬ ЧТОБЫ ВСЕГДА СТОЯЛИ ДАТЫ), ведь независимо от выбранного формата в "письма",даты всегда сначала числами!
3. НА ФОРУМЕ У ОДНОГО программиста я нашел макрос с падежами под word, для того чтобы после слияния, менять падеж в фамилии во второй строчке письма - "УПОЛНОМОЧЕННОЕ ЛИЦО", почему то макрос не хочет работать, если у вас есть свой макрос по склонению по падежам я был бы рад, или если бы вы мне помогли тот макрос под мой файл word сделать, плюс тогда надо будет добавить кнопку в файле word "письмо", для склонения по падежам. ЗАРАНЕЕ СПАСИБО. Прикрепляю все файлыМакросы падежей.rar

excel.rar

Письмо.doc
meg8639 вне форума Ответить с цитированием
Старый 25.09.2011, 15:35   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
на форуме я прочитал что, мне могут помочь написать макрос
А вы не прочитали (в правилах форума), что не надо дублировать свои сообщения в разных темах?
Удалил копии сообщения в чужих темах.

Цитата:
только если я приложу файлы
Надо ещё и свои наработки прикрепить.
Или надо сделать всё за вас?
В интернете же есть примеры подобных макросов - например, у меня на сайте:

Цитата:
Программа заполнения документов данными из таблицы Excel (из Excel в Word)


Надстройка предназначена для формирования (подготовки) документов по шаблонам, с заполнением созданных файлов данными из текущей книги Excel.

В качестве шаблонов могут выступать следующие типы файлов:
  • документы Word (расширения DOC, DOCX, DOCM)
  • шаблоны Word (расширения DOT, DOTX, DOTM)
  • книги Excel (расширения XLS, XLSX, XLSM, XLSB)
  • шаблоны Excel (расширения XLT, XLTX, XLTM)
  • текстовые документы (расширения TXT, DAT, XML и т.д.)

В качестве исходных данных для заполнения, используется открытый в Excel файл (с таблицей, содержащей строку заголовка)


Количество шаблонов документов неограничено
Хотите готовую программу - платите, и вам сделают.
Хотите, чтобы помогли - хотя бы начните делать сами, и спрашивайте, если что-то не будет получаться.


PS: Очень понравилась КНОПИЩЕ в вашем файле (язык не поворачивается назвать это кнопкой)
Вот только зачем делать кнопку в отдельном файле?
Если сделали кнопку - то где код макроса?

PPS: Если вы решили воспользоваться слиянием - то зачем вообще макросы?

Последний раз редактировалось EducatedFool; 04.04.2012 в 08:42.
EducatedFool вне форума Ответить с цитированием
Старый 25.09.2011, 17:51   #3
meg8639
 
Регистрация: 23.09.2011
Сообщений: 8
По умолчанию

Прошу прощенья, думал что вам будет легче с нуля смотреть файлы.

В общем вот такой макрос, я хочу запустить из файла меню - excel, дело в том что необходимо запускать слияние из файла, для создания писем, так как человек который будет нажимать кнопку не понимает что такое слияние!

По поводу склонений, они уже вбиты в книгу макросов файла word - Письмо, но я не понимаю как она должна работать, что же надо дописать в макросе что бы он автоматически склонял фамилии, ведь база для склонения уже есть вместе с надстройкой!

ЗАРАНЕЕ СПАСИБОexcel.rar

Письмо.doc

Sub Макрос3()
'
' Макрос3 Макрос
'
'
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
ChangeFileOpenDirectory _
"C:\Documents and Settings\Администратор\Рабочий стол\Документы для Middle-Officeп\Письма по нарушениям\"
ActiveDocument.SaveAs FileName:="Письма.doc", FileFormat:=wdFormatDocument _
, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False
Windows("Письмо [Режим ограниченной функциональности]").Activate
Windows("Письма [Режим ограниченной функциональности]").Activate
End Sub
meg8639 вне форума Ответить с цитированием
Старый 01.10.2011, 12:42   #4
meg8639
 
Регистрация: 23.09.2011
Сообщений: 8
По умолчанию ПОЧЕМУ

Если мне сказали что могут сделать макрос, переведя его на движок exel, то почему не делают. Я ведь его ( С БОЛЬШИМ ТРУДОМ для себя) записал, выложил, значит меня дезинформировали. Помогите мне пожалуйста, переведите макрос, так что бы он с кнопки запускался в ексель ( ПЛИЗ)
meg8639 вне форума Ответить с цитированием
Старый 01.10.2011, 13:54   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
сказали что могут сделать макрос, переведя его на движок exel, то почему не делают
ключевое слово здесь МОГУТ. точно так же макрос могут и не сделать...
с Вас взяли предоплату и не выполнили работу? или кто лично что-то должен Вам лично? есть такие... поэтому, надеюсь мысль понятна, не стану ее развивать

А по поводу документа слияния: при обьединеии документа слияния есть возможность стандартно указать какие записи из источника данных должны попасть в итоговый документ. возможности встроенного фильтра вполне приспособлены чтобы задать разнообразные условия отбора записей.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 01.10.2011, 14:06   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Если мне сказали что могут сделать макрос, переведя его на движок exel, то почему не делают
Может, потому, что вам тут никто ничем не обязан?
Или вы считаете, что если вы «С БОЛЬШИМ ТРУДОМ» записали макрорекордером простейший макрос, да ещё и выложили здесь (кстати, не думал, что это так сложно), то мы должны всё бросить, и переделывать ваш код (который, кстати, не очень-то и подходит для этой задачи)?

Сначала вы говорили о помощи:
Цитата:
я прочитал что, мне могут помочь написать макрос
а теперь требуете вам сделать всё вплоть до склонений, код для которого присутствует в какой-то мифической "книге макросов файла word"
(покажите этот код - я его не видел в ваших файлах...)


PS: Есть же у меня на сайте готовое решение - чем оно не подходит?
http://excelvba.ru/code/CreateWordDocuments

Не хотите делать самостоятельно - можете заказать программу
(пример подобной программы, со склонениями и т.п.)

PPS: Ваша задача легко решается вообще без использования макросов - именно для этого в Word реализовано слияние.
Если уж делать макрос - то только для сохранения результатов слияния в отдельные файлы (но какой в этом смысл?)
EducatedFool вне форума Ответить с цитированием
Старый 01.10.2011, 17:37   #7
meg8639
 
Регистрация: 23.09.2011
Сообщений: 8
По умолчанию

Здравствуйте господа программисты, простити если вы меня не правильно поняли, я просто хотел добиться какого-либо диалога с программистом по поводу своей проблемы. Дело в том что я пытаюсь написать макрос с предложенного сайта по созданию писем под свои письма, но так как я не понимаю языка программирования не пойму правильно ли я меняю несколько основных областей относимых только к моему файлу в коде:

1. Имя файла шаблона должно ли быть в той же папке где содержится файл с данным макросом excel

2. Можно ли указать путь для файла- шаблона word ( в моем случае это C:\Base Deal\Письмо 308.dot) ТАКИМ ОБРАЗОМ я думаю что надо вставить здесь:

ПутьШаблона = [COLOR="rgb(160, 82, 45)"][/COLOR]C:\Base Deal\Письмо 308.dot(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)

Filename = НоваяПапка & [COLOR="rgb(160, 82, 45)"]ФИО[/COLOR] & РасширениеСоздаваемыхФайлов

pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
Set WD = WA.Documents.Add(ПутьШаблона): Filename = НоваяПапка & ФИО & РасширениеСоздаваемыхФайлов

3. Можно ли так же указать путь для файла в котором будут обрабатываться столбцы ( ИЛИ НЕОБХОДИМО ПИСАТЬ МАКРОС НЕПОСРЕДСТВЕННО ИЗ НЕГО) - я думаю надо сделать так ЖЕ КАК ВЫШЕ.

4. ОЧЕНЬ НЕОБХОДИМО ПЕРЕРАБОТАТЬ ПУТЬ СОХРАНЕНИЯ ДАННЫХ ПИСЕМ - V:\Нарушения\2011 !!! И НАИМЕНОВАНИЯ ДАННОЙ ПАПКИ ( с датой просто прекрасный ход, но вот вместо договоров нужно сделать слово ПИСЬМА, желательно убрать время и хотелось бы конечно оставить только месяц из даты)

Я думаю надо сделать так по отношению к названию папки, но по поводу пути их сохранения не знаю.

pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
WA.Quit False: pi.Hide
msg = "ПИСЬМА " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка
MsgBox msg, vbInformation, "Готово"
End Sub

Function NewFolderName() As String
NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "[COLOR="rgb(160, 82, 45)"][/COLOR]ПИСЬМА,сформированные " & Get_Now)
MkDir NewFolderName
End Function


5. САМОЕ ВАЖНОЕ ЧТО Я даже примерно не могу разобрать, по поводу выбора столбца для наименования файлов внутри папки( я например хочу что бы файлы назывались по коду клиента в моем случае)

На мой взгляд надо сделать так:

For Each row In ActiveSheet.Rows("5:" & r)
With row
ФИО = Trim$(.Cells(1)) & " " & Trim$(.Cells(2)) & " " & Trim$(.Cells(3))
Filename = НоваяПапка & [COLOR="rgb(160, 82, 45)"]КОД КЛИЕНТА[/COLOR] & РасширениеСоздаваемыхФайлов

pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
Set WD = WA.Documents.Add(ПутьШаблона): [COLOR="rgb(160, 82, 45)"]DoEvents[/COLOR]

pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
For i = 1 To КоличествоОбрабатываемыхСтолбцов
FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i))

' так почему-то заменяет не всё (не затрагивает таблицу)
'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True

К ФАЙЛУ ПРИКРЕПЛЕН ПЕРВОНАЧАЛЬНЫЙ МАКРОС, который я хочу под себя переделать.
Текстовый документ.txt

СПАСИБО ЗАРАНЕЕ.
meg8639 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос замены в word Foma-78 Microsoft Office Word 3 19.06.2012 05:33
Макрос поиска в MO Word! auqarius Microsoft Office Word 5 18.04.2011 02:20
Макрос в MO Word auqarius Помощь студентам 0 11.04.2011 22:50
Макрос для Word Squash Помощь студентам 1 28.03.2011 21:00
Макрос в Word Mictiann Microsoft Office Word 1 12.09.2007 09:35