Открытие формы при открытии файла excel

SemenTVS

0 / 0 / 0

Регистрация: 27.11.2017

Сообщений: 22

1

Excel

Запуск пользовательской формы при открытии файла

19.07.2018, 15:30. Показов 27339. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Пока нашел только такой способ

Visual Basic
1
2
3
4
Private Sub Workbook_Open()  
    Application.Visible = False
    Call UserForm1.Show 
End Sub

Но при запуске .xlsm видно как открывается книга, потом скрывается и открывается уже сама форма
Можно ли реализовать моментальный запуск пользовательской формы без открытия листа или открытия листа уже невидимым?



0



yutrans

140 / 123 / 50

Регистрация: 10.11.2011

Сообщений: 620

19.07.2018, 17:11

2

Может так?

Visual Basic
1
2
3
4
5
Private Sub Workbook_Open()
 Application.ScreenUpdating = False ''выключили обновление экрана
    Application.Visible = False 
    Call UserForm1.Show
End Sub



1



SemenTVS

0 / 0 / 0

Регистрация: 27.11.2017

Сообщений: 22

19.07.2018, 18:02

 [ТС]

3

Нет, все также.

Добавлено через 32 минуты

Visual Basic
1
2
3
With Windows("рабочая книжка.xlsm")
      .Visible = False
End With

вот такая конструкция скрывает, изменяет листы в книге, но при этом окно программы остаётся на месте
Это навело на мысль а можно программно изменить размер главного окна на минимум, а потом и скрытным сделать и/или сразу увести его за экран ,типо .Left = 999

Или все эти команды я пишу в «этой книге», поэтому имеется задержка, как я понимаю, А имею ли я возможность написать макрос для самого экселя или что там по иерархии выше книги стоит?



0



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

19.07.2018, 18:39

4

Цитата
Сообщение от SemenTVS
Посмотреть сообщение

поэтому имеется задержка, как я понимаю

Скорее это не задержка, а последовательность действий винда. Когда вы кликаете на файл, то вызывается его приложение, при этом файл ещё не открывается и Open ещё не запускается. После открытия окна приложения начинается обработка событий файла, а до этого времени окно приложения будет видно. А стоит ли из-за секунды-двух убиваться?

Добавлено через 5 минут
а вот перед запуском приложения заморозить экран не исключено, что возможно, но я этого не знаю, как-то секунды не волновали



1



0 / 0 / 0

Регистрация: 27.11.2017

Сообщений: 22

19.07.2018, 19:04

 [ТС]

5

Можно и не прятать вовсе и секунда не играет роли.
Но если делать то делать хорошо, по крайней мере так хочется, а на сколько это успешно и возможно реальность вернёт меня на землю обетованную…)

Заморозить экран самого виндовса? это мб выход и хороший, но сомневаюсь что я пойму как это делается, тут проблемы программно создавать формы в си, куда там до владения прочих возможностей.



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

19.07.2018, 21:24

6

Цитата
Сообщение от Burk
Посмотреть сообщение

а вот перед запуском приложения заморозить экран не исключено, что возможно, но я этого не знаю

Функция LockWindowUpdate (WinAPI) может, но кто и откуда её будет вызывать ?



1



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

20.07.2018, 06:17

7

pashulka, ну так нарисовать скрипт, отрубаем экран, вызываем эксель с загрузкой нужного файла, как параметра. Только после окончания работы приложения не забыть восстановить изменение экрана. И опять же вопрос

Цитата
Сообщение от Burk
Посмотреть сообщение

А стоит ли из-за секунды-двух убиваться?



1



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

20.07.2018, 13:50

8

Burk, тоже думаю, что не стоит, тем более что из .vbs вызов winapi напрямую невозможен. Можно, конечно, поиграться с set xl = createobject(«excel.application») но …



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

20.07.2018, 13:50

8

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#1

24.02.2022 23:38:32

Здравствуйте.
Подскажите, пож-та, как сделать так, что-бы при открытии нужного файла Exel *****.xlsm происходил запуск формы с последующим скрытием данной книги. Для дальнейшей работы должна остаться видимой только форма.
Автозапуск формы получается, но следующая строка скрывает все остальные открытые книги Excel, а нужно чтобы скрывалась только эта книга.

