Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1328to1332
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bildschirmanzeige rechnerabhängig?

Bildschirmanzeige rechnerabhängig?
02.09.2013 13:16:29
Christian
Hallo,
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
    


  • 3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Bildschirmanzeige rechnerabhängig?
    02.09.2013 15:28:22
    Luschi
    Hallo Christian,
    ich habe mir den vba-Code mehrmals angesehen, und verstehe nicht, warum Du diesen "Budenzauber" veranstaltest. Schon das Kopieren einer geöffneten Datei auf Betriebssystemebene mit einem 'Fremwerkzeug' ist nicht ganz koscher. Und wozu der Umweg über Excel2003, wo diese temporäre Datei ja doch wieder über den Jordan geworfen wird.
    Wenn es das Ziel sein sollte, die Excel2010-Datei speichermäßig zu verkleinern, dann müssen andere Wege gegangen werden; und zwar über ein Vba-AddIn:
    - UsedRange-Bereich jedes Worksheets überprüfen und an die Gegebenheiten anpassen
    - unnötige Formatierungen (ganze Zeilen- bzw. Spaltenbereiche farlich formatiert) bereinigen
    - auf ungewollte externe Verknüpfungen prüfen
    - auch benutzerdefinierte Formatierungs-Bedingungen kontrollieren
    - gesamten Vba-Code exportieren
    - Datei als xlsx-Datei abspeichern
    - xlsx-Datei öffnen und Vba-Code neu importieren und speichern und umbenennnen in *.xlsm
    Bei Deinem Ablauf ist die Gefahr, sich externe Verknüpfungen einzufangen, sehr sehr hoch.
    Bin mal gespannt, worin das Ziel dieses Vba-Codes liegen soll.
    Gruß von Luschi
    aus klein-Paris

    Anzeige
    AW: Bildschirmanzeige rechnerabhängig?
    03.09.2013 09:10:05
    Christian
    Hallo Luschi,
    da es in Excel 2010 anscheinend nicht möglich ist, ein doppelt logarithmisches Diagramm mit einer Primär- und einer Sekundärachse zu generieren und darin jeweils 2 Datenspalten anzuzeigen, war dieser "Budenzauber" leider notwendig. In Excel 2003, aus dem ich die Arbeitsmappe inklusive Makros auf Grund einer Systemumstellung konvertieren musste, war dies ohne Probleme möglich.
    Zur Info:
    Messdaten: https://www.herber.de/bbs/user/87131.xlsx
    Excel 2003-Diagramm: https://www.herber.de/bbs/user/87132.jpg
    Excel 2010-Diagramm: https://www.herber.de/bbs/user/87133.jpg
    Wie Du unter https://www.herber.de/forum/archiv/1316to1320/t1318731.htm nachlesen kannst, war meine diesbezügliche Anfrage leider nicht von Erfolg gekrönt und bin durch Zufall auf diesen "Umweg" gekommen. Dieser funktioniert auch einwandfrei ... bis auf die erwähnten Hinweisfenster, welche auf einem Rechner nicht angezeigt werden und auf dem anderen schon.
    Ich hoffe ich konnte Dir das Ziel dieses VBA-Code näherbringen. Mir wäre eine elegantere Lösung auch lieber, aber MS scheint dies - bewusst oder unbewusst - zu verhindern.
    Eine Idee?
    Schöne Grüße,
    Christian

    Anzeige
    AW: Bildschirmanzeige rechnerabhängig?
    03.09.2013 09:12:08
    Christian
    Häkchen vergessen :-)

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige