Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Unterschiede W7/2010/13 zu W10/2016
#1
Hallo zusammen,

ich habe einen Unterschied zwischen W7/2010 und W10/2016 bei der Formatierung der Achsbeschriftung von Diagrammen festgestellt. Mit der jeweils anderen Einstellung werden die Achsbeschriftungen auf 0 Kommastellen gerundet ausgegeben. Kann das eventuell jemand bestätigen?

Ich habe in meinem code z.B. folgende Zeilen unter W7/2010:
.Axes(xlValue).MajorUnit = 0.05
.Axes(xlValue).MinorUnit = 0.05
.Axes(xlValue).TickLabels.NumberFormat = "#0.00"

unter W10/2016 funktioniert das so:
.Axes(xlValue).MajorUnit = 0.05
.Axes(xlValue).MinorUnit = 0.05
.Axes(xlValue).TickLabels.NumberFormat = "#0,00"

Ländereinstellungen, Dezimaltrennzeichen usw. sind gleich.

Wir könnten diesen Thread übrigens auch gleich nutzen, um ggf. weitere Unterschiede herauszuarbeiten.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#2
Es gibt einige Bereiche, wo lokale und andere Bereiche, wo amerikanische Syntax bzw. Übersetzung gelten. Das kann man beim Aufzeichnen von Formeln, Gültigkeiten, bed. Formaten, Zahlenformaten, Parametern in Funktionen wie TEXT usw. im Detail sehen.

Hier hat es anscheinend sogar einmal gewechselt, nämlich von international 2010 auf lokal 2016. Kein Beinbruch, aber ein Beispiel dafür, dass die von so manchen Teilnehmern hier behaupteten begrenzten Inkompatibilitäten zwischen verschiedenen VBA-Versionen eben NICHT BEGRENZT sind.
Antworten Top
#3
Moin!
Mangels xl2016 nur eine Anmerkung:
In 2010 gibt es das "Problem", dass der Recorder Strings für Übergabeparameter mit deutschen Trennzeichen aufzeichnet.
Als Beispiel für Datenüberprüfung, Liste a;b;c (Rekordercode)
Code:
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="a;b;c"
Korrekt arbeitet nur:
Code:
Formula1:="a,b,c"
Wenn Excel tatsächlich was an den Trennzeichen geschraubt hat, müsste obiger Rekordercode ja unter 2016 laufen?

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Hallo Ralf,
ist nicht so.

Weiße "Bilder" beim Grafikexport / Grafikexport funktioniert sporadisch nicht

Beim Export von Grafiken z.B. als gif oder jpg mit Hilfe von Diagrammflächen wird unter 2016 ein weißes Bild ausgegeben. Unmittelbare Ursache war, dass kein Bild in das Diagramm eingefügt wurde.
Unter 2010 lief der Code ohne diesen Fehler.
Im praktischen Betrieb erstelle ich aus einer Vielzahl an Excel-Dateien in einer Schleife Bilder. Dabei habe ich bemerkt, dass zu 100% das erste Bild der Schleife gefehlt hat.  

Im Netz findet man u.a. zwei Vorschläge.
Bei einem wird empfohlen, vor der Bildkopie eine "normale" Kopie des Bereiches zu erstellen. Diese Vorschlag hat bei mir nichts gebracht.
Beim zweiten wird empfohlen, vor dem Einfügen das Blatt mit dem Diagramm zu selektieren. Ging bei mir auch nicht.

Ich habe den Export in einer gesonderten Funktion. In einem weiteren Versuch habe ich, da ja immer das erste Bild weiß war und die anderen korrekt, innerhalb der Funktion durch die Fehlerbehandlung einen zweiten Kopierversuch gestartet, angefangen mit der Zuweisung des Diagramms zur Objektvariablen. Auch das hat nichts gebraucht.

Erfolg hatte ich erst durch einen zweiten Aufruf der Funktion.

Hier mal ein extrahierter Beispielcode.
Hinweise:
Die Fehlerbehandlung müsste ggf. verschiedene Fehler auswerten. Ich möchte hier nur die Wiederholung demonstrieren.
Die Skalierung kann bei gleichem Seitenverhältnis der Bereiche und entsprechender Einstellung für die Seitenverhältnisse auf Height oder Widht eingekürzt werden.
Die Zeilennummern im Code sind übrigens ok und werden in der Fehlerbehandlung (Meldung) verwendet. Das erleichtert die Fehleranalyse bei On Error ... 

Code:
Sub testgrexpo()
'Variablendeklaration
'Integer
Dim iA%
'Wenn Graphicexport einen Fehler bringt, dann
If GraphicsExport(ActiveSheet.Range("A1:D20"), "C:\temp\testgr2.gif", "gif", 1) = -1 Then
 '... nochmal
 GraphicsExport ActiveSheet.Range("A1:D20"), "C:\temp\testgr2.gif", "gif", 1
