Всем привет. Уже наткнулся раз на грабли, когда потерял все документы. Больше не хочу! Но сохранять каждый раз копии вручную все же проблематично. Можно макрос написать, который бы: 1. сохранял копию файла на съемном носителе. 2. при отсутствии носителя (флешки в USB-порту) - предупреждал об этом 3. повторял структуру оригинала (если на компьютере путь к файлу Мои документы - Отчеты, то и на флешке путь должен быть таким же)?
Всем привет. Уже наткнулся раз на грабли, когда потерял все документы. Больше не хочу! Но сохранять каждый раз копии вручную все же проблематично. Можно макрос написать, который бы: 1. сохранял копию файла на съемном носителе. 2. при отсутствии носителя (флешки в USB-порту) - предупреждал об этом 3. повторял структуру оригинала (если на компьютере путь к файлу Мои документы - Отчеты, то и на флешке путь должен быть таким же)?light26
Я не волшебник. Я только учусь
Сообщение отредактировал light26 - Пятница, 23.12.2011, 21:52
Серёга как всегда круче варёных яиц. В понедельник на работе посмотрю внимательнее, но уже сейчас видно, что не плохо было бы проверять не только наличие пути, но и доступность его для записи. Тогда можно было бы "предохраняться" не только на флэшке, но и на сетевых дисках. Я когда-то писАл такую функцию для проверки ПОЛНОЙ доступности пути:[vba]
Код
Function ChkPATH(sPath$) As Boolean ' проверка существования пути к папке и её доступности на запись и удаление On Error Resume Next GetAttr (sPath) ' если папка не существует, то будет ошибка If Err Then GoTo eXXit Dim DirName$ Do Do While Len(DirName) < 10 ' случайное имя из смеси 10 букв кириллицы и латиницы DirName = DirName & Chr(Int(Asc("АБВ") + 32 * Rnd)) & Chr(Asc("abc") + Int(26 * Rnd)) Loop Loop While Dir(sPath & DirName) <> "" ' пока имя не будет уникальным в папке MkDir sPath & DirName: RmDir sPath & DirName ' создать и удалить папку eXXit: ChkPATH = (Err = 0) Err.Clear End Function
[/vba] можно будет попытаться прикрутить.
Серёга, а зачем ты в первой строке своей функции [vba]
Код
Public Function ExistDir(ByVal dirName As String) As Boolean
[/vba] назначаешь [vba]
Код
ExistDir = False
[/vba]ведь она и так False после объявления?
Серёга как всегда круче варёных яиц. В понедельник на работе посмотрю внимательнее, но уже сейчас видно, что не плохо было бы проверять не только наличие пути, но и доступность его для записи. Тогда можно было бы "предохраняться" не только на флэшке, но и на сетевых дисках. Я когда-то писАл такую функцию для проверки ПОЛНОЙ доступности пути:[vba]
Код
Function ChkPATH(sPath$) As Boolean ' проверка существования пути к папке и её доступности на запись и удаление On Error Resume Next GetAttr (sPath) ' если папка не существует, то будет ошибка If Err Then GoTo eXXit Dim DirName$ Do Do While Len(DirName) < 10 ' случайное имя из смеси 10 букв кириллицы и латиницы DirName = DirName & Chr(Int(Asc("АБВ") + 32 * Rnd)) & Chr(Asc("abc") + Int(26 * Rnd)) Loop Loop While Dir(sPath & DirName) <> "" ' пока имя не будет уникальным в папке MkDir sPath & DirName: RmDir sPath & DirName ' создать и удалить папку eXXit: ChkPATH = (Err = 0) Err.Clear End Function
[/vba] можно будет попытаться прикрутить.
Серёга, а зачем ты в первой строке своей функции [vba]
Код
Public Function ExistDir(ByVal dirName As String) As Boolean
[/vba] назначаешь [vba]
Код
ExistDir = False
[/vba]ведь она и так False после объявления?Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Воскресенье, 25.12.2011, 20:30
И в мыслях не было. Я реально подумал, что задача невыполнима (есть ведь хоть что-то, что VBA не умеет))) ), - за полтора суток 17 просмотров и ни одного ответа.
Quote (KuklP)
Да ладно! На понт берем?
И в мыслях не было. Я реально подумал, что задача невыполнима (есть ведь хоть что-то, что VBA не умеет))) ), - за полтора суток 17 просмотров и ни одного ответа.light26
типичная задача для операционной системы. в рабочие дни в 13:00 у меня стартует простеньний BAT-файл, который пакует мои данные и копирует архив на сервер. 1 раз в неделю второй батник копирует этот файл на флешку. Все это происходит "ежедневно" без моего вмешательства уже много лет подряд. У вас документы только из Excel? В Word никогда не доводилось документов создавать? в графике не работаете? все это не надо продублировать? Любой файл, который содержит уникальную и важную для Вас информацию, набранную Вами лично - следует дублировать.
Лично я пользуюсь Nc_sched.exe из комплекта NС2000. Все достаточно просто в настройке и достаточно гибко по возможностям.
типичная задача для операционной системы. в рабочие дни в 13:00 у меня стартует простеньний BAT-файл, который пакует мои данные и копирует архив на сервер. 1 раз в неделю второй батник копирует этот файл на флешку. Все это происходит "ежедневно" без моего вмешательства уже много лет подряд. У вас документы только из Excel? В Word никогда не доводилось документов создавать? в графике не работаете? все это не надо продублировать? Любой файл, который содержит уникальную и важную для Вас информацию, набранную Вами лично - следует дублировать.
Лично я пользуюсь Nc_sched.exe из комплекта NС2000. Все достаточно просто в настройке и достаточно гибко по возможностям.IgorGo
Игорь, а что, разве NС2000 до сих пор живёт и пашет на новых операционках типа Vista/Win7? Я уж, честно говоря, совсем забыл как в NC-подобных коммандерах работать Да и искусство написания батников, ИМХО, уже практически утеряно в массах так же как и DOS-программирование и работа в командной строке.
Игорь, а что, разве NС2000 до сих пор живёт и пашет на новых операционках типа Vista/Win7? Я уж, честно говоря, совсем забыл как в NC-подобных коммандерах работать Да и искусство написания батников, ИМХО, уже практически утеряно в массах так же как и DOS-программирование и работа в командной строке.Alex_ST
разве NС2000 до сих пор живёт и пашет на новых операционках типа Vista/Win7?
не знаю, надо пробовать, пакет не требует установки, вполне возможно - будет жить на семерочке. Nc_sched.exe - запустить один разок, он реестр прописывает данные о себе и стартует потом с каждой загрузкой. систему не грузит, поставленную задачу выполняет, меня утраивает на 100%.
я в освоении операционок остановился на ХР))). Из-за таких как я - может остановиться прогресс человечества...
а вот и батник, который пакует архив. последняя строка задает архиватору условия работы. предварительно на диск i:\ копирую персональную книгу макросов, потом упаковыую в igor.rar все, кроме перечисленного в файле i:\ut\nopak.txt
echo off echo copy personal.xlsb to i:\autopen\xls copy "C:\Documents and Settings\goncharenko.DLNET\Application Data\Microsoft\Excel\XLSTART\personal.xlsb" i:\autopen\xls echo update arhiv "c:\program files\winrar\rar.exe" u i:\igor.rar i:\*.* -r -ed -ep2 -y -x@i:\ut\nopak.txt
Quote (Alex_ST)
разве NС2000 до сих пор живёт и пашет на новых операционках типа Vista/Win7?
не знаю, надо пробовать, пакет не требует установки, вполне возможно - будет жить на семерочке. Nc_sched.exe - запустить один разок, он реестр прописывает данные о себе и стартует потом с каждой загрузкой. систему не грузит, поставленную задачу выполняет, меня утраивает на 100%.
я в освоении операционок остановился на ХР))). Из-за таких как я - может остановиться прогресс человечества...
а вот и батник, который пакует архив. последняя строка задает архиватору условия работы. предварительно на диск i:\ копирую персональную книгу макросов, потом упаковыую в igor.rar все, кроме перечисленного в файле i:\ut\nopak.txt
echo off echo copy personal.xlsb to i:\autopen\xls copy "C:\Documents and Settings\goncharenko.DLNET\Application Data\Microsoft\Excel\XLSTART\personal.xlsb" i:\autopen\xls echo update arhiv "c:\program files\winrar\rar.exe" u i:\igor.rar i:\*.* -r -ed -ep2 -y -x@i:\ut\nopak.txtIgorGo
Серёга, а зачем ты в первой строке своей функции Формула или Код VBA: Public Function ExistDir(ByVal dirName As String) As Boolean назначаешь Формула или Код VBA: ExistDir = Falseведь она и так False после объявления?
Леш, да это готовую взял где-то(не помню). Лень было вникать:-)
Quote (Alex_ST)
Серёга, а зачем ты в первой строке своей функции Формула или Код VBA: Public Function ExistDir(ByVal dirName As String) As Boolean назначаешь Формула или Код VBA: ExistDir = Falseведь она и так False после объявления?
Леш, да это готовую взял где-то(не помню). Лень было вникать:-)KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
Public Sub www() Dim s$, a, st$ On Error GoTo www_Error st = "k:" s = ThisWorkbook.Path: s = st & Mid(s, 3) & "\" MakeSureDirectoryPathExists s ThisWorkbook.SaveCopyAs (s & ThisWorkbook.Name) Exit Sub www_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure www" End Sub
[/vba]
Сокращенный вариант, с АПИ: [vba]
Код
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
Public Sub www() Dim s$, a, st$ On Error GoTo www_Error st = "k:" s = ThisWorkbook.Path: s = st & Mid(s, 3) & "\" MakeSureDirectoryPathExists s ThisWorkbook.SaveCopyAs (s & ThisWorkbook.Name) Exit Sub www_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure www" End Sub