powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос Excel, копирование графика в буффер
11 сообщений из 11, страница 1 из 1
Макрос Excel, копирование графика в буффер
    #37316088
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вот такой макрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim objEx
Set objEx = CreateObject("Excel.Application")
objEx.DisplayAlerts = False
objEx.Visible = False
objEx.WorkBooks.Open "C:\DM.xls"
objEx.Sheets("ДМ").Select
objEx.Sheets("ДМ").ChartArea.Copy
objEx.WorkBooks.Close
objEx.Quit

Макрос копирует график с листа "ДМ" в буффер и закрывает эксель. Но почему-то после objEx.Sheets("ДМ").ChartArea.Copy эксель выдает ошибку: Runtime error '13': Type mismatch. Ошибка эта портит всю автоматизацию, т.к. все это должно выполняться автоматически в невидимом режиме. А т.к. появляется эта странная ошибка, то и эксель не закрывается. Что ему мешает спокойно закрыться? Пробовал и задержку ставить - все равно ошибка.
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37316196
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заметил интересную закономерность. Если файл экселевский очень простой, две страницы и простой график, то закрывается без проблем. Но если файл с кучей данных и страниц плюс еще имеет связи с другими документами - получаю ошибку. Может дело в связях с файлами?
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37316747
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Random2,

Во-первых, открывайте файл в режиме "только для чтения".
При закрытии поставьте флаг - НЕ сохранять изменения.
Не забудьте про set objEx=nothing.
Ну и самое главное — перед копирование напишите objEx.Sheets("ДМ").ChartArea.Activate.
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37317415
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-duke, а можно немного поподробнее. Как открыть файл в режиме только для чтения? Погуглил - ничего не нашел. Вроде бы у команды Open нету никаких параметров. Я так понял, что ошибка возникает именно при выполнении этой строки:
Код: plaintext
objEx.WorkBooks.Open "C:\DM.xls"
Так как файл DM.xls содержит связи с другими файлами, эксель при запуске спрашивает, обновить ли эти связи (игнорируя свойство DisplayAlerts = False). И все-таки я неправильно написал в 1м сообщении. Ошибка Runtime error '13': Type mismatch. выдается после выполнения команды открытия файла (после вопроса об обновлении связей).
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37317420
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. все сводится к тому, как избежать этой ошибки?
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37317480
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Random2,

У WorkBooks.Open - куча параметров и в т.ч. про обновление связей :)
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37317544
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL), спасибо за подсказку. Нашел список параметров, о которых даже не подозревал. Вот как теперь открываю файл:
Код: plaintext
objEx.WorkBooks.Open ("C:\DM.xls"),false,true

Список параметров:
FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended,Origin, Delimiter, Editable, Notify, Converter, AddToMRU

Вопроса об обновлении связей теперь не возникает, но ошибка 13 (Run-time error) все равно появляется, но теперь два раза.
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37317619
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня еще есть подозрение, что во всем виновата версия экселя. Может такое быть?
У меня 2003й эксель, у друга 2007. Проверили на 2007 - ошибки нету.
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37318746
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Random2,

Может. Попробуйте поменять местами две последние строки кода:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim objEx
Set objEx = CreateObject("Excel.Application")
objEx.DisplayAlerts = False
objEx.Visible = False
objEx.WorkBooks.Open FileName:="C:\DM.xls", UpdateLinks:=False, ReadOnly:=True
objEx.Sheets("ДМ").ChartArea.Copy
objEx.Quit
objEx.WorkBooks.Close SaveChanges:=False
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37318798
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Random2,

objEx.Sheets("ДМ").ChartArea.Activate пробовали ?
...
Рейтинг: 0 / 0
Макрос Excel, копирование графика в буффер
    #37318805
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-duke,

В этом точно нет необходимости в т.ч. и в активации листа.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос Excel, копирование графика в буффер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]