2016-01-14 2 views
-1

@PKatona, когда я попробовал его в реальной настройке, он перезаписал некоторые файлы. Изучив код, я понял, что он подсчитывает количество файлов в каталоге и сохраняет в качестве следующего номера (например, 15-й файл в папке как «ST14 TC15») вместо сохранения в качестве наивысшего следующего числа в именах файлов (например, есть только 3 файла в каталоге и один с наивысшим окончанием - «ST14 TC06», поэтому следующий файл должен быть сохранен как «ST14 TC07». Надеюсь, это имеет смысл. Но, используя некоторый код, я смог придумать это: однако 1) должен быть способ сократить его! 2) он работает в Excel (где я это сделал), но строка «Evaluate» в конце дает ошибку «Sub или function not defined» в Word!Сохранение документа MS Word с последовательной нумерацией

Еще раз спасибо

`Sub Largest() 

Dim rng As Range 
Dim dblMax As Double 
Dim var_data(200) 
Dim var_numdata(200) 

'* - * - * 
'to put filenames in a specific directory into an array 
Dim MyFile As String 
Dim Counter As Long 

'Create a dynamic array variable, and then declare its initial size 
Dim DirectoryListArray() As String 
ReDim DirectoryListArray(1000) 
Dim str() 
ReDim str(1000) 
Dim num() 
ReDim num(1000) 


'Loop through all the files in the directory by using Dir$ function 
MyFile = Dir$("C:\HAPPY\SANTA\ELVES\*.docx") 
Do While MyFile <> "" 
DirectoryListArray(Counter) = MyFile 
MyFile = Dir$ 
str(Counter) = Mid(DirectoryListArray(Counter), 8, 3) 
num(Counter) = Evaluate(str(Counter)) 
Counter = Counter + 1 
Loop 

'Reset the size of the array without losing its values 
ReDim Preserve DirectoryListArray(Counter - 1) 
ReDim Preserve str(Counter - 1) 
ReDim Preserve num(Counter - 1) 

dblMax = Application.WorksheetFunction.Max(num()) 


Dim nextFilename As String 
nextFilename = "C:\HAPPY\SANTA\ELVES\ST14 HP" + Format((dblMax + 1), "000")+ ".docx" 

ActiveDocument.SaveAs Filename:=nextFilename 
ActiveDocument.Close 


End Sub 

ответ

1

Найдет последнюю последовательность файла:

Dim filename as String 
Dim seq as Integer 
seq = 1 
filename = Dir("C:\HAPPY\SANTA\ELVES\ST14 TC*.docx") 
Do While filename <> "" 
    seq = seq + 1 
    filename = Dir 
Loop 

Dim nextFilename as String 
nextFilename = "C:\HAPPY\SANTA\ELVES\ST14 TC" + Format(seq, "000") + ".docx" 

Add your macro code here... 
+0

В 1000 спасибо вам в @PKatona, он работал как шарм. – Fusion53

+0

Добро пожаловать. Обязательно сделайте это как ответ, – PKatona

Смежные вопросы