как автоматизировать название файлов в EXCEL
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



как автоматизировать название файлов в EXCEL Expand / Collapse
Автор
Сообщение
21.05.2007 21:25
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 20.07.2007 21:46
Сообщ.: 26, Visits: 62
суть такая формируется файл EXCEL и надо этому файлу дать имя.
простая аналогия пишем официальное письмо исходящий номер письма есть название файла
все файлы хранятся в одной папке. следующее письмо должно иметь номер предыдущего +1 и сам файл должен соответственно называться .
вот и у меня такой же случай
заполняю бланк. номер банка должен быть следующим от максимального названия файла, хранящегося в определенной папке. и потом имя файла должно быть равно номеру бланка.
1.здесь для меня важна скорость работы макроса.
2. надо вести единую книгу регистрации бланков(файлов). вся нужная информация для регистрации есть в бланке
Помогите плизз!!!
Сообщ. #913507
22.05.2007 9:01
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.03.2008 5:12
Сообщ.: 386, Visits: 4 197
для начала: http://www.relib.com/forums/Topic896045-11-1.aspx


Function ИзвлечьЧисло(pstrText)
Set objRegExp = CreateObject("VBScript.RegExp")
With objRegExp
.MultiLine = True
.Global = True
.Pattern = "\D"
GetDigitsFromText = .Replace(pstrText, vbNullString)
End With
ИзвлечьЧисло = GetDigitsFromText
Set objRegExp = Nothing
End Function

Sub evsino()
spath = InputBox("Задай путь к папке", "", "C:\temp")
If Dir(spath, vbDirectory) = "" Then
MsgBox "Не правильно указан путь", vbCritical, ""
End
End If
mx = 0
fn = ""
Dim fs, f, f1, fc
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(spath)
Set fc = f.Files
For Each f1 In fc
nf = ИзвлечьЧисло(f1.Name)
If mx < nf Then
mx = nf
fn = f1.Name
End If
Next
MsgBox "Макимальный файл " & vbCr & fn & vbCr & mx, vbCritical, ""
End Sub
Сообщ. #913512
22.05.2007 21:37
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 20.07.2007 21:46
Сообщ.: 26, Visits: 62
спасибо
почти все ясно но мне кажется что что пункт 2 здесь можно использовать как решение, те
есть создаем книгу регистрации бланков
ну допустим номера бланков в столбце А вводим в А1 последний номер документа из уже существующей папки с бланками а далее этот номер можно брать для формирования нового номера бланка
когда бланк сформирован при записи файла бланка надо автоматически сделать запись в книгу регистрации ну и подготовить следующий номер
вот так мне кажется
но все равно не знаю как это сделать я ведь не программист а сисадмин
подскажите пожалуйста
Сообщ. #913572
23.05.2007 10:01
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.03.2008 5:12
Сообщ.: 386, Visits: 4 197
так бывает всегда.
Для начала необходимо определиться какой способ оптимален для Вас. И это надо рассматривать не со стороны "как проще сделать", а "как необходимо хранить данные".
Должны храниться только номера, или еще какие-то дополнительные сведения? (ФИО, когда и кто обработал пр...)
Что такое "бланк" - образец листа или файла?
Возможна ли перезапись уже существующих файлов?
Работа с одного ПК?
Как должен называться файл и где он должен находиться? (имеется ввиду путь, будет ли разбивка на год месяц, сквозная номерация и прочее...)
Требуется ли Вам готовый вариант или Вы сами будете его нарабатывать?
и тд...
Для себя определитесь, и будет понятно с чего начать. Готовый для Вас вариант, на данном этапе, Вам никто не предоставит...

