Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
owc11.exe;Digramm;Array,Office Web Componenets; Userspace1;
zurück: Sortierung von Daten in Excel-Fehlersuche im Code weiter: Positions Abfrage Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
röntgen
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jun 2008, 11:06
Rufname: sven

owc11.exe;Digramm;Array,Office Web Componenets; Userspace1; - owc11.exe;Digramm;Array,Office Web Componenets; Userspace1;

Nach oben
       Version: Office 2003

die folgenden Postings/ Beispiele zeigen den E-mail Verkehr zwischen Nepumuk und Röntgen. Dabei ging es um die Möglichkeiten der Darstellung von Diagrammen mit sehr vielen Datenpunkten(>100 000 ) wobei die Daten in einem Array vorliegen.
Mit Boardmitteln ist Excel nicht in der Lage große Array als Datenquelle zu handhaben.
Bei den ersten Versuchen war nach 59 Elementen vom TYP Byte Schluss.

Hier werden nun Lösungsvorschläge vorgestellt, die dennoch zum Erfolg führen. Smile

!!!! WICHTIG WICHTIG WICHTIG !!!!

Bevor es losgeht MÜSSEN die Office WEB Components heruntergeladen und installiert werden/sein (Admin Rechte bei der Installtion beachten!)!
Gibts bei Microsoft unter:
[url] http://www.microsoft.com/downloads/thankyou.aspx?familyId=7287252c-402e-4f72-97a5-e0fd290d4b76&displayLang=en#

Danach muss unter Verweise in der VBA Entwicklungsumgebung : Extras/Verweise ein Häkchen bei " Microsoft Office Web Components 11.0" gesetzt werden. Sollte in der Liste der Name nicht angezeigt werden, empfiehlt es sich den Rechner nach " OWC11.dll " zu durchsuchen. Ist die DLL gefunden, über "Durchsuchen" im Verweis Dialog von VBA die OWC11.Dll hinzufügen. Das ganze funktioniert auch mit älteren Versionen der "Microsoft Office Web Components " , ich empfehle aber unbedingt zumindest die ältere OWC9.dll NICHT ZU BENUTZEN!!! Es gibt mehrere BUGs in dieser Version die es z.B.: einem Angreifer gestatten Schadcode einzuschleusen. Also Haken bei " Microsoft Office Web Components 9 " entfernen und/oder die 11.er Version mit höherer Priorität versehen.

So jetzt gehts los:
röntgen
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jun 2008, 11:12
Rufname: sven


AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac - AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac

Nach oben
       Version: Office 2003

Röntgen schrieb:

Hallo Nepumuk!

Ich hoffe Du kannst und möchtest mir helfen.

Ich bastel jetzt schon sehr lange an einer Möglichkeit umher ein Liniendiagramm zu erzeugen und als Datenquelle arrays zu verwenden, da ich sehr viele Werte darstellen muss.

Im Forum habe ich deinen Namen gehäuft gefunden, wenn es darum geht mit arrays, Diagrammen und den Office Web Tools zu hantieren.

Ich habe mehere Möglichkeiten ausprobiert. Ich habe auch einige Besispiele von dir im Forum gefunden, die die Office web Componeneten benutzen. Leider läuft keines davon bei mir richtig. Ich bekomme die unterschiedlichsten Fehlermeldungen über nicht unterstütze Methoden oder fehlende Objekte und so weiter.

Offenssichtlich mache ich etwas grundsätzliches falsch. Der Objektkatalog hat leider auch keine erhellenden Erkenntnisse gebracht.

Ich hoffe Du kannst mir den einen oder anderen tip geben. Ich bin über jeden Hinweis dankbar.

Achso: Ich benutze Excel 2003. Office web Components 11 ist über verweise eingebunden

mfg
Röntgen
röntgen
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jun 2008, 11:17
Rufname: sven

AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac - AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac

Nach oben
       Version: Office 2003

Nepumuk schrieb:

Hallo Röntgen,

die Hilfedatei zu den Microsoft Office-Webkomponenten findest du unter diesem Pfad: C:\Programme\Gemeinsame Dateien\Microsoft Shared\Web
Components\11\1031

und hat den Namen: OWCVBA11.CHM

Mit freundlichen Grüßen
Nepumuk
röntgen
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jun 2008, 11:26
Rufname: sven

AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac - AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac

Nach oben
       Version: Office 2003

Röntgen schrieb:

Hallo Nepumuk

Der Tipp mit der Hilfe-Datei war super!
Alleine die enthaltene Objekt-Hierarchie ist Gold wert.
Vielen Dank!

In der Hilfe ist ein Besipiel enthalten, das den Umstand Arrayals Datenquelle zum Thema hat. Es fehlt lediglich ein ein Instance von ChartSpace1 sie kann aber leicht hinzugefügt werden. Das sieht dann so aus:

Code:
Set ChartSpace1 = CreateObject("OWC11.Chartspace")




Mit freundlichen Grüßen
Röntgen
röntgen
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jun 2008, 11:38
Rufname: sven


AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac - AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac

Nach oben
       Version: Office 2003

Hallo Röntgen,

hier mal ein Beispiel wie du so ein Diagramm füllst.
Wichtig ist dabei, das es sich bei den Arrays um Variant-Arrays handelt, sonst klappt das nicht.

Code:
Private Sub UserForm_Activate()

    Dim vntSeriesName As Variant
    Dim vntCategories(100000) As Variant, vntValues(100000) As Variant
    Dim lngIndex As Long
    Dim objChart As Object, objConstants As Object
    Dim objSeries As Object, objAxes As Object
   
    vntSeriesName = "Test"
   
    For lngIndex = 0 To 100000
        vntCategories(lngIndex) = "Test " & CStr(lngIndex)
        vntValues(lngIndex) = Fix(Rnd * 100 + 1)
    Next
   
    Set objConstants = ChartSpace1.Constants
   
    Set objChart = ChartSpace1.Charts.Add
   
    objChart.Type = objConstants.chChartTypeLine
   
    objChart.SetData objConstants.chDimSeriesNames, objConstants.chDataLiteral, vntSeriesName
    objChart.SetData objConstants.chDimCategories, objConstants.chDataLiteral, vntCategories
   
    Set objSeries = objChart.SeriesCollection(0)
   
    objSeries.SetData objConstants.chDimValues, objConstants.chDataLiteral, vntValues

    objChart.Interior.Color = RGB(100, 100, 100)
   
    Set objAxes = objChart.Axes(objConstants.chCategoryAxis)
    objAxes.Font.Color = RGB(0, 255, 0)
    objAxes.TickLabelSpacing = 2000

    Set objAxes = objChart.Axes(objConstants.chValueAxis)
    objAxes.Font.Color = RGB(255, 0, 0)
   
End Sub


Das Control befindet sich im Beispiel auf einem Userform.

Bei 100.000 Datenpunkten dauert es aber ein bisschen bis die Daten angezeigt werden.

Ich würde also an deiner Stelle nicht alle Datenpunkte anzeigen, sondern aus allen Daten einen Durchschnitt berechnen. Dann das Array in ein neues umschaufeln und dabei alle Daten, welche nur bis zu eine gewissen Toleranz vom Durchschnitt abweichen nicht in das neue Array übernehmen. Das macht das ganze dann ein bisschen übersichtlicher und ein Trend in die eine oder andere Richtung bleibt trotzdem erkennbar.

Mit freundlichen Grüßen
Nepumuk
röntgen
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jun 2008, 11:40
Rufname: sven

AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac - AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac

Nach oben
       Version: Office 2003

Röntgen schreib:

Hallo Nepumuk

Cool. Du hast Dir ja richtig Arbeit gemacht. Die Info mit dem Variantarray ist neu. Bei meinen Versuchen gestern Abend hat wenigstens der Compiler schon nicht mehr gemeckert, obwohl das Array noch als Byte definiert war. Aber wenn er unbedingt Variant haben will meinetwegen, auch wenn der Speicherbedarf um das Minimum 20-fache ansteigt.
Eine Frage hätte ich dann aber dennoch. MUSS das Diagramm in eine Userform eingebettet sein? Als ich es gestern ausprobiert habe(ohne Userform) wurde gar nichts dargestellt, der Code lief aber im Einzelstep("F8") ohne Probleme durch. Ein Hinweis darauf, des es zwingend in ein Userform muss oder weil das Arry vom Typ Byte war?

Mit freundlichen Grüßen
Röntgen
röntgen
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jun 2008, 11:55
Rufname: sven

AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac - AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac

Nach oben
       Version: Office 2003

Nepumuk schrieb

Hallo Röntgen,

das Control kannst du natürlich genauso gut in eine Tabelle einbetten.

Ich häng dir mal ein Beispiel an. Du benötigst dabei ein paar zusätzliche Abfragen, denn anders als im Userform bleiben hinzugefügte Elemente wie Chart-Objekt und Collection-Objekt natürlich erhalten.

Code:
Option Explicit

Public Sub prcDiagramm()

    Dim vnt_Y_Values() As Variant, vnt_X_Values() As Variant
    Dim vntTempArray As Variant
    Dim lngRow As Long, lngIndex As Long
    Dim objChartSpace As Object, objChart As Object
    Dim objSeriesCollection As Object, objConstants As Object
   
    With Tabelle1
        vntTempArray = .Range(.Cells(2, 1), .Cells(.Rows.Count, 2).End(xlUp)).Value
    End With
   
    ReDim vnt_Y_Values(UBound(vntTempArray) - 1)
    ReDim vnt_X_Values(UBound(vntTempArray) - 1)
   
    For lngIndex = 0 To UBound(vntTempArray) - 1
        vnt_Y_Values(lngIndex) = vntTempArray(lngIndex + 1, 2) ^ 2
        vnt_X_Values(lngIndex) = vntTempArray(lngIndex + 1, 2)
    Next
       
    Set objChartSpace = Tabelle1.ChartSpace1
   
    If objChartSpace.Charts.Count = 0 Then
        Set objChart = objChartSpace.Charts.Add
    Else
        Set objChart = objChartSpace.Charts(0)
    End If
   
    If objChart.SeriesCollection.Count = 0 Then
        Set objSeriesCollection = objChart.SeriesCollection.Add
    Else
        Set objSeriesCollection = objChart.SeriesCollection(0)
    End If
   
    Set objConstants = objChartSpace.Constants
   
    objChart.Type = objConstants.chChartTypeScatterSmoothLine
   
    objSeriesCollection.SetData objConstants.chDimYValues, _
        objConstants.chDataLiteral, vnt_Y_Values
    objSeriesCollection.SetData objConstants.chDimXValues, _
        objConstants.chDataLiteral, vnt_X_Values
   
End Sub




Mit freundlichen Grüßen
Nepumuk

Nachtrag von Röntgen.

Das obige Codebeispiel ist als Modul in der Arbeitsmappe enhalten. Zugriff dann wie gewohnt über. Modul1.prcDiagramm()
röntgen
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jun 2008, 13:08
Rufname: sven

AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac - AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac

Nach oben
       Version: Office 2003

Hallo Nepumuk

Leider Funktioniert das Besispiel mit dem Diagramm nicht bei mir.

in der zeile:

Code:
With Tabelle1
        vntTempArray = .Range(.Cells(2, 1), .Cells(.Rows.Count, 2).End(xlUp)).Value
    End With


gibt es Fehlermeldung mit dem Hinweis auf einen Anwendungs- oder Objektorientiwerten Fehler : " Laufzeitfehler 32809"

weiß jemand wie das Problem löst?
Röntgen
Gast



Verfasst am:
05. Jun 2008, 15:46
Rufname:


AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac - AW: owc11.exe;Digramm;Array,Office Web Componenets; Userspac

Nach oben
       Version: Office 2003

Hallo Nepomuk

ich habe den VBA Code mal ein wenig zusammengestrichen um auf das wesentliche hinzuweisen. Der Code ist in der Tabelle1 in einem Commandbutton1_Click hinterlegt.
wenn man das VBA Projekt kompiliert ("Debuggen/Ausführen VBA Projekt ") ist noch alles gut.
Wenn man es ausführt kommt sofort der gleiche Fehler 32809, ohne einen Hinweis in welcher Zeile oder ähnliches!



Code:
Private Sub CommandButton1_Click()

    Dim vnt_Y_Values() As Variant, vnt_X_Values() As Variant
    Dim lngIndex As Long
    Dim objChartSpace As Object, objChart As Object
    Dim objSeriesCollection As Object, objConstants As Object
   
    ReDim vnt_Y_Values(0 To 100)
    ReDim vnt_X_Values(0 To 100)
   
    For lngIndex = 0 To (UBound(vnt_X_Values))
        vnt_Y_Values(lngIndex) = (lngIndex + 1) ^ 2
        vnt_X_Values(lngIndex) = lngIndex + 1
    Next lngIndex
       
   
    Set objChartSpace = Tabelle1.ChartSpace1
   
   
    If objChartSpace.Charts.Count = 0 Then
        Set objChart = objChartSpace.Charts.Add
    Else
        Set objChart = objChartSpace.Charts(0)
    End If
   
    If objChart.SeriesCollection.Count = 0 Then
        Set objSeriesCollection = objChart.SeriesCollection.Add
    Else
        Set objSeriesCollection = objChart.SeriesCollection(0)
    End If
   
    Set objConstants = objChartSpace.Constants
   
    objChart.Type = objConstants.chChartTypeScatterSmoothLine
   
    objSeriesCollection.SetData objConstants.chDimYValues, _
        objConstants.chDataLiteral, vnt_Y_Values
    objSeriesCollection.SetData objConstants.chDimXValues, _
        objConstants.chDataLiteral, vnt_X_Values
   
End Sub


Ideen,Ratschläge oder irgendwas. Ich bin nämlich kurz davor den PC anzuzünden und in Zukunft als Parkwächter oder Kindergärtner zu arbeiten.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Array aus nicht zusammenhängenden Zellen verwenden 5 Phil_MD 131 14. Nov 2013, 19:37
Luc|:-? Array aus nicht zusammenhängenden Zellen verwenden
Keine neuen Beiträge Excel Formeln: Excel, zeilenweiser Mittelwert von mehrdimensionalem Array 6 MCGast 230 29. Mai 2013, 11:22
slowboarder Excel, zeilenweiser Mittelwert von mehrdimensionalem Array
Keine neuen Beiträge Excel Formeln: Max Formel in Array 5 mscola 93 16. Mai 2013, 15:35
neopa Max Formel in Array
Keine neuen Beiträge Excel Formeln: Array auslösen 2 Pat23 100 18. März 2013, 18:06
Pat23 Array auslösen
Keine neuen Beiträge Excel Formeln: Array nach Kriterien aufsummieren 1 Fat-Twin 108 18. Okt 2012, 22:53
slowboarder Array nach Kriterien aufsummieren
Keine neuen Beiträge Excel Formeln: Conditional sum ohne array 2 dubber 95 17. Okt 2012, 20:58
slowboarder Conditional sum ohne array
Keine neuen Beiträge Excel Formeln: Datenreihe Array aus VBA Function übergeben 0 ak79 741 29. Jun 2012, 13:29
ak79 Datenreihe Array aus VBA Function übergeben
Keine neuen Beiträge Excel Formeln: Array auf Wertdifferenz prüfen 2 MartinBerlin 300 21. März 2012, 23:27
MartinBerlin Array auf Wertdifferenz prüfen
Keine neuen Beiträge Excel Formeln: Auswertung: Rückgabe mehrerer Werte in einer Zelle (Array?!) 5 danielkamm 420 07. Sep 2011, 15:13
danielkamm Auswertung: Rückgabe mehrerer Werte in einer Zelle (Array?!)
Keine neuen Beiträge Excel Formeln: Table Array bei der Funktion SVERWEIS() variabel gestalten 3 Goregoyle 800 01. März 2010, 18:27
Goregoyle Table Array bei der Funktion SVERWEIS() variabel gestalten
Keine neuen Beiträge Excel Formeln: Automatische Aktualisierung bringt web abfragen durcheinande 2 Loric 277 11. Feb 2010, 14:19
Loric Automatische Aktualisierung bringt web abfragen durcheinande
Keine neuen Beiträge Excel Formeln: Index Array ueber mehrere Tabellenblaetter? 2 matsch 2320 05. Feb 2010, 15:38
matsch Index Array ueber mehrere Tabellenblaetter?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Expression Web