Страницы: 1
RSS
VBA копировать закрытый файл с удалением макросов, в фоне, Подправьте пожалуйста код
 
Уважаемые знатоки VBA,

Необходимо макросом открыть файл .xlsm и сохранить в другой папке как .xlsx без макросов и всё это произвести в фоне, без отображения.
Поиск помог создать 2 варианта, оба работают, но:

Код
sFileName$ = "G:\888.xlsm"
sNewFileName$ = "G:\111\999.xlsx"
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Set objExcel = New Excel.Application
Set myEx = objExcel.Workbooks.Open(sFileName)
    myEx.SaveAs FileName:=sNewFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Set myEx = Nothing
Set objExcel = Nothing

Application.DisplayAlerts = True
Application.ScreenUpdating = True

В первом варианте всё равно выскакивает запрос на сохранение без макросов, как убрать.


Код
sFileName$ = "G:\888.xlsm"
sNewFileName$ = "G:\111\999.xlsx"
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Workbooks.Open sFileName
ActiveWorkbook.SaveAs FileName:=sNewFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close


Application.DisplayAlerts = True
Application.ScreenUpdating = True

Файлов копируется несколько и хотелось бы чтоб на панели задач они не мелькали при открытии и закрытии.
Изменено: DjAlex77 - 25.04.2019 06:54:40
 
При закрытии книги укажите сохранение
ActiveWorkbook.Close (True)
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Цитата
Alemox написал:
При закрытии книги укажите сохранениеActiveWorkbook.Close (True)
Зачем, файл уже сохранён?
ActiveWorkbook.SaveAs FileName:=sNewFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 
Код
sFileName$ = "G:\888.xlsm"
sNewFileName$ = "G:\111\999.xlsx"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set objExcel = New Excel.Application
With objExcel
    .ScreenUpdating = False
    .DisplayAlerts = False
    Set myEx = .Workbooks.Open(sFileName)
    myEx.SaveAs Filename:=sNewFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    .Close False
    .Quit
End With
Set myEx = Nothing
Set objExcel = Nothing

Application.DisplayAlerts = True
Application.ScreenUpdating = True
 
RAN,

Всё равно выскакивает запрос:
«Чтобы продолжить сохранение книги в формате без поддержки макросов, нажмите кнопку "Да"»
 
А в чем причина такого сохранения, может достаточно модули удалить?
"Все гениальное просто, а все простое гениально!!!"
 
Возможно удаление модулей и подойдёт, но как макросом одного файла удалить модули другого файла? Для меня это вообще тёмный лес.

Думал открыть файл, сохранить как и всё, куда проще, оказывается нет.
 
Попробуйте может подойдет
Код
Sub DeleteModulesInFiles()
    Dim iPath$, book As Workbook
    Dim ikey, sPath$, fName$, sName$
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    iPath = "G:\"
    sPath = "D:\111\"
    fName = "888.xlsm"
    sName = "999.xlsm"
    Set book = Workbooks.Open(iPath & fName)
    book.SaveAs FileName:=sPath & sName
    With book
        For Each ikey In .VBProject.VBComponents
            Select Case ikey.Type
                Case 1 To 3: ikey.Collection.Remove ikey
            End Select
        Next ikey
        .Close True
    End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
Изменено: Nordheim - 25.04.2019 10:54:44
"Все гениальное просто, а все простое гениально!!!"
 
DjAlex77, Как удалить макросы в книге?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх