Array von VB6 nach Calc exportieren verursacht Fehler

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Tobi09
Beiträge: 2
Registriert: Fr, 03.02.2012 17:50

Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Tobi09 »

Ich möchte ein Array aus VB6 in ein OO Calc Dokument exportieren. Dazu habe ich folgenden Code:

Code: Alles auswählen

Private Sub Command1_Click()
    Dim theArray(3) As Double
    
    Dim oSM As Object
    Dim oDesk As Object
    Dim oDoc As Object
    Dim oSheet As Object
    
    Dim arg()
    
    Set oSM = CreateObject("com.sun.star.ServiceManager")
    Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
    Set oDoc = oDesk.loadComponentFromURL("file:///C:\test.ods", "_blank", 0, arg())
    
    theArray(0) = 123
    theArray(1) = 456
    theArray(2) = 789
    theArray(3) = 101
    
    Set oSheet = oDoc.sheets().getByName("Tabelle1")
 
    Call oSheet.getCellRangeByPosition(0, 3, 3, 3).setDataArray(theArray)
End Sub
Beim Ausführen erscheint folgende Meldung:
Laufzeitfehler '1001'

[automation bridge]com.sun.star.script.CannotConvertException in
UnoConversionUtilities<T>::variantToAny! Message: conversion not
possible!
Woran kann das liegen?

Es sei noch gesagt, dass ich problemlos einzelne Werte in einzelne Zellen einfügen kann, indem ich die letzte Zeile durch z.B. das hier ersetze:

Code: Alles auswählen

Call oSheet.getCellByPosition(0, 3).SetValue(123)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Stephan »

Woran kann das liegen?
Daran das das Array für die Methode .setDataArray() nicht die richtige Struktur hat.

Die richtige Struktur ist quasi ein Array im Array, da z.b. auch bei Lesen mit .getDataArray immer nur eine Arrayzelle für eine Zeile genutzt wird.

Das Ganze ist beispielsweise anhand der Datei "ComboBox" nachvollziehbar:
viewtopic.php?f=18&t=1553 (allerletzter Link auf dieser Seite)


Falls ich mich jetzt nicht vertue (denn das Folgende ist ungetetet) sollte funktionieren:

Code: Alles auswählen

theArray(0) = Array(123)
theArray(1) = Array(456)
theArray(2) = Array(789)
theArray(3) = Array(101)
aber schau Dir selbst das oben verlinkte Beispiel an.


Gruß
Stephan
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von F3K Total »

Hi,
Du versuchst ein eindimensionales Array einem zweidimensionalen Arry zuzuordnen, versuch es mal so:

Code: Alles auswählen

    Dim theArray(0,3) As Double
    theArray(0,0) = 123
    theArray(0,1) = 456
    theArray(0,2) = 789
    theArray(0,3) = 101
Gruß R

ups ... timecrossing ...
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Frieder D. »

Hallo F3K Total

du hast das Array genau falsch herum Dimensionier.
So läuft es bei mir:

Code: Alles auswählen

Sub Set_Text_To_Cell()

Dim oSM                   'Root object for accessing OpenOffice from VB
Dim oDesk, oDoc As Object 'First objects from the API
Dim arg() 'Ignore it for the moment !
Dim oSheet, oCellrange
Dim theArray(3, 0)

theArray(0, 0) = 456
theArray(1, 0) = 678
theArray(2, 0) = 455
theArray(3, 0) = 1123

'Instanciate OOo : this line is mandatory with VB for OOo API
  Set oSM = CreateObject("com.sun.star.ServiceManager")
'Create the first and most important service
  Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
  
'Create a new doc
  Set oDoc = oDesk.loadComponentFromURL("private:factory/scalc", "_blank", 0, arg())
  Set oSheet = oDoc.Sheets.GetByName("Tabelle1") '(0)
  Set oCellrange = oSheet.getCellRangeByPosition(0, 3, 3, 3)
  Call oCellrange.setDataArray(theArray())
End Sub
Gruß Frieder
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von F3K Total »

Hi Frieder,
komisch, deine Version läuft bei mir auf einen Fehler, während meine läuft, ich verwende OOo 3.3 was hast Du?

Gruß R
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Frieder D. »

F3K Total hat geschrieben:Hi Frieder,
komisch, deine Version läuft bei mir auf einen Fehler, während meine läuft, ich verwende OOo 3.3 was hast Du?
Gruß R
Hallo
ich benutze LibreOffice3.3.4 .
Aber daran wird es nicht liegen.
Überprüfe mahl, ob folgende Zeile bei dir auch so aussieht:

Code: Alles auswählen

Set oCellrange = oSheet.getCellRangeByPosition(0, 3, 3, 3)
oder sieht sie vielleicht so Aus?

Code: Alles auswählen

