Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как проверить файл xl на на чтение? на VBA 
:(
    Опции темы
kashemirny
Дата 20.11.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

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



Доброго дня. Необходимо проверить расположенный на удаленном компьютере файл на возможность записи в него (т.е. проверить, не открыт ли он у кого), если "только чтение" - останов, иначе  - MsgBox "Сейчас вы можете внести данные в файл"....
PM MAIL   Вверх
Akina
Дата 20.11.2009, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Application.Workbooks.Open с параметром Notify:=False - и лови ошибку.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kashemirny
Дата 8.12.2009, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

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



Akina, подскажи, где про это можно подробней прочитать? 
PM MAIL   Вверх
Akina
Дата 8.12.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Во встроенной справке.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kashemirny
Дата 8.12.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

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



Вот что выдала справка:

Notify   Optional Variant. If the file cannot be opened in read/write mode, this argument is True to add the file to the file notification list. Microsoft Excel will open the file as read-only, poll the file notification list, and then notify the user when the file becomes available. If this argument is False or omitted, no notification is requested, and any attempts to open an unavailable file will fail.

почему выдает ошибку:

Код

Application.Workbooks.Open ("\\192.168.1.86\расчеты\00 ОБРАЗЦЫ Документов\dtb.xla",Notify:=False)


не указано явно как использовать свойства, а примера нет. ошибка синтаксиса.

и кстати, как обращаться к poll the file notification list чтобы сделать проверку?
PM MAIL   Вверх
Akina
Дата 8.12.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(kashemirny @  8.12.2009,  17:41 Найти цитируемый пост)
почему выдает ошибку

Потому что думать надо прежде чем код писАть.
Какого хрена параметры процедуры взяты в скобки???


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kashemirny
Дата 8.12.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

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



Akina,  ну извини, в этом VBA черт ногу сломит...

поразмыслив, пришел к выводу, что данное решение к моей ситуации не применимо, т.к. я не открываю явно книгу, а подключаю и использую в документе собственную надстройку "dtb" (представляющую собой обыкновенную таблицу Excel) с помощью кнопки с таким кодом:

Код

Sub ВнестиЗаказчика()
Dim NPath As Workbook
Set NPath = Workbooks("dtb.xla")
NPath.IsAddin = False
End Sub 


предварительно подключается эдд-ин dtb в файле personal.xls:

Код

AddIns("Dtb").Installed = True


т.е. в данном случае нужно сделать проверку установки плагина, и в случае доступности его только для чтения выдать предупреждение  smile 

большая просьба помочь с кодом  smile 

Это сообщение отредактировал(а) kashemirny - 8.12.2009, 17:37
PM MAIL   Вверх
Akina
Дата 8.12.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Код

Sub ВнестиЗаказчика()
Dim NPath As Workbook
Set NPath = Workbooks("dtb.xla")
NPath.IsAddin = False
End Sub

Этот код переводит надстройку из статуса "надстройка" в статус "книга обыкновенная, открытая в режиме hidden".


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kashemirny
Дата 8.12.2009, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

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



именно так! после открытия hidden-книги пользователь вносит наименование заказчика, все реквизиты и нажимает кнопку "Сохранить и выйти", имеющую такой код:

Код

Sub Сохранить_и_выйти()
ЭтаКнига.IsAddin = True
ЭтаКнига.Save
End Sub


НО:
если dtb.xla открыта только для чтения, то в результате выполнения вышеприведенного кода возникает ошибка и зачастую Excel зависает. хотелось бы выполнить проверку доступности dtb.xla на стадии открытия его из personal.xls.
PM MAIL   Вверх
Akina
Дата 8.12.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Тогда используй не ЭтаКнига.Save, а ЭтаКнига.SaveAs с тем же именем и соответствующим ConflictResolution.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

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

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



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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




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


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.