Новости:

Прикрепить к сообщению можно только файлы xls, gif, jpg, rar, zip,7z, bas, frm, cls, doc размером до 150 Кб.

Главное меню

Занятый файл

Автор d7d1cd, 11.03.2013, 20:53

« назад - далее »

d7d1cd

Привет всем! Представим ситуацию, когда один макрос открыл текстовый файл для записи и копошится там. В это время второй макрос пытается открыть для записи этот же файл. Что будет? И как это отследить?

d7d1cd

Так поможет кто? Где вы, знатоки VBA?

kuklp

#2
Чем помочь? Текстовые файлы не предназначены для работы в совместном доступе. Открывая файл, Вы просто считываете его в память. Отредактировав, сохраняете его на место предыдущего. Если оба макроса выполняются из одной книги, объявите публичную переменную-флаг и при запуске второго макроса проверяйте ее состояние. Если макросы из разных книг, то можно создавать файл-флаг в его(файла текста) папке и удалять при закрытии. А вторым макросом проверять наличие файла при помощи Dir.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

d7d1cd

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

Подскажите, как сделать публичную переменную?

kuklp

#4
Вы писали:
Цитата: d7d1cd от 11.03.2013, 20:53
ситуацию, когда один макрос открыл текстовый файл для записи и копошится там
Теперь:
Цитата: d7d1cd от 22.03.2013, 17:16
книги открыт общий доступ на редактирование. Книга будет открываться
Так текстовый файл, или книга? Вы уж определитесь.
Цитата: d7d1cd от 22.03.2013, 17:16
Подскажите, как сделать публичную переменную?
В общем модуле объявить:
public flag as boolean
Но в Вашем случае, только вариант с доп. файлом.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

d7d1cd

А почему только вариант с файлом?

kuklp

#6
Потому, что Вашу переменную будет видеть только Ваш экземпляр Экса. И только тот, в котором она создана. Другие экземпляры, даже на Вашей машине, ее не увидят.
P.S. Я еще раз Вам советую, начните с чего-нибудь попроще. :)
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

d7d1cd

Совет начать с чего нибудь попроще, конечно, правильный. Но когда ты на С++ написал большую и, главное, работающую программу, то стыдно начинать с простого. Да, кроме того, времени нет особо. Программа нужна еще вчера. Спасибо за помощь!