Set oCellrange = oSheet.getCellRangeByPosition(3, 0, 3, 3)
Dan liegt es daran!

Gruß Frieder
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von F3K Total »

Ich weiß nicht warum Du mit nicht glaubst, ich habe Dein Makro kopiert und es läuft nicht.
Ändere ich die Reihenfolge läuft es. Woran es liegt, kann ich nicht sagen, deine Version ist sinnfällig (X,Y)
F.png
F.png (118.22 KiB) 2672 mal betrachtet
Gruß R
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Frieder D. »

Hallo F3K Total

Dann muss es wohl an meiner Version von VB liegen.

Ich benutze VBA aus MS office 2003 , da ich kein anderes VB bei mir installiert habe.

Ich kann es später mahl mit VB-Express probieren, da das so weit ich weis kostenlos ist.

Gruß Frieder
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von F3K Total »

... ich benutze das mitgelieferte Starbasic von OOo.

Gruß R
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Stephan »

Stephan hat geschrieben:
Woran kann das liegen?
Daran das das Array für die Methode .setDataArray() nicht die richtige Struktur hat.

Die richtige Struktur ist quasi ein Array im Array, da z.b. auch bei Lesen mit .getDataArray immer nur eine Arrayzelle für eine Zeile genutzt wird.

Das Ganze ist beispielsweise anhand der Datei "ComboBox" nachvollziehbar:
viewtopic.php?f=18&t=1553 (allerletzter Link auf dieser Seite)


Falls ich mich jetzt nicht vertue (denn das Folgende ist ungetetet) sollte funktionieren:

Code: Alles auswählen

theArray(0) = Array(123)
theArray(1) = Array(456)
theArray(2) = Array(789)
theArray(3) = Array(101)
aber schau Dir selbst das oben verlinkte Beispiel an.


Gruß
Stephan

Entschuldigung, ich hatte micht beachtet das es sich um einen 'horizontalen' Bereich handelt.

Folgender StarBasic-Code läuft:

Code: Alles auswählen

Dim theArray(0)

theArray(0) = ARRAY(123,456,789,101)

oSheet = ThisComponent.sheets().getByName("Tabelle1")
oSheet.getCellRangeByPosition(0, 3, 3, 3).setDataArray(theArray)

Gruß
Stephan
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Frieder D. »

Hallo Stephan, Hallo F3K Total

Es geht hier nicht um das integrierte StarBasic, sondern ,
wie die Überschrift sagt um VisualBasic (Von Winzig Weich) kurz VB, oder MS VB.
Array von VB6 nach Calc exportieren verursacht Fehler
Wäre es in StarBasic (kurz SB) geschrieben, könnte mann sich die folgenden Anweisungen einfach sparen:

Code: Alles auswählen

Set oSM = CreateObject("com.sun.star.ServiceManager")
'Create the first and most important service
  Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
 Set...
 Call...
und durch volgendes ersetzen:

Code: Alles auswählen

oDesk=StarDesctop
Arrays sind in VB genau andersherum als in SB.

Gruß Frieder
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Stephan »

Es geht hier nicht um das integrierte StarBasic, sondern ,
wie die Überschrift sagt um VisualBasic


Ja, Du hast Recht, ich hätte das klarstellen sollen:

Ich war mir bei meinem ersten post nicht bewußt das es explicit um VB6 geht. Bei meinem zweiten post war ich mir dessen sehr wohl bewußt ohne es gesagt/geschrieben zu haben, jedoch diente mein post nur zur Richtigstellung meines ersten posts denn der dortige StarBasic-Code war falsch.

Ansonsten:
Sorry ich kann hier nichts beitragen weil ich zu faul bin VB6 zu installieren (ich müßte auch erstmal die Installations-CDs suchen, ich glaube ich habe das seit ca. 2005 nicht mehr benutzt).


Gruß
Stephan
Tobi09
Beiträge: 2
Registriert: Fr, 03.02.2012 17:50

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Tobi09 »

DANKE, so gehts! (Frieders Version)
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von F3K Total »

Gut,
Frieder D. hat geschrieben:Arrays sind in VB genau andersherum als in SB
dann habe ich etwas gelernt.
Egal wie, VB oder SB, Tobi09 wird jetzt zum Ziel kommen!
Frieder D. hat geschrieben:volgendes
schreibt man übrigens mit einem f am Anfang.
Gruß R
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Array von VB6 nach Calc exportieren verursacht Fehler

Beitrag von Frieder D. »

Hallo
F3K Total hat geschrieben:
Frieder D. hat geschrieben:volgendes
schreibt man übrigens mit einem f am Anfang.
Gruß R
Ich hoffe du wirst einem armen Legastheniker nochmal verzeihen, dass er ein rot unterstrichenes Wort übersehen hat.

Gruß Frieder
Antworten