Мой кусок не обращает внимание "буквенное" название, а определяет только цифровой индекс, с которым Вы уже можете как-то поступать, и только.
Ваши мысли о паралельном ведении счета и в листе и в директории мне не понятны - зачем? Но мне трудно советывать, не зная ответы на вышепредложенные вопросы...
Сообщ. #913582
23.05.2007 20:50
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 20.07.2007 21:46
Сообщ.: 26, Visits: 62
1. Нумерация бланков сквозная (ведется с начала каждого года и хранится в одной папке)
2. Бланк это просто файл "бланк" .xls и может хранится на многих компах
3. Книга регистрации тоже файл "kri".xls хранится на сервере на общем ресурсе (доступ к нему имеют все пользователи можно все кроме удаления
Информация имеет вид
Номер бланка, дата регистрации, дата выдачи, спец информация
Все кроме номера бланка в бланк попадает из другого документа (фактически в другом документе формируется бланк) а вот номер (сквозной) надо получить из книги регистрации
Чисто организационными методами я организовываю доступ к книге регистрации только с одного компа
из книги берется номер, вносится в бланк, в книге регистрации должна сформироваться пустая строка для заполнения следующей запии но с уже со следующим номером бланка
После этого полностью заполненый бланк сохраняется в строго отведенной папке под именем "номер бланка".xls
В дольнейшем естественно этот файл можно как угодно редактировать
Сообщ. #913611
23.05.2007 20:52
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 20.07.2007 21:46
Сообщ.: 26, Visits: 62
мне не обязательно нада готовый вариант
достаточно заготовки
для меня важен принцип работы
Сообщ. #913612
23.05.2007 20:57
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 20.07.2007 21:46
Сообщ.: 26, Visits: 62
это что то вроде базы данных
в базе ведь можно работать в многопользовательском режиме
но к сожалению есть только EXCEL и все
вот и родилось такое решение
Сообщ. #913613
25.05.2007 13:38
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.03.2008 5:12
Сообщ.: 386, Visits: 4 197
на скорую руку...
1) скопировать код
2) в лист1 в ячейку В2 указать путь к файлу-бланку
3) в лист1 в ячейку В3 указать путь к файлу-книге-регистрации
4) в лист1 в ячейку В4 указать путь к папке в которую складировать файлы
может какие-нибуть корявки, но в целом ход думаю понятен...
удачи.


Sub Start()
If ActiveSheet.Name <> "Лист1" Then
MsgBox "Запуск макроса не с листа с настройками!", vbCritical, ""
End
End If
file_bl = Cells(2, 2): file_kn = Cells(3, 2): folder_rez = Cells(4, 2)
If file_bl = "" Or file_kn = "" Or folder_rez = "" Then
MsgBox "Не правильно задан путь!", vbCritical, ""
End
End If
If Dir(file_bl) = "" Or Dir(file_kn) = "" Or Dir(folder_rez, vbDirectory) = "" Then
MsgBox "Не правильно задан путь!", vbCritical, ""
End
End If
If MsgBox("Работаем?", vbQuestion + vbOKOnly, "") = vbCancel Then End
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' взять номер:
Workbooks.Open Filename:=file_kn
ykn = Cells(65536, 1).End(xlUp).Row
If ykn = 1 Then ykn = ykn + 1
If IsEmpty(Cells(ykn, 1)) Then Cells(ykn, 1) = 0
n = Cells(ykn, 1) + 1
Cells(ykn + 1, 1) = n
Cells(ykn + 1, 2) = Application.UserName
Cells(ykn + 1, 3) = Date & " " & Time
ActiveWorkbook.Save
ActiveWindow.Close
ThisWorkbook.Activate

file_zp = folder_rez & Application.PathSeparator & "приказ " & n & ".xls"
If Dir(file_zp) <> "" Then
If MsgBox("Файл " & file_zp & vbCr & " уже существут " & vbCr & _
"ДА - удалить, и продолжить" & vbCr & _
"Отмена - завершить работу", vbOKCancel + vbQuestion, "") = vbOK Then
Kill file_zp
Else
' вот здесь надо в книге регистрации удалить последнюю запись...
End
End If
End If
mes = "Номер " & n
Workbooks.Open Filename:=file_bl
' в открытый бланк вносим данные:
Cells(2, 2) = n
ActiveWorkbook.SaveAs Filename:=file_zp
ActiveWindow.Close
mes = mes & vbCr & file_zp
ThisWorkbook.Activate
MsgBox mes, vbInformation, ""
End Sub
Сообщ. #913643