Скрытие книги Excel.

Программирование на Visual Basic for Applications
BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Скрытие книги Excel.

Сообщение BazaroffAM » 04.06.2013 (Вт) 22:47

Воспользовался предложенным кодом:

Код: Выделить всё
Application.Visible = False


Его работу не могу назвать корректной. Код мне скрывает приложение целиком! не оставляя возможности работать с другими книгами. Можно ли скрывать не приложение, а определенную книгу? Как?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 04.06.2013 (Вт) 23:18

WorkBook?

PS: А что, слово Application тебе ничего не говорит, почему это "Его работу не могу назвать корректной"?

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Скрытие книги Excel.

Сообщение BazaroffAM » 04.06.2013 (Вт) 23:28

Qwertiy писал(а):WorkBook?

PS: А что, слово Application тебе ничего не говорит, почему это "Его работу не могу назвать корректной"?


Да, "application" сама за себя говорит. Я пытался использовать "Workbook" - ошибка в коде.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 05.06.2013 (Ср) 1:27

ActiveWorkBook, WorkBooks(0), WorkBooks(1)? Аналогично с Document?
И вообще, просто воспользуйся записью макроса, а потом посмотри его код :)

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Скрытие книги Excel.

Сообщение BazaroffAM » 05.06.2013 (Ср) 17:48

)
Ну я уверен что ты действительно гуру в этой области. А я только еще пытаюсь стать начинающим.
Я пытался читать Каммингса... и не то, чтобы "слишком много букв", но обнаружил тенденцию многих самоучителей: они дают кое-какое представление и научают показать пару фокусов. А в остальном водят страждущего за нос, не приближая его к намеченной цели.
В этом и есть, наверное, разница между самоучителями и систематическим образованием. Недостаток практических работ, упражнений и примеров сказывается.
Qwertiy писал(а):ActiveWorkBook, WorkBooks(0), WorkBooks(1)? Аналогично с Document?
И вообще, просто воспользуйся записью макроса, а потом посмотри его код :)

Признаю, что нуб - не представляю себе как это реализовать. Может спустишься с небес и разжуешь?)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 05.06.2013 (Ср) 18:27

BazaroffAM писал(а):Ну я уверен что ты действительно гуру в этой области. А я только еще пытаюсь стать начинающим.

Вот как раз, если бы я был гуру, я бы ответил. А так, я могутолько варианты предложить. И способ найти ответ.

BazaroffAM писал(а):Может спустишься с небес и разжуешь?)

Может ты и умеешь писать макросы без Excel'я, а я вот нет :)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 05.06.2013 (Ср) 18:40

BazaroffAM писал(а):Признаю, что нуб - не представляю себе как это реализовать.

Нажтием пары кнопок:
Hide Active Window.zip
Скринвидео
(1.69 МиБ) Скачиваний: 208

А вот получаемый код:
Код: Выделить всё
ActiveWindow.Visible = False
Windows("Book1").Visible = True
Обращение по имени книги в принципе достаточно предсказуемо, но было получено запистью обратного действия.

PS: Видео смотреть этим.

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Скрытие книги Excel.

Сообщение BazaroffAM » 05.06.2013 (Ср) 22:12

Бред какой-то...
Вот мой код:
Код: Выделить всё
Private Sub UserForm_Initialize()
'Application.Visible = False 'это скрывало все приложение вообще
ActiveWindow.Visible = False

End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 'это скрывало все приложение вообще
'Application.Visible = True 'это скрывало все приложение вообще
'Application.Quit 'это скрывало все приложение вообще
Window("bazaroff").Visible = True
ActiveWindow.Quit
'End Sub


Сообщение об ошибке, но кое что сделал. Он не скрыл окно как таковое, а лишь таблицу в окне и сделал неактивной панель инструментов (активны только макросы и Visual Basic).
Далее я закомментировал введенный код. А файл вроде как испорчен! Даже после перезагрузки компа он мне не показывает таблицу и панель инструментов неактивна.

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Скрытие книги Excel.

Сообщение BazaroffAM » 05.06.2013 (Ср) 22:20

Фуф! Пардон! Справился с отображением все в норме.
Но код не работает, или, правильнее сказать, работает не так как требуется.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 06.06.2013 (Чт) 7:15

BazaroffAM писал(а):
Код: Выделить всё
ActiveWindow.Quit

А это зачем?

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Скрытие книги Excel.

Сообщение BazaroffAM » 06.06.2013 (Чт) 18:13

Qwertiy писал(а):
BazaroffAM писал(а):
Код: Выделить всё
ActiveWindow.Quit

А это зачем?


Это я оставил по аналогии с кодом "Application". Этого делать было не нужно?

И. Строка кода:
Код: Выделить всё
Window("bazaroff").Visible = True

bazaroff - это имя файла эксель. Я правильно сделал?

Но в любом случае, опция Hide делает визуально недоступным содержимое файла, но само окно при этом присутствует.
Не то.(((

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 06.06.2013 (Чт) 19:23

BazaroffAM писал(а):Это я оставил по аналогии с кодом "Application". Этого делать было не нужно?

Думаю, нет...

BazaroffAM писал(а):bazaroff - это имя файла эксель. Я правильно сделал?

Да, но закрытое окно показывать немного сомнительно, так что Quit подчисть.
И скрывать лучше тоже по имени.

BazaroffAM писал(а):Но в любом случае, опция Hide делает визуально недоступным содержимое файла, но само окно при этом присутствует.
Не то.(((

Потому что окно Excell многодокументное. Документ скрывается, но окно остаётся. Более того, в нём могут быть открыты другие документы. Так что или так, или скрывать Application, скорее всего. Кстати, если скрытие Application'а позволяет показывать форму, то можно выбирать между двумя вариантами в зависимости от числа открытых документов. Если не позволяет, возможно поможет WinApi. Либо не использовать макрос, а сделать полноценное приложение на VB6.

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Скрытие книги Excel.

Сообщение BazaroffAM » 06.06.2013 (Чт) 20:53

Qwertiy писал(а):закрытое окно показывать немного сомнительно


Это я подсмотрел. Было такое толкование: при закрытии файла (выходе из программы), прежде чем выйти, необходимо приложение сделать видимым. Эта часть кода, как я понимаю, работает именно при полном выходе из программы. Quite, по сему, тоже из этой оперы.

Qwertiy писал(а):возможно поможет WinApi. Либо не использовать макрос, а сделать полноценное приложение на VB6.


Вот это, возможно, и будет то, что нужно.(((

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Скрытие книги Excel.

Сообщение BazaroffAM » 06.06.2013 (Чт) 20:58

Qwertiy писал(а):приложение на VB6.


Мне необходимо, чтобы прога работала с данными таблицы экселя. Это в VB6 осуществимо?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 06.06.2013 (Чт) 21:34

BazaroffAM писал(а):Это я подсмотрел. Было такое толкование: при закрытии файла (выходе из программы), прежде чем выйти, необходимо приложение сделать видимым. Эта часть кода, как я понимаю, работает именно при полном выходе из программы. Quite, по сему, тоже из этой оперы.

Если не ошибаюсь, это срабатывает при закрытии формы...
В любом случае, вызов закрытия окна подозрителен. Документ закрывается не так. А с тем, что надо сделать окно снова видимым, я согласен.

BazaroffAM писал(а):Вот это, возможно, и будет то, что нужно.(((

Я имел в виду показывать им форму, если другие способы не помогают.
ShowWindow Frm.hwnd, SW_SHOWNA
А почему грустный смайлик?

BazaroffAM писал(а):Мне необходимо, чтобы прога работала с данными таблицы экселя. Это в VB6 осуществимо?

Да, если запустить скрытый Excel. Фотографии страниц книги тут, а вообще, посмотри всю тему.

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Скрытие книги Excel.

Сообщение BazaroffAM » 06.06.2013 (Чт) 23:00

Qwertiy писал(а):вызов закрытия окна подозрителен. Документ закрывается не так.


Вообще-то не могу поспорить за своей неподготовленностью, но с этим кодом все, что обещалось - работает.

Qwertiy писал(а):почему грустный смайлик?


))) Это ж опять какой-то учебник для ознакомления с VB6, среду... все по-новой!)
Но вроде ничего! Скачал, установил уже среду, нашел "учебник" здесь: http://vbzero.narod.ru/. Читаю вот! Начало класс! Настроение поднялось!)))

Qwertiy писал(а):Да, если запустить скрытый Excel. Фотографии страниц книги тут, а вообще, посмотри всю тему.


Спасибо. Только вот некоторая путаница в терминах (исключительно, возможно, в моей голове))): скрытый Эксель - что будет собой представлять? Я его не увижу на экране ни свернутым, никаким? (Это то, что нужно). А возможность открыть одновременно другой документ Эксель будет?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 06.06.2013 (Чт) 23:51

BazaroffAM писал(а):нашел "учебник" здесь: http://vbzero.narod.ru/. Читаю вот!

А смысл? VB6 и VBA практически одинаковые, если знаешь один, то можешь спокойно пользоваться другим. Единственное, на что обязательно наткнёшься - то, что в VB форма - Form, а в VBA - UserForm. Ну и ещё из минусов, контролы VB6 не поддерживают юникод (точнее, как минимум, присваивание Text/Caption из кода), в VBA такой проблемы нет.

BazaroffAM писал(а):скрытый Эксель - что будет собой представлять? Я его не увижу на экране ни свернутым, никаким? (Это то, что нужно). А возможность открыть одновременно другой документ Эксель будет?

Ну я представляю это именно так, но не проверял (и, вероятно, проверить не могу). Т. е. скрывать надо будет всё приложение, но т. к. это будет самостоятельный инстанс Excel'я, связанный с приложением, то должна остаться возможность запустить другой инстанс... Однако советую это проверить прежде чем реализовывать какую-либо функциональность ;)

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Скрытие книги Excel.

Сообщение BazaroffAM » 06.06.2013 (Чт) 23:58

Qwertiy писал(а):А смысл? VB6 и VBA практически одинаковые, если знаешь один, то можешь спокойно пользоваться другим.

Да уже начав читать почувствовал облегчение после Каммингса!) Да и перспектива Экзешников нравится!)

ЗЫ Большущее спасибо за тропу!)))
Кстати, уже во второй теме спрашиваю как "ЗЫ": здесь, на форуме, есть кнопка "благодарность" или "плюс к репутации"?
И еще вопрос: программы, созданные в VB6, нормально ли чувствуют себя в Windows7?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 07.06.2013 (Пт) 0:39

BazaroffAM писал(а):ЗЫ Большущее спасибо за тропу!)))

Надеюсь, поможет :)

BazaroffAM писал(а):здесь, на форуме, есть кнопка "благодарность" или "плюс к репутации"?

Неа :)

BazaroffAM писал(а):И еще вопрос: программы, созданные в VB6, нормально ли чувствуют себя в Windows7?

Есть разные мнения... По-моему, вполне нормально.
А вообще, я себе на VB.NET в основном пишу.

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re:

Сообщение Alec » 07.06.2013 (Пт) 20:32

Qwertiy писал(а): Т. е. скрывать надо будет всё приложение, но т. к. это будет самостоятельный инстанс Excel'я, связанный с приложением, то должна остаться возможность запустить другой инстанс...

Не знаю, как в более поздних, но в XP и 2003 есть Application.IgnoreRemoteRequests = True, как раз запрещает инстансу "подхватывать" открытие книг и они будут открываться в другом. Естественно, нужно возвращать в False перед закрытием. Однако есть проблема - если программа вылетает и значение не возвращено, то состояние IgnoreRemoteRequests сохраняется и нельзя будет открывать книги, пока не вернешь в False
Иногда лучше вовремя остановиться...
И начать заново!


Вернуться в VBA

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

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

    TopList