Код
Private Sub Workbook_Open()
   UserForm1.Show
   Application.Visible = False
End Sub

Запись ThisWorkbook.Windows(1).Visible = False оставляет пустое окно Excel.  Exel остается видимым, а нужно действие такое же как при исполнении кода Application.Visible = False, только для данного файла. т.е. для простого пользователя при двойном клике должна открыться только форма. Если на момент запуска открыты другие файлы Excel, они не должны быть затронуты.. Если данный файл запускается первым, то тоже должна быть видна только форма, без пустого Excel.

Изменено: asesja25.02.2022 22:21:18

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#2

25.02.2022 09:45:17

Цитата
asesja написал:
ThisWorkbook.Windows(1).Visible = False после закрытия меняет файл

так Вы при закрытии формы возвращайте видимость окна и все будет ОК.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Александр Моторин

Пользователь

Сообщений: 958
Регистрация: 31.12.2012

#3

25.02.2022 09:45:56

может так?

Код
Private Sub Workbook_Open()
    Application.Visible = False
    UserForm1.Show
    Application.Visible =true
End Sub
 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#4

25.02.2022 10:15:41

1. исправьте:

Код
Private Sub Workbook_Open()
   UserForm1.Show
End Sub

2. Скройте книгу,
3. закройте Excel, на вопрос сохранить — сохраните
4. открывайте, наслаждайтесь

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#5

25.02.2022 11:52:53

Цитата
Дмитрий(The_Prist) Щербаков  написал:
при закрытии формы возвращайте видимость окна и все будет ОК.

Подскажите, как? При каком событии формы? Если файл будет открываться первым, то пустой Excel остается видимым, а нужна только форма. Дописал уточнение.

Изменено: asesja25.02.2022 11:59:53

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#6

25.02.2022 11:53:57

Цитата
Александр Моторин написал:
может так?

Ничего не меняется.

Изменено: asesja25.02.2022 12:00:57

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#7

25.02.2022 11:58:19

Цитата
Ігор Гончаренко написал:
1. исправьте:Код ? 123Private Sub Workbook_Open()   UserForm1.ShowEnd Sub2. Скройте книгу, 3. закройте Excel, на вопрос сохранить — сохраните4. открывайте, наслаждайтесь

Спасибо. Думал что уже получилось то что хотел, но если файл запускать первым, то на фоне все равно фигурирует пустое окно Excel, а нужно чтобы была видна только форма. Дописал уточнение.

Изменено: asesja25.02.2022 12:01:33

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#8

25.02.2022 12:02:23

Цитата
asesja написал:
Если файл будет открываться первым, то пустой Excel остается видимым

так а как Вы хотели-то? Если открыта только одна книга, а Вы и ту скрываете. Да, будет пустое приложение. Определитесь для начала, что при каких условиях должно быть видимым и тогда можно будет решение найти.

Цитата
asesja написал:
а нужно чтобы была видна только форма

а если мы эту книгу открыли не первой? Тогда что?

Цитата
asesja написал:
При каком событии формы?

событие закрытия формы. Есть там такое QueryClose

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#9

25.02.2022 12:46:54

Цитата
написал:
Определитесь для начала, что при каких условиях должно быть видимым и тогда можно будет решение найти.

Дмитрий, дописал уточнение в первом сообщении.
Нужно, чтобы всегда была видна только форма при запуске данного файла (форма из этого файла). Если файл открывается первым, то excel не должен быть виден, только форма. Если открытие файла происходит когда уже открыты несколько других файлов, то при открытии тоже должна запускаться только форма, изменение видимости ранее открытых файлов не должно меняться. Т.е. в какой бы момент пользователь не запустил данный файл всегда должна запускаться (быть видна) только форма.
Не знаю как еще объяснить по другому.

 

Jack Famous

Пользователь

Сообщений: 10852
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#10

25.02.2022 12:51:29

Цитата
asesja: Т.е. в какой бы момент пользователь не запустил данный файл всегда должна запускаться (быть видна) только форма

засуньте форму в нвдстройку и подключите к Excel — теперь форма всегда будет доступна, никакие дополнительные книги не будут открываться и это очень легко и правильно

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#11

25.02.2022 13:11:20

Цитата
написал:
засуньте форму в нвдстройку и подключите к Excel — теперь форма всегда будет доступна, никакие дополнительные книги не будут открываться и это очень легко и правильно

В надстройку не нужно. Нужный мне макрос должен находится в фале и форма должна появляться при его запуске (как будто запускаешь exe в котором при запуске выводится форма)
Если даже поместить в надстройку, то все равно эту форму можно вывести только при открытом excel, а нужно именно при открытии данного файла.
Мне нужно именно как я описал. Может я непонятно объясняю просто?  

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#12

25.02.2022 13:17:41

код в сообщении 4 замените на такой:

Код
Private Sub Workbook_Open()
  Application.Visible = Not (Workbooks.Count = 1 Or _
  (Workbooks.Count = 2 And Workbooks(1).Name = "PERSONAL.XLSB"))
  UserForm1.Show
  Application.Visible = True
  ThisWorkbook.Close False
End Sub

Изменено: Ігор Гончаренко25.02.2022 13:22:34

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#13

25.02.2022 13:27:06

Цитата
asesja написал:
Т.е. в какой бы момент пользователь не запустил данный файл всегда должна запускаться (быть видна) только форма

это никак не вяжется с этим

Цитата
asesja написал:
изменение видимости ранее открытых файлов не должно меняться

Но тем не менее, сделать можно так:

Код
Sub ShowForm()
        Dim lcnt&
    Dim wb As Workbook
    For Each wb In Application.Workbooks
        If wb.Name <> ThisWorkbook.Name Then
            If wb.Windows(1).Visible Then
                lcnt = lcnt + 1
            End If
        End If
    Next
    If lcnt Then 'какие-то книги уже открыты
        ThisWorkbook.Windows(1).Visible = False
        UserForm1.Show
        ThisWorkbook.Windows(1).Visible = True
    Else
        Application.Visible = False
        UserForm1.Show
        Application.Visible = True
    End If
End Sub

осталось понять, что именно делать при закрытии формы — закрывать так же файл или нет.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#14

25.02.2022 13:35:30

Цитата
написал:
код в сообщении 4 замените на такой:

Не работает. Если имеются открытые файлы excel, то при запуске просто моргает окно и закрывается. Если открывать файл первым, то запускается пустой Excel без формы.
На всякий случай уточню, что у меня нет Личной книги макросов, но имеются подключенные надстройки. На разных ПК данная ситуация может отличаться, поэтому нужный макрос будет записан в этом открываемом файле Excel ****.xlsm.

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#15

25.02.2022 13:37:36

Цитата
написал:
осталось понять, что именно делать при закрытии формы — закрывать так же файл или нет.

Дмитрий, да закрывать. Правильно спросили.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#16

25.02.2022 13:47:16

Код
Private Sub Workbook_Open()
    If Workbooks.Count = 1 Then
        Application.Visible = False
    Else
        Me.Windows(1).Visible = False
    End If
    UserForm1.Show
End Sub
 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#17

25.02.2022 13:50:52

Цитата
asesja написал:
да закрывать

Т.е. сами по образцу это сделать не сможете, что ли? :)

Код
Sub ShowForm()
    Dim lcnt&
    Dim wb As Workbook
    For Each wb In Application.Workbooks
        If wb.Name <> ThisWorkbook.Name Then
            If wb.Windows(1).Visible Then
                lcnt = lcnt + 1
            End If
        End If
    Next
    
    If lcnt Then 'какие-то книги уже открыты
        ThisWorkbook.Windows(1).Visible = False
        UserForm1.Show
        ThisWorkbook.Windows(1).Visible = True
        ThisWorkbook.Close False 'если надо закрывать без сохранения
    Else
        Application.Visible = False
        UserForm1.Show
        ThisWorkbook.Close False 'если надо закрывать без сохранения
        Application.Quit
    End If
End Sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#18

25.02.2022 13:51:46

Цитата
написал:
Но тем не менее, сделать можно так:

Дмитрий, не работает. Форма открывается вместе с книгой.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#19

25.02.2022 13:54:07

Цитата
asesja написал:
Форма открывается вместе с книгой

