Добрый день! Подскажите, пожалуйста, при создании папки с таким же именем выскакивает ошибка. Как дописать код так, чтобы при наличии папки с таким же именем, создавалась папка с, например, временем и датой (например, Новая папка_15.07.2018_18.14), либо порядковый номер папки ("Новая папка_1, Новая папка_2")
[vba]
Код
Private Sub CommandButton2_Click() 'сохранение в нужную папку Dim FileName$, NewDir$ 'создание папки в текущей папке и сохранение файла NewDir = ThisWorkbook.Path + "\" + Worksheets("Титульный").Range("AA20").Text + "_" + Worksheets("Титульный").Range("M29").Text If Dir(NewDir, vbDirectory) = "" Then MkDir (NewDir) FileName = NewDir + "\" + Worksheets("Титульный").Range("AA20").Text + "_" + Worksheets("Титульный").Range("M29").Text + ".xlsm" ActiveWorkbook.SaveCopyAs FileName MsgBox "Файл сохранен в формате Excel" End If End Sub
[/vba] Три дня пробовал разные варианты, либо код не поддается, либо срабатывает, но только для создания второй папки. Дальше ошибка. Спасибо!
Добрый день! Подскажите, пожалуйста, при создании папки с таким же именем выскакивает ошибка. Как дописать код так, чтобы при наличии папки с таким же именем, создавалась папка с, например, временем и датой (например, Новая папка_15.07.2018_18.14), либо порядковый номер папки ("Новая папка_1, Новая папка_2")
[vba]
Код
Private Sub CommandButton2_Click() 'сохранение в нужную папку Dim FileName$, NewDir$ 'создание папки в текущей папке и сохранение файла NewDir = ThisWorkbook.Path + "\" + Worksheets("Титульный").Range("AA20").Text + "_" + Worksheets("Титульный").Range("M29").Text If Dir(NewDir, vbDirectory) = "" Then MkDir (NewDir) FileName = NewDir + "\" + Worksheets("Титульный").Range("AA20").Text + "_" + Worksheets("Титульный").Range("M29").Text + ".xlsm" ActiveWorkbook.SaveCopyAs FileName MsgBox "Файл сохранен в формате Excel" End If End Sub
[/vba] Три дня пробовал разные варианты, либо код не поддается, либо срабатывает, но только для создания второй папки. Дальше ошибка. Спасибо!pips
Сообщение отредактировал pips - Воскресенье, 15.07.2018, 18:38
Sub мяу() Dim i& On Error Resume Next MkDir ("D:\A") If Err.Number = 0 Then Exit Sub i = 1 Do Err.Clear MkDir ("D:\A" & i) i = i + 1 DoEvents Loop Until Err.Number = 0 End Sub
[/vba]
От моего кота Пипса [vba]
Код
Sub мяу() Dim i& On Error Resume Next MkDir ("D:\A") If Err.Number = 0 Then Exit Sub i = 1 Do Err.Clear MkDir ("D:\A" & i) i = i + 1 DoEvents Loop Until Err.Number = 0 End Sub
Sub Test() SavePath = SaveFolder("C:\021") End Sub
Function SaveFolder(ByVal SavePath As String) As String Set FSO = CreateObject("Scripting.FileSystemObject") If Not FSO.FolderExists(SavePath) Then FSO.CreateFolder SavePath SaveFolder = SavePath Set FSO = Nothing Exit Function End If Dim BaseName As String, BaseName1 As String BaseName = FSO.GetBaseName(SavePath) BaseName1 = FSO.GetBaseName(SavePath) SavePath = FSO.GetParentFolderName(SavePath) Dim tempCount As Integer Do While FSO.FolderExists(FSO.BuildPath(SavePath, BaseName)) tempCount = tempCount + 1 BaseName = BaseName1 & "[" & tempCount & "]" Loop SavePath = FSO.BuildPath(SavePath, BaseName) If Not FSO.FolderExists(SavePath) Then FSO.CreateFolder SavePath End If Set FSO = Nothing SaveFolder = SavePath End Function
[/vba]
не по феншую коты.[vba]
Код
Sub Test() SavePath = SaveFolder("C:\021") End Sub
Function SaveFolder(ByVal SavePath As String) As String Set FSO = CreateObject("Scripting.FileSystemObject") If Not FSO.FolderExists(SavePath) Then FSO.CreateFolder SavePath SaveFolder = SavePath Set FSO = Nothing Exit Function End If Dim BaseName As String, BaseName1 As String BaseName = FSO.GetBaseName(SavePath) BaseName1 = FSO.GetBaseName(SavePath) SavePath = FSO.GetParentFolderName(SavePath) Dim tempCount As Integer Do While FSO.FolderExists(FSO.BuildPath(SavePath, BaseName)) tempCount = tempCount + 1 BaseName = BaseName1 & "[" & tempCount & "]" Loop SavePath = FSO.BuildPath(SavePath, BaseName) If Not FSO.FolderExists(SavePath) Then FSO.CreateFolder SavePath End If Set FSO = Nothing SaveFolder = SavePath End Function