Как при окрытии книги сделать ее «невидимой»? |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
VISXAN Пользователь Сообщений: 135 |
#1 10.09.2013 15:07:04 Здравствуйте. Подскажите пожалуйста, как открыть книгу через VBA, чтоб она открывалась в фоне, а не становилась активной. Код ниже открывает книгу и делает ее активной. А надо чтобы оставалась открытой в фоне.
|
||
Михаил С. Пользователь Сообщений: 10514 |
#2 10.09.2013 15:12:19
Изменено: Михаил С. — 10.09.2013 15:13:12 |
||
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
Или активировать затем окно «основной» книги. |
VISXAN Пользователь Сообщений: 135 |
Понятно. Спасибо. Сделал книгу изначально скрытой, теперь при открытии она не мешает. Но в конце макроса мне надо написать код, чтоб сделать ее видимой. |
ber$erk Пользователь Сообщений: 2735 |
а как вы книгу делаете невидимой? Вот и идите от обратного Учимся сами и помогаем другим… |
VISXAN Пользователь Сообщений: 135 |
#6 10.09.2013 16:16:05 Невидимой сделал вручную и сохранил. А теперь с помощью кода надо сделать видимой.
не получается. Изменено: VISXAN — 10.09.2013 16:21:08 |
||
Hugo Пользователь Сообщений: 23251 |
#7 10.09.2013 16:20:38
|
||
VISXAN Пользователь Сообщений: 135 |
#8 10.09.2013 16:29:35
этот код открывает книгу скрытой (даже если она такой не является), поэтому от него отказался.
Далее, после определенной процедуры VBA (заполнения данной книги данными), нужно сделать книгу видимой. Этот код не помогает:
Изменено: VISXAN — 10.09.2013 16:31:03 |
||||||
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
#9 10.09.2013 16:39:06 Вы сами себя слышите?
Поэтому открываю книгу и тут же делаю ее невидимой
Мазохисты всех стран — объединяйтесь. А на вопрос ответил Hugo. Я сам — дурнее всякого примера! … |
||||
Hugo Пользователь Сообщений: 23251 |
Т.к. форум тормозит с screenupdating — диалог получается интересным |
VISXAN Пользователь Сообщений: 135 |
KuklP, да не делаю я ее скрытой. Она сама скрытая, куда ее еще скрывать. |
Михаил С. Пользователь Сообщений: 10514 |
#12 10.09.2013 16:49:43
Изменено: Михаил С. — 10.09.2013 16:52:46 |
||
VISXAN Пользователь Сообщений: 135 |
Михаил С., спасибо Вам большое. Четко и просто. |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
#14 10.09.2013 16:57:50 Миша, мож так?
Я сам — дурнее всякого примера! … |
||
Без разницы. Но так наверно проще. Изменено: Михаил С. — 10.09.2013 17:02:47 |
|
VISXAN Пользователь Сообщений: 135 |
#16 10.09.2013 17:03:18 А что делает этот код?
|
||
удаляет GetObject. зы. ежели что — я сам ангелького не понимаю. Пользуюсь переводчиком Изменено: Михаил С. — 10.09.2013 17:08:35 |
|
VISXAN Пользователь Сообщений: 135 |
Ах да, ступил. Удаляет присвоенное значение. Ну или присваивает ничего)) Изменено: VISXAN — 10.09.2013 17:30:37 |
Максим Пользователь Сообщений: 268 |
#19 09.04.2019 20:00:14 подскажите пожалуйста как сделать чтобы не моргало на
Application.ScreenUpdating = False — не помогает Изменено: Максим — 09.04.2019 22:01:33 |
||
Максим Пользователь Сообщений: 268 |
#20 09.04.2019 20:42:23 пока решил так:
но что-то кажется что слишком тяжёлая артиллерия Изменено: Максим — 09.04.2019 20:42:55 |
||
rank1 |
|
1 |
|
Как сделать книгу невидимой?12.05.2012, 23:07. Показов 5846. Ответов 4
Есть ли способ сделать так, чтобы книга сидела в памяти, но ее не было бы видно в таскбаре и у нее бы не было ни одного видимого листа. То есть чтобы это был xls файл, а не xla надстройка. |
VladConn 5 / 5 / 3 Регистрация: 17.10.2007 Сообщений: 1,119 |
||||
13.05.2012, 05:07 |
2 |
|||
0 |
0 / 0 / 0 Регистрация: 02.09.2010 Сообщений: 102 |
|
13.05.2012, 11:12 |
3 |
Ошибка выполнения ’91’: Обьектная переменная или переменная блока With не задана
0 |
5 / 5 / 3 Регистрация: 17.10.2007 Сообщений: 1,119 |
|
13.05.2012, 17:07 |
4 |
Application.Visible = False
0 |
rank1 |
|
14.05.2012, 15:33 |
5 |
дошло … ThisWorkbook.Windows(1).visible=false |
I want to search through existing Excel files with a macro, but I don’t want to display those files when they’re opened by the code. Is there a way to have them open «in the background», so to speak?
Teamothy
1,9903 gold badges15 silver badges24 bronze badges
asked Feb 23, 2009 at 23:08
1
Not sure if you can open them invisibly in the current excel instance
You can open a new instance of excel though, hide it and then open the workbooks
Dim app as New Excel.Application
app.Visible = False 'Visible is False by default, so this isn't necessary
Dim book As Excel.Workbook
Set book = app.Workbooks.Add(fileName)
'
' Do what you have to do
'
book.Close SaveChanges:=False
app.Quit
Set app = Nothing
As others have posted, make sure you clean up after you are finished with any opened workbooks
answered Feb 23, 2009 at 23:25
Patrick McDonaldPatrick McDonald
63.7k14 gold badges106 silver badges118 bronze badges
5
If that suits your needs, I would simply use
Application.ScreenUpdating = False
with the added benefit of accelerating your code, instead of slowing it down by using a second instance of Excel.
answered Aug 13, 2009 at 15:46
iDevlopiDevlop
24.6k11 gold badges89 silver badges147 bronze badges
3
To open a workbook as hidden in the existing instance of Excel, use following:
Application.ScreenUpdating = False
Workbooks.Open Filename:=FilePath, UpdateLinks:=True, ReadOnly:=True
ActiveWindow.Visible = False
ThisWorkbook.Activate
Application.ScreenUpdating = True
answered Jan 16, 2012 at 11:54
AshokAshok
1,0743 gold badges14 silver badges24 bronze badges
2
Using ADO (AnonJr already explained) and utilizing SQL is possibly the best option for fetching data from a closed workbook without opening that in conventional way. Please watch this VIDEO.
OTHERWISE, possibly GetObject(<filename with path>)
is the most CONCISE way. Worksheets remain invisible, however will appear in project explorer window in VBE just like any other workbook opened in conventional ways.
Dim wb As Workbook
Set wb = GetObject("C:MyData.xlsx") 'Worksheets will remain invisible, no new window appears in the screen
' your codes here
wb.Close SaveChanges:=False
If you want to read a particular sheet, need not even define a Workbook variable
Dim sh As Worksheet
Set sh = GetObject("C:MyData.xlsx").Worksheets("MySheet")
' your codes here
sh.Parent.Close SaveChanges:=False 'Closes the associated workbook
answered Jan 22, 2021 at 16:03
5
A much simpler approach that doesn’t involve manipulating active windows:
Dim wb As Workbook
Set wb = Workbooks.Open("workbook.xlsx")
wb.Windows(1).Visible = False
From what I can tell the Windows index on the workbook should always be 1
. If anyone knows of any race conditions that would make this untrue please let me know.
answered Jul 13, 2016 at 18:40
wooobiewooobie
3452 silver badges12 bronze badges
Even though you’ve got your answer, for those that find this question, it is also possible to open an Excel spreadsheet as a JET data store. Borrowing the connection string from a project I’ve used it on, it will look kinda like this:
strExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & objFile.Path & ";Extended Properties=""Excel 8.0;HDR=Yes"""
strSQL = "SELECT * FROM [RegistrationList$] ORDER BY DateToRegister DESC"
Note that «RegistrationList» is the name of the tab in the workbook. There are a few tutorials floating around on the web with the particulars of what you can and can’t do accessing a sheet this way.
Just thought I’d add.
answered Aug 13, 2009 at 15:58
AnonJrAnonJr
2,7491 gold badge28 silver badges39 bronze badges
4
The problem with both iDevlop’s and Ashok’s answers is that the fundamental problem is an Excel design flaw (apparently) in which the Open method fails to respect the Application.ScreenUpdating setting of False. Consequently, setting it to False is of no benefit to this problem.
If Patrick McDonald’s solution is too burdensome due to the overhead of starting a second instance of Excel, then the best solution I’ve found is to minimize the time that the opened workbook is visible by re-activating the original window as quickly as possible:
Dim TempWkBk As Workbook
Dim CurrentWin As Window
Set CurrentWin = ActiveWindow
Set TempWkBk = Workbooks.Open(SomeFilePath)
CurrentWin.Activate 'Allows only a VERY brief flash of the opened workbook
TempWkBk.Windows(1).Visible = False 'Only necessary if you also need to prevent
'the user from manually accessing the opened
'workbook before it is closed.
'Operate on the new workbook, which is not visible to the user, then close it...
answered Jul 22, 2014 at 19:07
pstratonpstraton
1,04014 silver badges9 bronze badges
4
Open the workbook as hidden and then set it as «saved» so that users are not prompted when they close out.
Dim w As Workbooks
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Set w = Workbooks
w.Open Filename:="\serverPriceList.xlsx", UpdateLinks:=False, ReadOnly:=True 'this is the data file were going to be opening
ActiveWindow.Visible = False
ThisWorkbook.Activate
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
w.Item(2).Saved = True 'this will suppress the safe prompt for the data file only
End Sub
This is somewhat derivative of the answer posted by Ashok.
By doing it this way though you will not get prompted to save changes back to the Excel file your reading from. This is great if the Excel file your reading from is intended as a data source for validation. For example if the workbook contains product names and price data it can be hidden and you can show an Excel file that represents an invoice with drop downs for product that validates from that price list.
You can then store the price list on a shared location on a network somewhere and make it read-only.
answered Jul 18, 2014 at 17:19
1
Open them from a new instance of Excel.
Sub Test()
Dim xl As Excel.Application
Set xl = CreateObject("Excel.Application")
Dim w As Workbook
Set w = xl.Workbooks.Add()
MsgBox "Not visible yet..."
xl.Visible = True
w.Close False
Set xl = Nothing
End Sub
You need to remember to clean up after you’re done.
answered Feb 23, 2009 at 23:43
guillermoooguillermooo
7,83515 gold badges53 silver badges58 bronze badges
1
In excel, hide the workbooks, and save them as hidden. When your app loads them they will not be shown.
Edit: upon re-reading, it became clear that these workbooks are not part of your application. Such a solution would be inappropriate for user workbooks.
answered Feb 23, 2009 at 23:18
JohnWJohnW
2,9621 gold badge27 silver badges30 bronze badges
- 4u4elo
- Новичок
- Сообщения: 29
- Зарегистрирован: 24.08.2005 (Ср) 13:54
скрыть книгу в Excel
Вопрос: никто не знает как можно сделать Excel-книгу невидимой на экране? Я хотел бы при открытии книги с данными открывать книгу с макросами, но так, чтобы эту книгу с макросами не было видно. Я знаю — можно сделать книгу с макросами надстройкой, но может есть ещё какой-то способ (например Visible=False)?
Взаранее спасибо!
- lord0n
- Постоялец
- Сообщения: 845
- Зарегистрирован: 30.06.2005 (Чт) 9:55
- Откуда: Moskow
-
- ICQ
lord0n » 26.08.2005 (Пт) 9:33
что то у меня большие подозрения что это опять кулхацкеры лезут
ну и вирмейкеры с ними тож
Теория — это когда что-то не работает и известно почему.
Практика — это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.
- 4u4elo
- Новичок
- Сообщения: 29
- Зарегистрирован: 24.08.2005 (Ср) 13:54
4u4elo » 26.08.2005 (Пт) 9:45
Я не понял, что ты хотел этим сказать?
- lord0n
- Постоялец
- Сообщения: 845
- Зарегистрирован: 30.06.2005 (Чт) 9:55
- Откуда: Moskow
-
- ICQ
lord0n » 26.08.2005 (Пт) 11:57
а зачем тебе делать автостарт и скрывать книгу с макросами ?
перый вывод который напрашивается — ты делаешь макро-вирус
Теория — это когда что-то не работает и известно почему.
Практика — это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.
- 4u4elo
- Новичок
- Сообщения: 29
- Зарегистрирован: 24.08.2005 (Ср) 13:54
4u4elo » 26.08.2005 (Пт) 12:52
Нет, я не делаю макро-вирус. Просто эти макросы используются и в других книгах с данными (отдельные книги по отдельным организациям или датам). А скрыть хочу чтобы пользователи не путались при виде лишней открывшейся книги и чтобы она не загромождало место. Макросы же буду вызывать с помощью кнопок созданной мною панели (панель будет открываться автоматически при открытии книги с макросами).
- lord0n
- Постоялец
- Сообщения: 845
- Зарегистрирован: 30.06.2005 (Чт) 9:55
- Откуда: Moskow
-
- ICQ
lord0n » 26.08.2005 (Пт) 12:59
4u4elo писал(а):Нет, я не делаю макро-вирус. Просто эти макросы используются и в других книгах с данными (отдельные книги по отдельным организациям или датам). А скрыть хочу чтобы пользователи не путались при виде лишней открывшейся книги и чтобы она не загромождало место. Макросы же буду вызывать с помощью кнопок созданной мною панели (панель будет открываться автоматически при открытии книги с макросами).
ясно
- Код: Выделить всё
Sheets(1).Visible = 2
саму книгу скрыть нельзя, ИХМО
а вообще можно добавить макрос в личную книгу макросов, тогда он не будет светится
Теория — это когда что-то не работает и известно почему.
Практика — это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.
- GSerg
- Шаман
- Сообщения: 14286
- Зарегистрирован: 14.12.2002 (Сб) 5:25
- Откуда: Магадан
GSerg » 26.08.2005 (Пт) 13:04
Сохрани книгу с макросами как xla и подключи в Сервис — Надстройки.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас
- 4u4elo
- Новичок
- Сообщения: 29
- Зарегистрирован: 24.08.2005 (Ср) 13:54
4u4elo » 26.08.2005 (Пт) 13:10
Спасибо!
- oleg
- Обычный пользователь
- Сообщения: 71
- Зарегистрирован: 07.02.2002 (Чт) 1:41
Re:
oleg » 04.04.2011 (Пн) 2:00
lord0n писал(а):саму книгу скрыть нельзя, ИХМО
а вот я как делал. при старте только форма появлялась. и проект имеется. он писался 10 лет назад и сегодняшние версии екселя «убивают» весь код.
отчего-то ексель пытаеся восстанавливать файлы.
так как организовать старт книги с пользовательской формы скрыв при этом книгу? припекло
- alibek
- Большой Человек
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
Re: скрыть книгу в Excel
alibek » 04.04.2011 (Пн) 11:11
Не надо скрывать книгу (Workbook). Нужно скрыть окно (Window).
Lasciate ogni speranza, voi ch’entrate.
- oleg
- Обычный пользователь
- Сообщения: 71
- Зарегистрирован: 07.02.2002 (Чт) 1:41
Re: скрыть книгу в Excel
oleg » 05.04.2011 (Вт) 5:55
alibek писал(а):Не надо скрывать книгу (Workbook). Нужно скрыть окно (Window).
может и окно свернуто было, не помню.
ps
не так?
ActiveWindow.WindowState = xlMinimized
моргать все одно будет окно
psps
нет, вот так, пошел поглядел
Application.WindowState = xlMinimized
pspsps
а форма UserForm которая активируется в Workbook_Open() исчезает так же со сворачиванием окна
- anvg
- Обычный пользователь
- Сообщения: 66
- Зарегистрирован: 20.05.2007 (Вс) 18:04
Re: скрыть книгу в Excel
anvg » 06.04.2011 (Ср) 10:00
- Код: Выделить всё
ThisWorkbook.Windows(1).Visible = False
не пробовал?
- oleg
- Обычный пользователь
- Сообщения: 71
- Зарегистрирован: 07.02.2002 (Чт) 1:41
Re: скрыть книгу в Excel
oleg » 06.04.2011 (Ср) 18:56
anvg писал(а):
- Код: Выделить всё
ThisWorkbook.Windows(1).Visible = False
не пробовал?
так только книга и закроется,а окно екселя останется
- anvg
- Обычный пользователь
- Сообщения: 66
- Зарегистрирован: 20.05.2007 (Вс) 18:04
Re: скрыть книгу в Excel
anvg » 07.04.2011 (Чт) 1:52
oleg
ты же писал
так как организовать старт книги с пользовательской формы скрыв при этом книгу? припекло
А не самого Excel, продолжи так
- Код: Выделить всё
ThisWorkbook.Application.Visible = False
Не забудь только потом включить видимость Excel
- oleg
- Обычный пользователь
- Сообщения: 71
- Зарегистрирован: 07.02.2002 (Чт) 1:41
Re: скрыть книгу в Excel
oleg » 22.04.2011 (Пт) 21:11
anvg писал(а):
- Код: Выделить всё
ThisWorkbook.Windows(1).Visible = False
не пробовал?
вообщем, книги я более и не видел.
попробовал
ThisWorkbook.Windows(1).Visible = False
не получилось, изменил на
ThisWorkbook.Windows.Visible = False
и все. уже макросы не активирую, книга не появляется, только окно екселя с меню.
выкинул все уже в редакторе барсика. все одно при старте ругается на какой то макрос.
скачал вьювер, он не смог открыть файл. говорит попорчен. сижу вот восстанавливаю список ))
- anvg
- Обычный пользователь
- Сообщения: 66
- Зарегистрирован: 20.05.2007 (Вс) 18:04
Re: скрыть книгу в Excel
anvg » 25.04.2011 (Пн) 10:16
oleg
Код я этой книги, как я понял, доступен.
Активируй проект этой книги и в Immediate выполни ThisWorkbook.Windows(1).Visible = True
- Earl
- Начинающий
- Сообщения: 2
- Зарегистрирован: 12.08.2011 (Пт) 21:26
Re: скрыть книгу в Excel
Earl » 12.08.2011 (Пт) 21:33
4u4elo писал(а):Вопрос: никто не знает как можно сделать Excel-книгу невидимой на экране? Я хотел бы при открытии книги с данными открывать книгу с макросами, но так, чтобы эту книгу с макросами не было видно. Я знаю — можно сделать книгу с макросами надстройкой, но может есть ещё какой-то способ (например Visible=False)?
Взаранее спасибо!
word делает так Set zlodeidoc = Documents.Open(StartForm.zlpath & StartForm.zlfile, Visible:=False)
excel ругается… неужели нет аналога. Очень часто необходимо открыть книку для добавлениясчитывания данных. Даже screenupdating не спасает.
- Earl
- Начинающий
- Сообщения: 2
- Зарегистрирован: 12.08.2011 (Пт) 21:26
Re: скрыть книгу в Excel
Earl » 12.08.2011 (Пт) 21:36
А если нужно запускать без формы?
- kas78
- Начинающий
- Сообщения: 1
- Зарегистрирован: 03.05.2012 (Чт) 8:51
Re: скрыть книгу в Excel
kas78 » 03.05.2012 (Чт) 8:53
ThisWorkbook.Windows.Application.Visible = False
Вернуться в VBA
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2