Макрос не сохранённого файла

Программирование на Visual Basic for Applications
Владимир7
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 13.03.2008 (Чт) 22:12

Макрос не сохранённого файла

Сообщение Владимир7 » 02.12.2009 (Ср) 0:33

Здравствуйте уважаемые эксперты. Можно ли макросом сохранённого на диске файла Excel (C:\file1.xls),
а) создать новый сеанс Microsoft Excel
Set wd = CreateObject("excel.application")
б) и там уже создать новую книгу Excel, скопировать в неё Module2 из file1.xls с макросом Макрос5
в) макросом из открытого же file1.xls запустить на выполнение Макрос5 из Module2 который уже есть в новом созданном файле при условии что новый файл ещё не сохранен?

Первые два пункта у меня получились (а и б), можно даже сохранить новый файл в нужном месте, но требуется первоначально выполнить макрос нового файла, а потом уже его сохранять. Run и Call пробовал ..., не получается :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Макрос не сохранённого файла

Сообщение alibek » 02.12.2009 (Ср) 1:23

Зачем делать а?
Покажи, как именно пробовал делать в.
Lasciate ogni speranza, voi ch'entrate.

Владимир7
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 13.03.2008 (Чт) 22:12

Re: Макрос не сохранённого файла

Сообщение Владимир7 » 02.12.2009 (Ср) 8:41

Module1
Sub MS_Word()
Dim wd As Object
Set wd = CreateObject("excel.application")
AppActivate wd.Name
Set exaw = wd.Workbooks.Add
Filename = "C:\" & "temp.bas"
ThisWorkbook.VBProject.VBComponents("Module2").Export Filename
Set vbp = exaw.VBProject
With vbp.VBComponents
.Import Filename
End With
Kill Filename
exaw.SaveAs Filename:="D:\Книга2009.xls", FileFormat:=xlExcel8, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

mmma
Set wd = Nothing
End Sub


Module2
Sub mmma()
MsgBox "URA!"
End Sub
Последний раз редактировалось Владимир7 05.12.2009 (Сб) 19:37, всего редактировалось 1 раз.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Макрос не сохранённого файла

Сообщение Денис » 02.12.2009 (Ср) 8:56

Владимир7 писал(а):
Код: Выделить всё
Module1
Sub MS_Word()
    Dim wd As Object
    Set wd = CreateObject("excel.application")
    wd.Visible = True
    AppActivate wd.Name
    wd.Visible = True 'False
    Set exaw = wd.Workbooks.Add
    Filename = "C:\" & "temp.bas"
    ThisWorkbook.VBProject.VBComponents("Module2").Export Filename
    Set vbp = exaw.VBProject
    With vbp.VBComponents
        .Import Filename
    End With
    Kill Filename
    exaw.SaveAs Filename:="D:\Книга2009.xls", FileFormat:=xlExcel8, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
   
    mmma   
    Set wd = Nothing
End Sub


Module2
Sub mmma()
    MsgBox "URA!"
End Sub


Ого. А что ж это Вы mmma вызываете из своего word-проекта? надо как минимум: exaw.mmma() точнее не скажу, надо из вашего проекта смотреть. Еще для удобства можно подключить к Word (в референсах) объектную модель Excel.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Макрос не сохранённого файла

Сообщение alibek » 02.12.2009 (Ср) 9:05

Не exaw, а имя второго проекта.
Lasciate ogni speranza, voi ch'entrate.

Владимир7
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 13.03.2008 (Чт) 22:12

Re: Макрос не сохранённого файла

Сообщение Владимир7 » 02.12.2009 (Ср) 10:02

alibek спасибо за подсказку
имя присвоить проекту второго файла:
Set vbp = exaw.VBProject
exaw.VBProject.Name = "TestProject"
а вот как им воспользоваться при запуске второго макроса?
Application.Run TestProject.mmma - не работает,
Application.Run TestProject.mmma() - не работает

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Макрос не сохранённого файла

Сообщение alibek » 02.12.2009 (Ср) 11:28

Application.Run не нужен.
Либо, если используешь его, заключай аргумент в кавычки.
Lasciate ogni speranza, voi ch'entrate.

Владимир7
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 13.03.2008 (Чт) 22:12

Re: Макрос не сохранённого файла

Сообщение Владимир7 » 02.12.2009 (Ср) 14:46

Вот за что мне Excel нравится: желаемое можно достигнуть разными путями,
и что можно методом тыка проверить разные варианты (не то что в электричестве, или скажем в медицине).
Всё в файле моём заработало как было задумано, без всякого сохранения второго файла, только из-за того что путь кривой, обходной (через Sheets), то этот пример не пишу здесь.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Макрос не сохранённого файла

Сообщение Денис » 02.12.2009 (Ср) 14:57

Владимир7 писал(а):Вот за что мне Excel нравится: желаемое можно достигнуть разными путями,
и что можно методом тыка проверить разные варианты (не то что в электричестве, или скажем в медицине).


Не только в экселе. А во многих объектных моделях, как офиса, так и винды, и многих других программ с функциями скриптинга и языков (их сред разработки).
Проблема в том, что я сам сравнительно недавно понял, что несмотря на кажущуюся равнозначность методов, одни из них быстрее, вторые медленнее, а третьи неправильные.
Вот чтобы отделить зерна от плевел, вы должны развиваться. Ну, если конечно Вы этого хотите. А то ведь задача уже решена и вроде бы и развиваться уже не надо.

Владимир7 писал(а):Всё в файле моём заработало как было задумано, без всякого сохранения второго файла, только из-за того что путь кривой, обходной (через Sheets), то этот пример не пишу здесь.


Но если всё таки надо, то выкладывайте код на бочку и приготовьтесь к критике.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Владимир7
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 13.03.2008 (Чт) 22:12

Re: Макрос не сохранённого файла

Сообщение Владимир7 » 02.12.2009 (Ср) 15:38

редактировано

Владимир7
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 13.03.2008 (Чт) 22:12

Re: Макрос не сохранённого файла

Сообщение Владимир7 » 02.12.2009 (Ср) 18:45

"несмотря на кажущуюся равнозначность методов, одни из них быстрее, вторые медленнее, а третьи неправильные"

Денис, Вы так красиво говорите, ... .


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

    TopList