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

Вход

Регистрация

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

 

= Мир MS Excel/Запись макроса - из Excel в Word - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись макроса - из Excel в Word (Макросы/Sub)
Запись макроса - из Excel в Word
rotten41 Дата: Четверг, 27.07.2017, 17:16 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день, уважаемые программисты.
Помогите разобраться.

У меня есть макрос, позволяющий записывать код - с листа - прямо в модуль.
Но это все происходит в эксель - на листе которого этот код записан.

Как заставить макрос - записать этот код не в тот же файл xls, в котором находится лист3, а в документ Word - 1.doc (который лежит с ним в одной папке) ?

(разумеется макрос в ворде - работать не будет. Просто нужно перенести содержимое ячеек J23,J24,J25 с листа3 - в модуль макроса файла 1.doc)
К сообщению приложен файл: 2792100.xls (45.0 Kb) · 5362704.doc (10.5 Kb)
 
Ответить
СообщениеДобрый день, уважаемые программисты.
Помогите разобраться.

У меня есть макрос, позволяющий записывать код - с листа - прямо в модуль.
Но это все происходит в эксель - на листе которого этот код записан.

Как заставить макрос - записать этот код не в тот же файл xls, в котором находится лист3, а в документ Word - 1.doc (который лежит с ним в одной папке) ?

(разумеется макрос в ворде - работать не будет. Просто нужно перенести содержимое ячеек J23,J24,J25 с листа3 - в модуль макроса файла 1.doc)

Автор - rotten41
Дата добавления - 27.07.2017 в 17:16
InExSu Дата: Пятница, 28.07.2017, 00:13 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
перенести содержимое ячеек J23,J24,J25 с листа3 - в модуль макроса файла 1.doc


Готовишь файл c:\YourFile.docm. Вбиваешь в ThisDocument макрос
[vba]
Код
Sub AutoOpen()
  'http://www.cyberforum.ru/vba/thread317161.html
  'В sClpbrdText будет передан текст, который был скопирован в буфер последним.
  'Для работы код необходимо подключить библиотеку Microsoft Forms 2.0 Object Lybrary. Но подключить её проще всего так: создаете новую UserForm и удаляете. Библиотека подключится автоматически сама.
  Dim objClpBrd As DataObject, sClpbrdText As String
  Set objClpBrd = New DataObject
  objClpBrd.GetFromClipboard
  sClpbrdText = objClpBrd.GetText
  ActiveDocument.VBProject.VBComponents(2).CodeModule.AddFromString sClpbrdText
End Sub
[/vba]

В Word создай UserForm и удали.

В своей книге запусти макрос
[vba]
Код
Sub МакросВWord_InExSu()
  Range("j23:j26").Copy
  Filename$ = "c:\YourFile.docm"
  CreateObject("wscript.shell").Run """" & Filename$ & """"
End Sub
[/vba]
К сообщению приложен файл: 2792100_InExSu.xls (47.0 Kb) · YourFile.docm (20.3 Kb)


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
перенести содержимое ячеек J23,J24,J25 с листа3 - в модуль макроса файла 1.doc


Готовишь файл c:\YourFile.docm. Вбиваешь в ThisDocument макрос
[vba]
Код
Sub AutoOpen()
  'http://www.cyberforum.ru/vba/thread317161.html
  'В sClpbrdText будет передан текст, который был скопирован в буфер последним.
  'Для работы код необходимо подключить библиотеку Microsoft Forms 2.0 Object Lybrary. Но подключить её проще всего так: создаете новую UserForm и удаляете. Библиотека подключится автоматически сама.
  Dim objClpBrd As DataObject, sClpbrdText As String
  Set objClpBrd = New DataObject
  objClpBrd.GetFromClipboard
  sClpbrdText = objClpBrd.GetText
  ActiveDocument.VBProject.VBComponents(2).CodeModule.AddFromString sClpbrdText
End Sub
[/vba]

В Word создай UserForm и удали.

В своей книге запусти макрос
[vba]
Код
Sub МакросВWord_InExSu()
  Range("j23:j26").Copy
  Filename$ = "c:\YourFile.docm"
  CreateObject("wscript.shell").Run """" & Filename$ & """"
End Sub
[/vba]

Автор - InExSu
Дата добавления - 28.07.2017 в 00:13
AndreTM Дата: Пятница, 28.07.2017, 02:12 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
А зачем через буфер обмена действовать? По аналогии с VBA-проектом Excel почему не записать и в Word?
[vba]
Код
Sub Макрос2()
    ' это ваша запись в проект текущей книги
    For i = 1 To 3
        ActiveWorkbook.VBProject.VBComponents(1).CodeModule.ReplaceLine i + 1, Range("J" & 22 + i)
    Next i
    ' это ваша запись в проект нужного файла Word
    ' в ЦУБ приложения Word должно быть включено "Доверять доступ к объектной модели проектов VBA"
    ' естественно, в документе Word должен уже существовать аналогичный модуль с аналогичной процедурой
    ' ну или работайте с объектной моделью wd.VBProject, как вам надо
    Set wapp = CreateObject("Word.Application")
    wapp.Visible = True
    Set wd = wapp.Documents.Open(ThisWorkbook.Path & Application.PathSeparator & "1.docm")
    For i = 1 To 3
        wd.VBProject.VBComponents(2).CodeModule.ReplaceLine i + 1, Range("J" & 22 + i)
    Next i
    wd.Close True
    wapp.Quit
End Sub
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА зачем через буфер обмена действовать? По аналогии с VBA-проектом Excel почему не записать и в Word?
[vba]
Код
Sub Макрос2()
    ' это ваша запись в проект текущей книги
    For i = 1 To 3
        ActiveWorkbook.VBProject.VBComponents(1).CodeModule.ReplaceLine i + 1, Range("J" & 22 + i)
    Next i
    ' это ваша запись в проект нужного файла Word
    ' в ЦУБ приложения Word должно быть включено "Доверять доступ к объектной модели проектов VBA"
    ' естественно, в документе Word должен уже существовать аналогичный модуль с аналогичной процедурой
    ' ну или работайте с объектной моделью wd.VBProject, как вам надо
    Set wapp = CreateObject("Word.Application")
    wapp.Visible = True
    Set wd = wapp.Documents.Open(ThisWorkbook.Path & Application.PathSeparator & "1.docm")
    For i = 1 To 3
        wd.VBProject.VBComponents(2).CodeModule.ReplaceLine i + 1, Range("J" & 22 + i)
    Next i
    wd.Close True
    wapp.Quit
End Sub
[/vba]

Автор - AndreTM
Дата добавления - 28.07.2017 в 02:12
rotten41 Дата: Пятница, 28.07.2017, 07:41 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
InExSu, все работает спасибо.
 
Ответить
СообщениеInExSu, все работает спасибо.

Автор - rotten41
Дата добавления - 28.07.2017 в 07:41
rotten41 Дата: Пятница, 28.07.2017, 07:46 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
AndreTM, ваш макрос не работает.

Выполнил все инструкции.
Макрос сперва запускает файл 1.docm, затем выдается ошибка "Run-time error "-2147024809 (80070057) Invalid procedure call or argument"
 
Ответить
СообщениеAndreTM, ваш макрос не работает.

Выполнил все инструкции.
Макрос сперва запускает файл 1.docm, затем выдается ошибка "Run-time error "-2147024809 (80070057) Invalid procedure call or argument"

Автор - rotten41
Дата добавления - 28.07.2017 в 07:46
AndreTM Дата: Пятница, 28.07.2017, 09:40 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Макрос сперва запускает файл 1.docm, затем выдается ошибка "Run-time error "-2147024809 (80070057) Invalid procedure call or argument"

    ' в ЦУБ приложения Word должно быть включено "Доверять доступ к объектной модели проектов VBA"
    ' естественно, в документе Word должен уже существовать аналогичный модуль с аналогичной процедурой
    ' ну или работайте с объектной моделью wd.VBProject, как вам надо


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
Макрос сперва запускает файл 1.docm, затем выдается ошибка "Run-time error "-2147024809 (80070057) Invalid procedure call or argument"

    ' в ЦУБ приложения Word должно быть включено "Доверять доступ к объектной модели проектов VBA"
    ' естественно, в документе Word должен уже существовать аналогичный модуль с аналогичной процедурой
    ' ну или работайте с объектной моделью wd.VBProject, как вам надо

Автор - AndreTM
Дата добавления - 28.07.2017 в 09:40
rotten41 Дата: Пятница, 28.07.2017, 10:43 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
AndreTM, я же написал - "Выполнил все инструкции".
Все равно ваш макрос не работает.
 
Ответить
СообщениеAndreTM, я же написал - "Выполнил все инструкции".
Все равно ваш макрос не работает.

Автор - rotten41
Дата добавления - 28.07.2017 в 10:43
AndreTM Дата: Пятница, 28.07.2017, 11:25 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Для этого надо приложить ваши файлы. Потому что не работает в вашем коде.
И самое главное слово там было - "работайте с объектной моделью wd.VBProject", потому что действия, которые вы выполняете - они ну очень зависят именно от структуры проекта.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеДля этого надо приложить ваши файлы. Потому что не работает в вашем коде.
И самое главное слово там было - "работайте с объектной моделью wd.VBProject", потому что действия, которые вы выполняете - они ну очень зависят именно от структуры проекта.

Автор - AndreTM
Дата добавления - 28.07.2017 в 11:25
rotten41 Дата: Пятница, 28.07.2017, 12:36 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
AndreTM, прикладываю файлы.
Можете видеть, что макрос не работает.
К сообщению приложен файл: 5840835.docm (17.9 Kb) · 4700720.xls (45.0 Kb)
 
Ответить
СообщениеAndreTM, прикладываю файлы.
Можете видеть, что макрос не работает.

Автор - rotten41
Дата добавления - 28.07.2017 в 12:36
doober Дата: Пятница, 28.07.2017, 13:00 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
' естественно, в документе Word должен уже существовать аналогичный модуль с аналогичной процедурой

Модуль в ворде чистый,менять нечего


 
Ответить
Сообщение
' естественно, в документе Word должен уже существовать аналогичный модуль с аналогичной процедурой

Модуль в ворде чистый,менять нечего

Автор - doober
Дата добавления - 28.07.2017 в 13:00
AndreTM Дата: Пятница, 28.07.2017, 13:02 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Не вижу :D

Вам же русским языком сказано:
' естественно, в документе Word должен уже существовать аналогичный модуль с аналогичной процедурой

То есть вы хотя бы понимаете, что обращение
[vba]
Код
wd.VBProject.VBComponents(2).CodeModule
[/vba]означает, что компонент (2) должен существовать в проекте (это будет наш общий модуль Module1, а
[vba]
Код
.ReplaceLine i + 1, Range("J" & 22 + i)
[/vba] - что строчки для записи тоже должны уже быть в модуле, хотя бы пустые?
И что там делает процедура AutoOpen(), которая вам при открытии файла - как раз и запортит содержимое кода в модуле? Вы уж, батенька, или шишки под ёлкой ищите, или арбузы - но на бахче...
К сообщению приложен файл: 2374049.docm (16.5 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеНе вижу :D

Вам же русским языком сказано:
' естественно, в документе Word должен уже существовать аналогичный модуль с аналогичной процедурой

То есть вы хотя бы понимаете, что обращение
[vba]
Код
wd.VBProject.VBComponents(2).CodeModule
[/vba]означает, что компонент (2) должен существовать в проекте (это будет наш общий модуль Module1, а
[vba]
Код
.ReplaceLine i + 1, Range("J" & 22 + i)
[/vba] - что строчки для записи тоже должны уже быть в модуле, хотя бы пустые?
И что там делает процедура AutoOpen(), которая вам при открытии файла - как раз и запортит содержимое кода в модуле? Вы уж, батенька, или шишки под ёлкой ищите, или арбузы - но на бахче...

Автор - AndreTM
Дата добавления - 28.07.2017 в 13:02
rotten41 Дата: Суббота, 29.07.2017, 16:51 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
AndreTM, теперь разобрался.
Спасибо за код.
 
Ответить
СообщениеAndreTM, теперь разобрался.
Спасибо за код.

Автор - rotten41
Дата добавления - 29.07.2017 в 16:51
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись макроса - из Excel в Word (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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