Bildschirmanzeige rechnerabhängig?
02.09.2013 13:16:29
Christian
in einem Makro, welches Datei-Eingabe/Ausgabe-Operation durchführt, habe ich die "ScreenUpdating"-Eigenschaft und die "DisplayAlerts"-Eigenschaft deaktiviert, damit der Benutzer von der Konvertierung nichts mitbekommt.
Folgendes Problem:
Auf meinem Bürorechner treten keine störenden Statusmeldungen auf wenn das Makro ausgeführt wird.
Gehe ich allerdings zu einem anderen Rechner, der über Netzwerk auf dieselbe Arbeitsmappe zugreift, bekomme ich kurz ein Hinweisfenster "Speichern unter ..." bzw. "Download ..." angezeigt.
Das ist zwar nur ein kosmetisches Problem, allerdings habe ich keine Ahnung, warum überhaupt eine Einblendung möglich ist.
Die Einstellungen der beiden Rechner in Excel 2010 sind identisch.
Hat jemand eine Idee, woran das liegen könnte?
Vielen Dank im Voraus,
Christian
Public Sub Arbeitsmappe_konvertieren()
' Arbeitsmappe von Excel 2010 in Excel 2003 und wieder zurück konvertieren
Dim intI As Integer ' Schleifenindex
Dim strDateiname As String ' Dateiname der Arbeitsmappe
Dim strDateinameOffice2003 As String ' Dateiname der temporären "XLS"-Datei
Dim strDateinameOffice2010 As String ' Dateiname der temporären "XLM"-Datei
Dim objDatei As Object ' Zeiger auf die aktuelle Arbeitsmappe
' Bildschirmaktualisierung deaktivieren
Application.ScreenUpdating = False
' Dateinamen der Arbeitsmappe sichern
strDateiname = ActiveWorkbook.Name
' "Excel 2010"-Arbeitsmappe speichern
ActiveWorkbook.Save
' Zu speichernden Dateinamen für die temporäre "Excel 2010"-Arbeitmappenkopie ermitteln
strDateinameOffice2010 = Konstanten.strWKPName & "-" & "YYYYMMDD" & "-" & "HHMMSS" & ".xlsm"
' Temporäre "Excel 2010"-Arbeitsmappenkopie erstellen
Set objDatei = CreateObject("Scripting.FileSystemObject")
Call objDatei.CopyFile(ActiveWorkbook.FullName, Application.ActiveWorkbook.Path & "\" & _
strDateinameOffice2010)
' Makros deaktivieren
Application.EnableEvents = False
' Fehlerbehandlung deaktivieren
Application.DisplayAlerts = False
' Zu speichernden Dateinamen für die temporäre "Excel 2003"-Arbeitmappe ermitteln
strDateinameOffice2003 = Konstanten.strWKPName & "-" & "YYYYMMDD" & "-" & "HHMMSS" & ".xls"
' Temporäre "Excel 2010"-Arbeitsmappe öffnen
Call Workbooks.Open(Application.ActiveWorkbook.Path & "\" & strDateinameOffice2010)
' Temporäre "Excel 2010"-Arbeitsmappe als temporäre "Excel 2003"-Arbeitsmappe speichern
Call ActiveWorkbook.SaveAs(Application.ActiveWorkbook.Path & "\" & strDateinameOffice2003, _
xlExcel8)
' ANZEIGE TROTZ DEAKTIVIERUNG
' Temporäre "Excel 2003"-Arbeitsmappe schliessen
Call Windows(strDateinameOffice2003).Close(True)
' Daten-Tabellenblätter in "Excel 2010"-Arbeitsmappe löschen
Call ActiveWorkbook.Sheets(Array(Konstanten.strTabellenblattProzessrechnerdaten, Konstanten. _
strTabellenblattMesswerteUngefiltert, Konstanten.strTabellenblattMesswerteGefiltert, Konstanten.strTabellenblattProtokollMesswerte, Konstanten.strTabellenblattMesswerteDiagramm, Konstanten.strTabellenblattProtokollDiagramm)).Delete
' Temporäre "Excel 2003"-Arbeitsmappe öffnen
Call Workbooks.Open(Application.ActiveWorkbook.Path & "\" & strDateinameOffice2003)
' Daten-Tabellenblätter aus "Excel 2003"-Arbeitsmappe einfügen
Call ActiveWorkbook.Sheets(Array(Konstanten.strTabellenblattProzessrechnerdaten, Konstanten. _
strTabellenblattMesswerteUngefiltert, Konstanten.strTabellenblattMesswerteGefiltert, Konstanten.strTabellenblattProtokollMesswerte, Konstanten.strTabellenblattMesswerteDiagramm, Konstanten.strTabellenblattProtokollDiagramm)).Move(, Workbooks(strDateiname).Sheets(Workbooks(strDateiname).Sheets.Count))
' Temporäre "Excel 2003"-Arbeitsmappe schliessen
Windows(strDateinameOffice2003).Close
' Temporäre "Excel 2003"-Arbeitsmappe löschen
Call Kill(Application.ActiveWorkbook.Path & "\" & strDateinameOffice2003)
' Temporäre "Excel 2010"-Arbeitsmappe löschen
Call Kill(Application.ActiveWorkbook.Path & "\" & strDateinameOffice2010)
' Fehlerbehandlung aktivieren
Application.DisplayAlerts = True
' Makros aktivieren
Application.EnableEvents = True
' Bildschirmaktualisierung aktivieren
Application.ScreenUpdating = True
End Sub