'Ende Wenn Graphicexport einen Fehler bringt, dann
End If
End Sub
'------------------------------------------------------------------------------
' [GraphicsExport] exportiert einen Bereich (RangeObjekt) als Grafik in die Datei
' <fname> dabei wird der Exportfilter <filter> benutzt und die Grafik scaliert
'------------------------------------------------------------------------------
Function GraphicsExport(r As Range, FName As String, Filter As String, ratio As Double) As Integer
         'Variablendeklarationen: Objekt
         Dim tempDia As ChartObject
         'Bei Fehler Fehlerbehandlung
10        On Error GoTo errorhandler
20        GraphicsExport = 0
         'Screenupdate ggf. auf wahr setzen, sonst ist der Bildbereich weiß
'50        Application.ScreenUpdating = True
         'Diagramm setzten, genau ein leeres Diagramm muss vorhanden sein
60        Set tempDia = ThisWorkbook.Sheets("Tabelle1").ChartObjects(1)
         'Bereich als Grafik kopieren
70        r.CopyPicture xlScreen, xlBitmap
         'Mit dem Diagramm
80        With tempDia
             'Diagramm auf Bildgroesse +1 scalieren, kein width wenn die Größenverhältnisse skaliert werden
90            .Height = r.Height + 1
100           .Width = r.Width + 1
             'Kopie in Diagramm einfuegen
110           .Chart.Paste 'bei erstem Durchlauf wird hier in W10/2016 zuweilen nix eingefuegt
             'Diagramm entsprechend ratio scalieren, kein width wenn die Größenverhältnisse skaliert werden
120           .Height = .Height * ratio
130           .Width = .Width * ratio
             'Diagramm als Bild speichern
140           .Chart.Export FName, Filter, False
             'Eingefuegtes Bild loeschen
150           .Chart.Shapes(1).Delete
         'Ende Mit dem Diagramm
160       End With
errorhandler:
         'Screenupdating ggf. auf False setzen
'170       Application.ScreenUpdating = False
         'Objekt zuruecksetzen
180       Set tempDia = Nothing
         ' Maßnahme zur Reduktion von Speicher, enventuell durch ClearClipboard ersetzen
190       Application.CutCopyMode = False
         'Wenn fehler, dann
210       If Err.Number <> 0 Then
           'Fehlermeldung ausgeben
220         MsgBox "Fehler: " & Err.Number & " in GraphicsExport " & Err.Description & " Zeile: " & Erl
           'Fehler loeschen
230         Err.Clear
           GraphicsExport = -1
         'Ende Wenn fehler, dann
240       End If
End Function
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Speicherauslastung

Das ist mal was positives.

In Zusammenhang z.B. mit dem oben geschilderten Grafikexport kam es unter 2010 zu Programmabbrüchen, wenn Excel ca. 1 GB Speicherauslastung im virtuellen Speicher erreicht hatte. Das war bei etwa 50-55 Kopien für die Grafikausgabe der Fall. Mit einem entsprechenden Tool konnte man die Speicherauslastung bei den Kopiervorgängen beobachten. Beim Kopieren ging es im 3stelligen MB-Bereich nach oben und nach dem Leeren der Zwischenablage blieben jeweils 15-20 MB Zuwachs pro Vorgang.

Es gab Aufträge mit teilweise über 200 Dateien (je Ausgabeblatt 1 Datei), wofür Vorschaugrafiken für ein html-Inhaltsverzeichnis erstellt werden sollten. Aufträge mussten in 2 - 5 Teilaufträge gesplittet werden, um den Grafikexport zu gewährleisten. Excel musste dazwischen beendet werden.

Das scheint nun unter W10/O2016 (32) nicht mehr der Fall zu sein. Zumindest liegt eine mögliche Grenze jetzt oberhalb der bisherigen - habe nicht alles getestet Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Hallo,

MS hat in einem Update letztes Jahr die Grenze erhöht, sodass für Excel 2013 und Excel 2016 (32 Bit) bis zu 4GB Ram zur Verfügung stehen.
Siehe der Artikel hier (Englisch): https://support.microsoft.com/en-us/help...-for-excel

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#7
Hallöchen,

die Probleme mit dem Grafikexport - siehe #4 - sind nun doch noch nicht alle behoben. Trotz mehrfachem Aufruf habe ich sporadisch Fälle mit der Meldung

1004 Die CopyToPicture-Methode konnte nicht ausgeführt werden.

Wenn diese Meldung in einer Session kommt, geht anschließend keine weitere CopyToPicture mehr. Excel muss für weitere CopyToPicture neu gestartet werden.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste