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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2013, 09:29   #1
glumz
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 12
По умолчанию Закрытие объекта Workbook объявленного как Public

Добрый день.
Есть следующий код:
Option Explicit
Public a As Workbook

Sub Макрос1()
'
' Ìàêðîñ1 Ìàêðîñ
'
Set a = GetObject("\\ÎÒ÷åò\Ïðåìèè.xlsx")
MsgBox a.Worksheets("Report").Cells(7, 11).Value
'a.Close
End Sub
Sub z()
Макрос1
a.Close
End Sub

Общая мысль такова-в начале открываем несколько файлов через функцию GetObject, потом работаем с ними в разных подпрограммах и в конце закрываем. Так вот после отработки Sub z() данный файл остается открытым. Что я делаю не так? (Если инициировать объект как локальный то закрытие проходит нормально)
glumz вне форума Ответить с цитированием
Старый 22.08.2013, 09:46   #2
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

попробуйте так:
Код:
a.Close (False) если книгу не нужно сохранять
a.Close (True) если книгу нужно сохранять
Добавлено позже:
не получилось ((( ща попробую еще раз
Единственный способ стать умнее, играть с более умным противником...

Последний раз редактировалось staniiislav; 22.08.2013 в 09:53.
staniiislav вне форума Ответить с цитированием
Старый 22.08.2013, 10:06   #3
glumz
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 12
По умолчанию

К сожалению, не работает
glumz вне форума Ответить с цитированием
Старый 22.08.2013, 10:21   #4
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Код:
Option Explicit

Public Wb As Workbook

Private Sub z_2()
Set Wb = GetObject(ThisWorkbook.Path & "\1.xlsm")
MsgBox Wb.Worksheets(1).Cells(1, 1).Value
End Sub
Private Sub z()
Call z_2
Wb.Close
Set Wb = Nothing
End Sub
вроде так работает
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 22.08.2013, 10:33   #5
glumz
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 12
По умолчанию

Спасибо! Заработало.
glumz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CLR. Ошибка C3918. Как вызвать из объекта обработчик, переданный родителю объекта от деда? Stilet Общие вопросы .NET 0 15.01.2011 17:49
Workbook Designer и F1Book artemavd Компоненты Delphi 0 15.01.2011 17:49
Закрытие Workbook 3BEPOBOY Microsoft Office Excel 5 29.12.2010 15:00
Чем отличается раздел public от простого? И как сделть функцию сразу для двух действий? TwiX Общие вопросы Delphi 1 06.10.2009 23:00
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene DomKr@t Мультимедиа в Delphi 0 14.12.2008 01:52