Прошу не кидать тапками, то, что нашел на форуме, не смог применить для своей ситуации. Есть код, сохраняющий файл в заранее выбранную папку. Но, так как файл потихоньку обрастает кодом, размеры сохранений занимают довольно много места на диске. Подскажите, пожалуйста, можно ли переписать код таким образом, чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)
[vba]
Код
Private Sub CommandButton18_Click() 'сохранение в нужную папку Dim FileName$, NewDir$ 'создание папки в текущей папке и сохранение туда файла 'NewDir = ThisWorkbook.Path & "\" & Replace_symbols(UserForm1.TextBox8.Text) & Replace_symbols(UserForm1.ComboBox1.Text) & "_" & Replace_symbols(UserForm1.TextBox4.Text) 'создание папки в нужной директории NewDir = Worksheets("Service").Range("B2") & "\" & Replace_symbols(UserForm1.TextBox8.Text) & "_" & Replace_symbols(UserForm1.TextBox4.Text) If Dir(NewDir, vbDirectory) = "" Then MkDir (NewDir) FileName = NewDir & "\" & Replace_symbols(UserForm1.TextBox8.Text) & "_" & Replace_symbols(UserForm1.TextBox4.Text) & ".xlsm" ActiveWorkbook.SaveCopyAs FileName MsgBox "Файл сохранен в папке Отчеты" Else SavePath = SaveFolder(NewDir) FileName = Replace_symbols(UserForm1.TextBox8.Text) & Replace_symbols(UserForm1.ComboBox1.Text) & "_" & Replace_symbols(UserForm1.TextBox4.Text) & ".xlsm" ActiveWorkbook.SaveCopyAs SavePath & "\" & FileName MsgBox "Такая папка уже существует. Копия сохранена в папке Отчеты" End If End Sub
[/vba] Спасибо!
Прошу не кидать тапками, то, что нашел на форуме, не смог применить для своей ситуации. Есть код, сохраняющий файл в заранее выбранную папку. Но, так как файл потихоньку обрастает кодом, размеры сохранений занимают довольно много места на диске. Подскажите, пожалуйста, можно ли переписать код таким образом, чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)
[vba]
Код
Private Sub CommandButton18_Click() 'сохранение в нужную папку Dim FileName$, NewDir$ 'создание папки в текущей папке и сохранение туда файла 'NewDir = ThisWorkbook.Path & "\" & Replace_symbols(UserForm1.TextBox8.Text) & Replace_symbols(UserForm1.ComboBox1.Text) & "_" & Replace_symbols(UserForm1.TextBox4.Text) 'создание папки в нужной директории NewDir = Worksheets("Service").Range("B2") & "\" & Replace_symbols(UserForm1.TextBox8.Text) & "_" & Replace_symbols(UserForm1.TextBox4.Text) If Dir(NewDir, vbDirectory) = "" Then MkDir (NewDir) FileName = NewDir & "\" & Replace_symbols(UserForm1.TextBox8.Text) & "_" & Replace_symbols(UserForm1.TextBox4.Text) & ".xlsm" ActiveWorkbook.SaveCopyAs FileName MsgBox "Файл сохранен в папке Отчеты" Else SavePath = SaveFolder(NewDir) FileName = Replace_symbols(UserForm1.TextBox8.Text) & Replace_symbols(UserForm1.ComboBox1.Text) & "_" & Replace_symbols(UserForm1.TextBox4.Text) & ".xlsm" ActiveWorkbook.SaveCopyAs SavePath & "\" & FileName MsgBox "Такая папка уже существует. Копия сохранена в папке Отчеты" End If End Sub
чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)
А какая разница? На размер повлияет только в большую сторону (если xls). Меньше будет, если сохранять в xlsb Не пробовали заменить xlsm на xlsx в коде?
чтобы конечный файл сохранялся в формате Excel без макросов? (.xls или .xlsx)
А какая разница? На размер повлияет только в большую сторону (если xls). Меньше будет, если сохранять в xlsb Не пробовали заменить xlsm на xlsx в коде?_Boroda_
Я, возможно, как то не так объяснил. Я менял расширение при сохранении на .xls, при открытии готового файла было предупреждение, что расширение файла не соотвтетствует его формату, и все макросы и UserForm были в файле сохранены. После предупреждения файл открылся. При замене на .xlsx появляется ошибка, но файл открыть не возможно.
Я, возможно, как то не так объяснил. Я менял расширение при сохранении на .xls, при открытии готового файла было предупреждение, что расширение файла не соотвтетствует его формату, и все макросы и UserForm были в файле сохранены. После предупреждения файл открылся. При замене на .xlsx появляется ошибка, но файл открыть не возможно.pips
Сообщение отредактировал pips - Вторник, 06.11.2018, 16:29
У Вас получается, что Вы хотите сохранить КОПИЮ, которая копийе не является - расширения-то разные. Тогда сначала сохраняйте в xlsm, потом открывайте копию и пересохраняйте в нужном формате. Все это, конечно же, макросом
Примерно вот так [vba]
Код
With Workbooks.Open(NewDir & "\" & FileName) .SaveAs Replace(NewDir & "\" & FileName, ".xlsm", ".xlsb") .Close 0 End With Kill NewDir & "\" & FileName
[/vba]
У Вас получается, что Вы хотите сохранить КОПИЮ, которая копийе не является - расширения-то разные. Тогда сначала сохраняйте в xlsm, потом открывайте копию и пересохраняйте в нужном формате. Все это, конечно же, макросом
Примерно вот так [vba]
Код
With Workbooks.Open(NewDir & "\" & FileName) .SaveAs Replace(NewDir & "\" & FileName, ".xlsm", ".xlsb") .Close 0 End With Kill NewDir & "\" & FileName
ActiveWorkbook.SaveCopyAs FileName With Workbooks.Open(FileName) .SaveAs Replace(FileName, ".xlsm", ".xlsb") .Close 0 End With Kill FileName
[/vba]
В таком виде он не работает, ошибка в строке .SaveAs....... При замене .xlsb на .xls файл сохраняется, но при открытии все равно выскакивает сообщение "Файл Name.xls не соответствует разрешению файла. Возможно, файл поврежден или небезопасен" В итоге открывается файл с сохранением кода VBA...
В код добавил эти строчки
[vba]
Код
ActiveWorkbook.SaveCopyAs FileName With Workbooks.Open(FileName) .SaveAs Replace(FileName, ".xlsm", ".xlsb") .Close 0 End With Kill FileName
[/vba]
В таком виде он не работает, ошибка в строке .SaveAs....... При замене .xlsb на .xls файл сохраняется, но при открытии все равно выскакивает сообщение "Файл Name.xls не соответствует разрешению файла. Возможно, файл поврежден или небезопасен" В итоге открывается файл с сохранением кода VBA...pips
Имеет ли место быть такой вариант? Цель: пересохранить файл без макроса с заданным именем и с выбором нужной директории.
[vba]
Код
Sub SaveAs() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim x1 As String Dim x2 As Variant x1 = "Книга1" x2 = Application.GetSaveAsFilename(InitialFileName:=x1, _ FileFilter:="Excel Files (*.xlsx), *.xlsx") If x2 <> False Then ActiveWorkbook.SaveAs x1 & ".xlsx", 51 End If Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
[/vba]
Имеет ли место быть такой вариант? Цель: пересохранить файл без макроса с заданным именем и с выбором нужной директории.
[vba]
Код
Sub SaveAs() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim x1 As String Dim x2 As Variant x1 = "Книга1" x2 = Application.GetSaveAsFilename(InitialFileName:=x1, _ FileFilter:="Excel Files (*.xlsx), *.xlsx") If x2 <> False Then ActiveWorkbook.SaveAs x1 & ".xlsx", 51 End If Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub