У меня аналог базы данных по договорам и их свойствам.
Крайний столбец у меня используется для дальнейшего переименования файлов PDF.
Логика такая:
Есть реквизиты договора, есть Ваш макрос, который фиксирует в в столбце будущее название файла.
Далее, через регулярки я заменяю знаки которые запрещены в именах файловой системы виндовс (/," итд)
Далее регулярка убирает лишние пробелы
Далее макрос переименования файлов (старое название в одном столбце, новое в столбце где мы объединяем название.
Поэтому обновление всегда должно быть в одном столбце.
Я мыслю языком SQL и всегда процесс представляю более линейно без творчества.
Указываем столбец в нашем случае ("Объединить")
ЧТо делаем в этом диапазоне? Чистим если там есть данные и заполняем конкотинацией.
Или сразу производим Update при каждом выполнении макроса вне зависимости от данных.
Код |
---|
Перед выполнением Регулярок будет Ваш макрос
Тогда после того ка появились нове договоры или обновили старые, мы получим в столбце BG актуальные данные;
Далее обработаем их RegExp для того что бы потом переименовать их под хранение на серваке.
Потом получим их ссылку и прикрепим к названию файла.
В итоге юзер открывая файл эксель, получит и реестр договоров и ссылку на сервер данных где этот договор лежит.
Поэтому мне обязательно нужно обновлять столбец данных.
А я пока вижу только ListObject только методы ADD? Application, Count, ...
Update не нахожу.
Sub ReplaceVWithGInColumn()
Dim regEx As Object
Dim cell As Range
Dim originalText As String
Dim resultText As String
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "[«»]"
regEx.Global = True
For Each cell In Range("BG1:BG" & Cells(Rows.Count, "A").End(xlUp).Row)
If Not IsEmpty(cell.Value) Then
originalText = cell.Value
resultText = regEx.Replace(originalText, "")
cell.Value = resultText
End If
Next cell
End Sub
Sub ReplaceVWithGInColumn1()
Dim regEx As Object
Dim cell As Range
Dim originalText As String
Dim resultText As String
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "[/]"
regEx.Global = True
For Each cell In Range("BG1:BG" & Cells(Rows.Count, "A").End(xlUp).Row)
If Not IsEmpty(cell.Value) Then
originalText = cell.Value
resultText = regEx.Replace(originalText, "_")
cell.Value = resultText
End If
Next cell
End Sub
Sub ReplaceVWithGInColumn2()
Dim regEx As Object
Dim cell As Range
Dim originalText As String
Dim resultText As String
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "\s{2,}"
regEx.Global = True
For Each cell In Range("BG1:BG" & Cells(Rows.Count, "A").End(xlUp).Row)
If Not IsEmpty(cell.Value) Then
originalText = cell.Value
resultText = regEx.Replace(originalText, " ")
cell.Value = resultText
End If
Next cell
End Sub
Sub ReplaceVWithGInColumn3()
Dim regEx As Object
Dim cell As Range
Dim originalText As String
Dim resultText As String
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "^\s+"
regEx.Global = True
For Each cell In Range("BG1:BG" & Cells(Rows.Count, "A").End(xlUp).Row)
If Not IsEmpty(cell.Value) Then
originalText = cell.Value
resultText = regEx.Replace(originalText, "")
cell.Value = resultText
End If
Next cell
End Sub
Sub Reg()
Call ReplaceVWithGInColumn
Call ReplaceVWithGInColumn1
Call ReplaceVWithGInColumn2
Call ReplaceVWithGInColumn3
End Sub |