Страницы: 1
RSS
Как открыть excel книги в одном процессе?, не работают макросы по переносу данных из-за того, что книги открыты в разных процессах.
 
Добрый день! Столкнулся с проблемой, с которой раньше никогда не встречался.
Я не могу не ссылаться из одной книги на другую, ни писать макросы копирующие из одной книги в другую.
Код
 Workbooks(now_book_name).Sheets("Список").Range("B" & i & ":AY" & i) = Workbooks(new_book_name).Sheets("Данные").Range("B2:AY2").Value
Подобные банальные коды не работают. Всё голову сломал и не понимал почему. Позже понял, что открывается два процесса.
Что делать. Как открывать книги в одном процессе через макрос.
Помогите, пожалуйста. DDE запросы оключил. Не понимаю, как побороть эту беду. Сейчас делаю что-то типа:
Код
Set myExcel = CreateObject("Excel.Application")
    Set myWorkBook = myExcel.Workbooks.Open(sOM)
    new_book_name = myWorkBook.Name
   ' MsgBox new_book_name
   ' MsgBox now_book_name
    myExcel.Visible = True
    Workbooks(now_book_name).Sheets("Список").Range("B" & i & ":AY" & i) = Workbooks(new_book_name).Sheets("Данные").Range("B2:AY2").Value

    myWorkBook.Save
    myWorkBook.Close
 
Цитата
Юрий написал:
Set myExcel = CreateObject("Excel.Application")
Так Вы сами новый процесс создаете через CreateObject("Excel.Application").
Если хотите обратиться к уже открытому - надо использовать
Код
Set myExcel = GetObject(,"Excel.Application")

А если Вы открываете книгу из другой книги Excel - то это и вовсе не нужно, ссылка на приложение уже есть - Application.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Стоит включить голову и всё работает...  Кучу времени ломал голову, стоило написать на форму... Прошу прощения. Сам же пишу:
Код
myExcel = CreateObject("Excel.Application")
Вопрос тогда в том, как открываемые книги открывать с скрытом режиме?
 
Цитата
Юрий написал:
книги открывать с скрытом режиме?
поиском не пробовали пользоваться? :)
Код
Set myWorkBook = GetObject(sOM)

Ну и не могу не спросить: а зачем скрытый режим? Какая польза от него, если книгу все равно потом закрываете? Банальной отмены обновления экрана будет за глаза.
Изменено: Дмитрий(The_Prist) Щербаков - 13.09.2024 12:43:00
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
Set myExcel = GetObject(,"Excel.Application")
Спасибо огромное! Что-то я давно не писал макросы вне одной книги :)

Вы правы, наверное смысла нет. Просто решил для ускорения сделать по аналогии. Перехожу с word файлов на excel шаблоны, и полностью решил продублировать код:
Код
    On Error Resume Next
    Set WordApp = GetObject(, "word.application")
    If WordApp Is Nothing Then
        Set WordApp = CreateObject("word.application")
    End If
    On Error GoTo 0
    With WordApp
        .Visible = False
        .Documents.Open Filename:=sOM
    End With

Он не сработал и я начал экспериментировать...
наверное признаюсь в ещё одной глупости... Я нашел даже выход перед тем как писать на форуме, но всё же данный костыль не давал мне покоя. Я запускал excel через:
Код
CreateObject("WScript.Shell").Run 
Изменено: Юрий - 13.09.2024 12:49:32
Страницы: 1
Наверх