Alle Dialogfelder in Excel deaktivieren, während VB-Skript ausgeführt wird?
Ich habe einen Code in VB, der alle XLSM-Dateien als XLSX speichert. Ich habe bereits den Code, der das für mich erledigt, aber Dialogfelder werden für jede Aktion angezeigt. Dies war gut für ein paar Dutzend Dateien. Ich werde dies jedoch für Hunderte von XLSM-Dateien gleichzeitig verwenden, und ich kann nicht einfach den ganzen Tag an meinem Computer sitzen und immer wieder auf Dialogfelder klicken.
Der Code, den ich ausprobiert habe, ist ziemlich viel:
Application.DisplayAlerts = False
Dies verursacht zwar keinen Fehler, funktioniert aber auch nicht.
In den Feldern wird eine Warnung zum Aktivieren von Makros angezeigt. Außerdem wird beim Speichern unter XLSX die Datei aller Makros entfernt. In Anbetracht der Art der Warnungen habe ich den Verdacht, dass das Deaktivieren dieser Dialogfelder aufgrund des Sicherheitsrisikos eingeschränkt ist.
Gibt es möglicherweise eine Option, mit der ich Dialogfelder für das Debuggen deaktivieren kann, da ich diesen Code im VB-Editor von Excel ausführe?
Ich habe auch versucht:
Application.DisplayAlerts = False
Application.EnableEvents = False
' applied code
Application.DisableAlerts = True
Application.EnableEvents = True
Beides hat nicht funktioniert.
Bearbeiten:
So sieht der obige Code in meinem aktuellen Code aus:
Public Sub example()
Application.DisplayAlerts = False
Application.EnableEvents = False
For Each element In sArray
XLSMToXLSX(element)
Next element
Application.DisplayAlerts = False
Application.EnableEvents = False
End Sub
Sub XLSMToXLSX(ByVal file As String)
Do While WorkFile <> ""
If Right(WorkFile, 4) <> "xlsx" Then
Workbooks.Open Filename:=myPath & WorkFile
Application.DisplayAlerts = False
Application.EnableEvents = False
ActiveWorkbook.SaveAs Filename:= _
modifiedFileName, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
Application.EnableEvents = True
ActiveWorkbook.Close
End If
WorkFile = Dir()
Loop
End Sub
Ich habe auch das umzingeltFor
Schleife, im Gegensatz zu derActiveWorkbook.SaveAs
Linie:
Public Sub example()
For Each element In sArray
XLSMToXLSX(element)
Next element
End Sub
Endlich habe ich die verlegtApplication.DisplayAlerts
überWorkbooks.Open
Linie:
Sub XLSMToXLSX(ByVal file As String)
Do While WorkFile <> ""
If Right(WorkFile, 4) <> "xlsx" Then
Workbooks.Open Filename:=myPath & WorkFile
Application.DisplayAlerts = False
Application.EnableEvents = False
ActiveWorkbook.SaveAs Filename:= _
modifiedFileName, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
Application.EnableEvents = True
ActiveWorkbook.Close
End If
WorkFile = Dir()
Loop
End Sub
Keines davon funktioniert auch.
Bearbeiten:
Ich verwende Excel für Mac 2011, wenn das hilft.