с какой именно? Куда и на какое событие вставляли код? Чего от кода ожидаете?
Я лично все проверил — если есть хоть одна открытая книга — то книга с кодом скрывается, остальные остаются видимыми, поверх появляется форма. Если открывается только книга с кодом и нет других видимых книг — то появляется только форма, а Excel полностью скрывается.
А если по сути вопроса — да, форма всегда будет открываться вместе с книгой, т.к. форма внедрена в книгу, она её часть и без книги открываться просто не может по определению.

Изменено: Дмитрий(The_Prist) Щербаков25.02.2022 13:55:30

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#20

25.02.2022 14:01:10

Цитата
написал:
RAN

Ран, почти то, что нужно, но если открыть первым файл с макросом, то затем любой следующий открытый файл Excel делает видимым Excel у которого форма.
И как задал вопрос Дмитрий Щербаков, хорошо бы при закрытии формы закрывать и саму книгу.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#21

25.02.2022 14:03:34

Цитата
asesja написал:
если открыть первым файл с макросом, то затем любой следующий открытый файл Excel делает видимым Excel у которого форма

так в условии не было ни слова о том, что надо отслеживать еще и последующие открываемые файлы! Вы сами понимаете, что одним кодом это действие не отследить? Надо писать обработку класса на отслеживание событий приложения, чтобы проверять — если форма открыта, то одно, если нет, то другое…
Плюс вопрос — а как же люди при открытой форме у Вас файлы-то открывают? У меня почему-то не получается. Вопрос на засыпку — форма в модальном режиме открывается или ShowModal = False? Если режим модальный — то даже если файл будет открыт, то показан он будет исключительно после закрытия формы.
В общем — принцип основной вроде бы показан и далеко не в единственном варианте, а под все остальные свои условия постарайтесь написать хоть что-то сами. А когда все условия будут обдуманы, проверены и испытаны, но решение так и не будет найдено — милости просим. А то что-то получается, что мы тут должны угадывать что Вы там еще делаете внутри формы, до запуска, во время работы с формой и после и какие еще условия сопутствуют всему этому(не говорю уже про то, что никто не понимает конечной цели этой все задумки).

Изменено: Дмитрий(The_Prist) Щербаков25.02.2022 14:12:57

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Jack Famous

Пользователь

Сообщений: 10852
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

От вам не лень, ей богу  :D

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#23

25.02.2022 14:13:56

Цитата
написал:
Т.е. сами по образцу это сделать не сможете, что ли?

Дмитрий, извините, но просто моргает и закрывается.

Наверное буду решать вопрос как-то по другому, если нельзя сделать так, как я спросил.
Спасибо.

Изменено: asesja25.02.2022 14:16:53

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#24

25.02.2022 14:19:01

Цитата
asesja написал:
просто моргает и закрывается

не знаю, что у Вас там происходит. Информации мало — нужно точно знать, установлено ли свойство формы ShowModal в true. Если нет — то  так и будет моргать и закрываться, т.к. в этом случае форма запускается и не происходит ожидания её закрытия и код идет дальше — следовательно книга просто закрывается.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#25

25.02.2022 14:19:55

Цитата
написал:
форма в модальном режиме открывается или ShowModal = False?

Дмитрий, ShowModal = False. Если true, то работа с другими файлами не возможна, как вы и написали.

Изменено: asesja25.02.2022 14:24:45

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#26

25.02.2022 14:21:09

Цитата
asesja написал:
ShowModal = False?

это вопрос о чем? Краткость не всегда сестра таланта. Я вроде выше все расписал.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

пора автору дать возможность помедитировать, подумать над задачей….
глядишь — и сформулирует что-то внятное
как говорится, вечно можно смотреть на 3 вещи:
— как горит огонь
— как течет вода
— и как завсегдатаи форума пытаются угадать, что нужно автору вопроса

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#28

25.02.2022 14:25:24

Цитата
написал:
это вопрос о чем?

Дмитрий, исправил.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#29

25.02.2022 14:31:18

Цитата
asesja написал:
Дмитрий, исправил

ну так это у Вас проблемы с базовым пониманием принципов работы с формами. Я уже выше пояснил — если работаете с формой в немодальном режиме — то вот эти строки:

Цитата
Дмитрий(The_Prist) Щербаков написал:
ThisWorkbook.Windows(1).Visible = False
UserForm1.Show
ThisWorkbook.Windows(1).Visible = True
ThisWorkbook.Close False ‘если надо закрывать без сохранения

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

Цитата
Дмитрий(The_Prist) Щербаков написал:
событие закрытия формы. Есть там такое QueryClose

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

Изменено: Дмитрий(The_Prist) Щербаков25.02.2022 14:32:06

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

asesja

Пользователь

Сообщений: 320
Регистрация: 21.10.2019

#30

25.02.2022 14:47:19

Спасибо, всем, кто отозвался. Все правы, что задача сформулирована не полностью.
Так получается, когда одно цепляется за другое по мере прохождения определенного этапа и апробации предложенных вариантов. Изначально не всегда думаешь, что при выполнении какого либо действия, возымевшего положительный, или частично положительный, результат, вытекает другие обстоятельства, о которых до этого не думал, т.к. вообще не о чем было подумать (ничего не получалось и результата не было).

Формулировка после получения и апробации предложенных вариантов:
При запуске имеющегося файла с формой(макросом) ***.xlsm необходимо, чтобы запускалась (была видна) только форма UserForm1, независимо первым данный файл будет запущен или уже после того, когда имеются открытые книги. Если запускается первым, то открытие других файлов Excel не должно делать видимым эту книгу (в которой форма).  Форама не модальная. На ней будут размещены различные элементы управления для своих задач.
При закрытии формы её книга тоже должна закрываться.
Дополнительно: на моем ПК имеются подключенные надстройки и отсутствует Личная книга макросов, но эти данные не должны влиять, на ход выполнения задачи, т.к. на различных ПК могут отличаться.

Изменено: asesja25.02.2022 22:33:11

Формулировка задачи:

Имеется книга Excel, в ней создана форма для ввода данных. Как сделать, при открытии ДАННОЙ книги автоматически запускалась форма?

Код к задаче: «Автоматический запуск формы при открытии файла в Excel»

textual

<font color="blue">Private</font> <font color="blue">Sub</font> Workbook_Open()

UserForm1.Show

<font color="blue">End</font> <font color="blue">Sub</font>

Полезно ли:

8   голосов , оценка 4.000 из 5

Обновлено: 15.04.2023

Доброго времени суток коллеги!
Прошу подсказать как реализовать такую задачу:
есть файл который постоянно модернизируется по функционалу, этот файл используют много людей с разных компьютеров.
Необходимо создать окно уведомлений которое бы могло появляться раз у каждого пользователя при входе в файл со своего ПК и каждый раз после изменения текста в этом окне он каждый раз появлялся у каждого входящего в этот файлик и давал возможность ознакомится с изменениями. Но надо что бы он один раз появлялся после внесения изменений в текстовку этого файла (это окно с уведомлением)

Доброго времени суток коллеги!
Прошу подсказать как реализовать такую задачу:
есть файл который постоянно модернизируется по функционалу, этот файл используют много людей с разных компьютеров.
Необходимо создать окно уведомлений которое бы могло появляться раз у каждого пользователя при входе в файл со своего ПК и каждый раз после изменения текста в этом окне он каждый раз появлялся у каждого входящего в этот файлик и давал возможность ознакомится с изменениями. Но надо что бы он один раз появлялся после внесения изменений в текстовку этого файла (это окно с уведомлением) Gameower

хорошо а как реализовать это? через какую функцию ? Автор — Gameower
Дата добавления — 01.11.2016 в 12:41

если закрыть окно или нажать отмену, следующий открывший файл увидит такое же окно, если изменить текст и нажать ок, следующий увидит этот текст

вместо inputbox, для больших текстов правильнее форму с кнопками сделать.

если закрыть окно или нажать отмену, следующий открывший файл увидит такое же окно, если изменить текст и нажать ок, следующий увидит этот текст

вместо inputbox, для больших текстов правильнее форму с кнопками сделать. K-SerJC

Благими намерениями выстелена дорога в АД.

если закрыть окно или нажать отмену, следующий открывший файл увидит такое же окно, если изменить текст и нажать ок, следующий увидит этот текст

вместо inputbox, для больших текстов правильнее форму с кнопками сделать. Автор — K-SerJC
Дата добавления — 01.11.2016 в 12:56

K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать? и желательно нижнюю строку где можно писать ее убрать совсем окно несет информативный характер только

K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать? и желательно нижнюю строку где можно писать ее убрать совсем окно несет информативный характер только Gameower

K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать?

K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать?

K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать?

K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д.

K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д. Gameower

K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д.

если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))

K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д.

если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))

K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д.

если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))

прикольно, мысль была похожая, только через username
у нас по сети можно с разных компов под своей учеткой заходить

прикольно, мысль была похожая, только через username
у нас по сети можно с разных компов под своей учеткой заходить K-SerJC

прикольно, мысль была похожая, только через username
у нас по сети можно с разных компов под своей учеткой заходить Автор — K-SerJC
Дата добавления — 01.11.2016 в 14:10

Так вместо Серийника возьмите за основу что вам надо и все. Там в первых строках кода переменная S. В нее и возьмите юзернэйм ))) Удачи

Так вместо Серийника возьмите за основу что вам надо и все. Там в первых строках кода переменная S. В нее и возьмите юзернэйм ))) Удачи devilkurs

если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))

вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать??

если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))

вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать?? Gameower

если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))

вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать?? Автор — Gameower
Дата добавления — 02.11.2016 в 04:28

момнет такой, необходимо не ту инфо выводить,а другую ту которую я бы мог сам вписывать типа версия файла такая то и внес по функционалу такие то изменения и т.д.

момнет такой, необходимо не ту инфо выводить,а другую ту которую я бы мог сам вписывать типа версия файла такая то и внес по функционалу такие то изменения и т.д. Gameower

момнет такой, необходимо не ту инфо выводить,а другую ту которую я бы мог сам вписывать типа версия файла такая то и внес по функционалу такие то изменения и т.д. Автор — Gameower
Дата добавления — 02.11.2016 в 04:43

вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать??

вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать??

вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать??

много вариантов. :-) Автор — K-SerJC
Дата добавления — 02.11.2016 в 07:37

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub

Private Sub Workbook_Open()
If ActiveWorkbook.Sheets(«secr»).Visible <> 0 Then ActiveWorkbook.Sheets(«secr»).Visible = 0
Message (CreateObject(«Scripting.FileSystemObject»).GetDrive(«C»).SerialNumber)
End Sub

Private Sub Message(snDrive As String)
Dim pUz As Integer, txt As String
If ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value = «» Then AddDrive (snDrive): Moder: Exit Sub
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value Then Moder: Exit Sub
pUz = FindUz(snDrive)
If pUz = 0 Then AddDrive (snDrive): Uzver: Exit Sub
txt = ActiveWorkbook.Sheets(«secr»).Cells(1, 1).Value
If ActiveWorkbook.Sheets(«secr»).Cells(pUz, 2).Value = txt Then Exit Sub Else: UpdateDriveRec pUz, txt: Uzver
End Sub
Private Sub Moder()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Отредактировал!»
frmMessage.Label1.Visible = False
frmMessage.Show
End Sub
Private Sub Uzver()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Прочитал!»
frmMessage.Label1.Visible = True
frmMessage.Show
End Sub

Private Sub AddDrive(snDrive As String)
Dim t As Integer
t = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
ActiveWorkbook.Sheets(«secr»).Cells(t, 1).Value = snDrive
ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value = t + 1
End Sub

Private Sub UpdateDriveRec(poz As Integer, txt As String)
ActiveWorkbook.Sheets(«secr»).Cells(poz, 2).Value = txt
End Sub

Private Function FindUz(snDrive As String) As Integer
Dim st As Integer, sp As Integer, à As Integer
FindUz = 0
st = ActiveWorkbook.Sheets(«secr»).Cells(2, 1).Value
sp = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
For f = st To sp
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(f, 1).Value Then FindUz = f: Exit Function
Next f
End Function

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub

Private Sub Workbook_Open()
If ActiveWorkbook.Sheets(«secr»).Visible <> 0 Then ActiveWorkbook.Sheets(«secr»).Visible = 0
Message (CreateObject(«Scripting.FileSystemObject»).GetDrive(«C»).SerialNumber)
End Sub

Private Sub Message(snDrive As String)
Dim pUz As Integer, txt As String
If ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value = «» Then AddDrive (snDrive): Moder: Exit Sub
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value Then Moder: Exit Sub
pUz = FindUz(snDrive)
If pUz = 0 Then AddDrive (snDrive): Uzver: Exit Sub
txt = ActiveWorkbook.Sheets(«secr»).Cells(1, 1).Value
If ActiveWorkbook.Sheets(«secr»).Cells(pUz, 2).Value = txt Then Exit Sub Else: UpdateDriveRec pUz, txt: Uzver
End Sub
Private Sub Moder()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Отредактировал!»
frmMessage.Label1.Visible = False
frmMessage.Show
End Sub
Private Sub Uzver()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Прочитал!»
frmMessage.Label1.Visible = True
frmMessage.Show
End Sub

Private Sub AddDrive(snDrive As String)
Dim t As Integer
t = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
ActiveWorkbook.Sheets(«secr»).Cells(t, 1).Value = snDrive
ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value = t + 1
End Sub

Private Sub UpdateDriveRec(poz As Integer, txt As String)
ActiveWorkbook.Sheets(«secr»).Cells(poz, 2).Value = txt
End Sub

Private Function FindUz(snDrive As String) As Integer
Dim st As Integer, sp As Integer, à As Integer
FindUz = 0
st = ActiveWorkbook.Sheets(«secr»).Cells(2, 1).Value
sp = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
For f = st To sp
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(f, 1).Value Then FindUz = f: Exit Function
Next f
End Function

Благими намерениями выстелена дорога в АД.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub

Private Sub Workbook_Open()
If ActiveWorkbook.Sheets(«secr»).Visible <> 0 Then ActiveWorkbook.Sheets(«secr»).Visible = 0
Message (CreateObject(«Scripting.FileSystemObject»).GetDrive(«C»).SerialNumber)
End Sub

Private Sub Message(snDrive As String)
Dim pUz As Integer, txt As String
If ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value = «» Then AddDrive (snDrive): Moder: Exit Sub
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value Then Moder: Exit Sub
pUz = FindUz(snDrive)
If pUz = 0 Then AddDrive (snDrive): Uzver: Exit Sub
txt = ActiveWorkbook.Sheets(«secr»).Cells(1, 1).Value
If ActiveWorkbook.Sheets(«secr»).Cells(pUz, 2).Value = txt Then Exit Sub Else: UpdateDriveRec pUz, txt: Uzver
End Sub
Private Sub Moder()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Отредактировал!»
frmMessage.Label1.Visible = False
frmMessage.Show
End Sub
Private Sub Uzver()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Прочитал!»
frmMessage.Label1.Visible = True
frmMessage.Show
End Sub

Private Sub AddDrive(snDrive As String)
Dim t As Integer
t = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
ActiveWorkbook.Sheets(«secr»).Cells(t, 1).Value = snDrive
ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value = t + 1
End Sub

Private Sub UpdateDriveRec(poz As Integer, txt As String)
ActiveWorkbook.Sheets(«secr»).Cells(poz, 2).Value = txt
End Sub

Private Function FindUz(snDrive As String) As Integer
Dim st As Integer, sp As Integer, à As Integer
FindUz = 0
st = ActiveWorkbook.Sheets(«secr»).Cells(2, 1).Value
sp = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
For f = st To sp
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(f, 1).Value Then FindUz = f: Exit Function
Next f
End Function

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

splash.jpg

Заставка появляется сразу после открытия файла и автоматически исчезает через несколько секунд.

Шаг 1. Создаем экранную форму

Откройте редактор Visual Basic — в старых версиях Excel это можно сделать через меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor) , а в новых кнопкой Visual Basic на вкладке Разработчик (Developer) и создайте новую форму, используя команду меню Insert — UserForm. Появится пустая серая оконная форма будущей заставки. Добавим на нее изображение при помощи панели инструментов Toolbox (если у вас ее не видно, то зайдите в меню View — Toolbox):

splash2.jpg

Возможно, придется немного изменить размер формы, чтобы изображение уместилось полностью. Чтобы написать на форме текст, можно использовать элемент управления Label с панели Toolbox.

Ну, и наконец, выделив предварительно всю форму, можно задать текст в строке заголовка, используя свойство Caption в панели Properties:

В итоге у вас должно получиться нечто подобное:

splash5.jpg

Шаг 2. Добавляем управляющий код

Щелкните правой кнопкой мыши по форме и выберите View Code. В открывшийся модуль формы добавьте такой код:

Откройте модуль ЭтаКнига в левом верхнем углу (если ее не видно — отобразите соответствующее окно через меню View — Project Explorer) и добавьте в него следующий код:

И, наконец, вставьте обычный модуль (Insert — Module) и скопируйте туда это:

Все. Можно закрывать редактор Visual Basic, сохранять файл и пробовать закрыть-открыть книгу.

Как это работает?

При открытии книги Excel выполняет процедуру Workbook_Open из модуля ЭтаКнига. Эта процедура отображает на экране нашу форму-заставку. При отображении формы запускается процедура UserForm_Activate, которая с задержкой в 5 секунд запускает макрос KillTheForm, который убирает форму с экрана.

Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!

1. Держать Alt + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

2. В Microsoft Visual Basic для приложений окно, дважды щелкните Эта рабочая тетрадь из Проект-VBAProject панели, затем скопируйте и вставьте приведенный ниже код VBA в Модули окно, см. снимок экрана:

Внимание: Если Проект-VBAProject панель скрыта, щелкните Вид > Обозреватель проекта для его отображения.

3. Затем закройте окно кода и сохраните эту книгу как Excel Macro-Enabled Workbook формат, пожалуйста, нажмите Файл > Сохранить какИ в Сохранить как окно, выберите Excel Macro-Enabled Workbook из Сохранить как список, см. снимок экрана:

4. Теперь при первом открытии этого файла вверху таблицы отображается предупреждение системы безопасности, щелкните Включить контент кнопку для активации кода VBA, см. снимок экрана:

Ноты:

Автоматически открывать определенные книги при следующем запуске Excel

После установки Kutools for Excel, выполните следующие действия:

1. Открывайте книги, которые вы хотите открыть вместе в следующий раз автоматически.

2. Затем нажмите Предприятие > Workbook > Автоматически открывать эту книгу в следующий раз, см. снимок экрана:

3. В Автоматически открывать эту книгу в следующий раз диалоговое окно, щелкните Выбрать все чтобы проверить все книги, которые вы хотите автоматически открывать в следующий раз при запуске файла Excel, затем нажмите Ok для выхода из диалога см. снимок экрана:

4. И теперь, когда вы запускаете файл Excel, все выбранные вами книги открываются одновременно.

Внимание: Чтобы отменить эту операцию, вам просто нужно отменить выбор всех книг или удалить или очистить книги в Автоматически открывать эту книгу в следующий раз диалоговое окно.

Репутация: нет
Всего: нет

Репутация: 13
Всего: 23

Цитата(Rustamb @ 30.12.2009, 12:18 )
Сейчас пишу базу данных

“. Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”

Репутация: нет
Всего: нет

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль «Помогите!» таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в «Книге отзывов о работе администрации»
  • А вот тут лежит FAQ нашего подраздела

Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

[ Время генерации скрипта: 0.1258 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Читайте также:

      

  • Долг в жизни людей разных профессий сообщение
  •   

  • Сообщение о профессии парфюмер
  •   

  • Сообщение об одной из религий востока конфуцианство буддизм индуизм синтоизм
  •   

  • Музей в орле тургенева сообщение
  •   

  • Сообщение фразеологизмы о языке

Сегодня один человек задал вопрос на канале YouTube:»Подскажите, пожалуйста, возможно ли сделать так, чтобы пользовательская форма открывалась, только когда открыт определенный Лист Excel???»

КОНЕЧНО ВОЗМОЖНО!

Приведу реализацию кода для данной задачки.

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

'//Процедура выводит сообщение, только если...
'//...активным листом является лист "МойЛист"
Sub TestProc()
    Dim mySheet As Worksheet '//эта переменная будет содержать ссылку на наш лист(объект)
    Set mySheet = ThisWorkbook.Worksheets("МойЛист") '//инициализируем переменную ссылкой на наш объект-лист
    If (mySheet Is ThisWorkbook.ActiveSheet) Then MsgBox "Hello World" '//если наш лист является активным листом, тогда показываем форму
End Sub

Понравилась статья? Поделить с друзьями:
  • Открытие файлов на весь масштаб word
  • Открытие файлов excel по умолчанию
  • Открытие файла макросом excel в этой же папке
  • Открытие файла в режиме защищенного просмотра зависает excel
  • Открытие файла word секунд