DisplyAlerts - Eigenschaft fehlerhaft?
10.09.2004 14:34:05
Bernhard
ich möchte in meinem Makro Exceldateien als Textdateien abspeichern. Wenn ich die Textdatei unter einem anderen Pfad als die Exceldatei abspeichere, erhalte ich von Excel einen Warnhinweis, den ich aber unterdrücken möchte.
Hierfür gibt es in Excel die Eigenschaft Application.DisplayAlerts = False. Das Problem dabei ist, daß die Zuweisung des Wertes "False" nicht zuverlässig funktioniert. Wenn ich das Makro im Einzelschritt debugge und mir "Application.DisplayAlerts" im Überwachungsfenster anzeigen lasse, sehe ich, daß der Wert auf True bleibt, auch wenn die Zeile schon durchlaufen wurde.
Steht der Wert auf True, wenn ich die Zeile "ActiveWorkbook.SaveAs" erreiche, erscheint folgerichtig auf das Warnhinweisfenster.
Der Witz ist, wie ich bei vielen Debug-Durchläufen festgestellt habe, daß die Zuweisung von "False" bisweilen einige Befehlszeilen später doch noch durchgeführt wird. Entsprechend unterbleibt dann auch das Warnhinweis-Fenster.
In diesem Zusammenhang ist ein ein weiterer Bug interessant: Wenn ich mit dem Cursor über die Zeile mit "Application.DisplayAlerts" streiche, wird in dem schmalen gelben Popup-Fenster immer der Wert "Wahr" angezeigt, auch wenn im Überwachtungsfenster "False" steht. In diesem Fall hat jedoch das Überwachungsfenster recht, da der Warnhinweis unterbleibt.
Ich habe mein untenstehendes Makro sowohl mit Excel 97 also auch mit Excel 2003 getestet. In beiden Fällen das gleiche fehlerhafte Verhalten.
Ich frage mich, mache ich hier irgendwas falsch oder handelt es sich hierbei um einen Bug, der in Excel 2003 immer noch nicht behoben ist?
Mfg
Bernhard
Sub Xls2text(pathExcelfile As String, Optional pathTextfile As String)
Application.DisplayAlerts = False
Workbooks.Open (pathExcelfile)
l = InStr(1, pathExcelfile, ".xls", 0)
pathExcelfile = Left(pathExcelfile, l - 1)
If pathTextfile = "" Then
ActiveWorkbook.SaveAs fileName:=pathExcelfile & ".txt", FileFormat:=xlTextWindows
Else
l = InStr(1, pathTextfile, ".txt", 0)
pathTextfile = Left(pathTextfile, l - 1)
ActiveWorkbook.SaveAs fileName:=pathTextfile & ".txt",
FileFormat:=xlTextWindows
End If
End Sub