|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Сохранение активной книги в exel |
|
VBA - Сохранение активной книги в exel
|
Старожил Сообщения: 369 |
Профиль | Отправить PM | Цитировать Здрасьте всем.
Сломал голову. Нужно сохранить копию открытой книги с таким же названием, но к названию ещё прибавить и текущую дату со временем. пробовал через ....SaveCopyAs....- пишет ошибка № 424 или 242 - не должно быть в имени двоеточия или точки запятой (это в формате даты) и не понимаю как применить Name или Names к ActiveWorkbook. Пишет недопустимое свойство для данного события или выражения- по памяти не помню. Есть у кого какие соображения? |
|
Отправлено: 23:46, 10-12-2007 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать azbest, может код, который ошибку выдаёт, покажете? Я честно говоря не очень понял, в чём проблема.
|
------- Отправлено: 00:36, 11-12-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 181
|
Профиль | Отправить PM | Цитировать Попробуй так:
Public flg As Boolean Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If SaveAsUI = True Or flg = True Then Exit Sub a$ = Now a$ = Replace(a$, ":", ".") a$ = Replace(a$, " ", "_") a$ = Replace(ThisWorkbook.FullName, ".xls", "") + "_" + a$ + ".xls" flg = True ActiveWorkbook.SaveAs a$ Cancel = True flg = False End Sub |
Отправлено: 22:17, 11-12-2007 | #3 |
Старожил Сообщения: 369
|
Профиль | Отправить PM | Цитировать Сам код программы на другом комп-е и в другом месте, номер ошибки сейчас не узнать,
но неважно. Исходные условия: Открытая рабочая книга (пусть даже пустая) Задача: Сохранить её копию, привязав эту копию ко времени её сохранения, то есть сохраняем копию (с тем же именем прибавив к нему дату и время сохранения), не закрывая рабочую книгу. Всё. Как я делал: 1) Сначала сохраняем новую книгу под нужным нам именем.(У новой книги имени ведь нет). 2) С помощью двух формул создаем "время и дату" в нужном нам формате. 3) Привязываем "время и дату" к имени файла через Activeworkbook.SaveCopyAs filename="*********.xls" В результате всего этого возникает файл, который - точная копия моей активной книги, но без даты и времени, а звать его - False. В качестве альтернативы пробовал присвоить имя активной рабочей книге "чтоб не сохранять 10 раз одно и тоже", по аналогии Sheets("Лист1").Name= "Ё-маё" Так с листом такое проходит а с книгой - сразу пишет: "Ошибка компиляции. Невозможно присвоение значения свойству, доступному только для чтения." не давая запуститься выполнению кода. Если его закоментировать, тогда всё выполняется но в результате появляется он - False. Alexej77 - только сейчас увидел ваш совет, спасибо, попробую разобраться что к чему. |
Отправлено: 23:54, 11-12-2007 | #4 |
Старожил Сообщения: 369
|
Профиль | Отправить PM | Цитировать Кажется понял почти всё.
"Replace" - это удобно. Я у себя этого ещё не применял. а flg как я понял - позволяет срабатывать всему этому делу только один раз, в данной открытой книге. Вот что за SaveAsUI - незнаю. В связи с этим ещё вопрос - есть ли у Вас ссылка на литературу типа "E-book" по VBA чтобы расписывалось каждое свойство, событие итд. В подсказке VBA - когда подносишь курсор к нужному "слову" и жмешь F1 - возникает текст на английском. Но не всегда его можно понять правильно. Примеры тоже не всегда удачны для понимания. В книгах что у меня дается описание "но не по всем операторам и их возможным свойствам, событиям и тд" Одним словом где можно прочитать поконкретнее и поподробнее о VBA "по-русски" |
|
Отправлено: 01:36, 12-12-2007 | #5 |
Старожил Сообщения: 181
|
Профиль | Отправить PM | Цитировать Про flg - правильно думаешь.
SaveAsUI - если True, то пользователь пытается сохранить книгу через "Сохранить как...". Ссылок и литературы нет. Только этот маленький хелп. |
Последний раз редактировалось Alexej77, 28-09-2008 в 23:06. Отправлено: 20:56, 12-12-2007 | #6 |
Старожил Сообщения: 369
|
Профиль | Отправить PM | Цитировать Похоже Replace в моем VBA ещё не присутствует. На свойства написано vba 1997-2000. А эта функция как я понял в vba 2002. Нашел нечто подобное из вашего "скомпилированного" файла - функция format. Ещё раз спасиб за архив. Примеры там понятные.
|
Отправлено: 23:04, 14-12-2007 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Сервер зависает при активной сети | uneform_alex | Microsoft Windows NT/2000/2003 | 7 | 30-07-2009 06:50 | |
Выделение активной ссылки | angeldragon | Вебмастеру | 11 | 20-06-2004 18:59 | |
VB для Exel | Patrick | Программирование и базы данных | 4 | 28-04-2004 00:03 | |
Exel | tara | Программирование и базы данных | 2 | 12-03-2004 12:14 | |
Exel в браузере | Guest | Вебмастеру | 2 | 07-07-2003 07:30 |
|