Hallo ulko,
ulko hat geschrieben:Irgend wie bin ich blind und habe die Umstellung noch nicht geschnallt.
Das kenne ich nur zu gut
WIRKLICH wichtig ist es bei AOO- und LO-Basic mit dem
MRI-Tool zu arbeiten.
Zugegeben auch ich hatte und habe meine Schwierigkeiten, weil ich zuvor in
Assembler, C, Visual Basic und VBA gearbeitet habe.
Schmeiß einfach vieles über Bord und befasse Dich mit der besonderen Struktur
dieser Basic Variante. MRI ist hier sehr, sehr hilfreich
Lade Dir MRI herunter und installiere die Extension.
Dann am besten wie folgt.
- Öffne die Basic-IDE
- Suche in der ComboBox links oben diesen Eintrag: [Meine Makros & Dialoge].Standard
- Erstelle dort ein neues Modul und schreibe nachfolgenden Code hinein:
Code: Alles auswählen
REM ***** BASIC *****
REM Bibliotheken laden
Sub LoadingLibraries
Globalscope.BasicLibraries.LoadLibrary ( "MRILib")
End Sub
- In der IDE gehst Du auf Menü Extras --> Anpassen... Register Ereignisse
- Markiere auf Programmstart und wähle rechts unterhalb von Zuweisen Makro...
- Es öffnet sich der Makroselektor
- Öffne Im Fenster Bibliothek, mittels des + den Ordner Meine Makros
- Suche nun nach dem Eintrag Standard und öffne diesen Ordner ebenfalls.
- Suche nun in der Liste den Eintrag Modul1, oder wie auch immer Du Dein Modul benannt hast..
- Im rechten Fenster sollte nun LoadingLibraries markiert sein.
- Klicke auf OK
- Starte OpenOffice neu, damit wird MRI standardmäßig bei Programmstart mitgeladen.
Dies bedeutet Du kannst MRI in Deinem Code unmittelbar zur Inspection verwenden.
Wie?
Siehe in meinem nächsten Codeabschnitt, die auskommentierten
Zeilen wo MRI nach dem Hochkomma steht.
Also Hochkomma entfernen, Code starten, Es öffnet sich das MRI-Fenster.
Bei vielen der Einträge unter Properties und Methods, kannst Du per Doppelklick
auf einen Eintrag entweder ein Ebene weiterschalten oder Du erhälst ein Ergebnis.
In einigen Fällen erwartet MRI eine EIngabe von Parameten.
Beispiel:
MRI oDoc.Sheets()
Du kannst nun unter Methods
getByIndex() doppelanklicken.
MRI öffnet einen Dialog und erwartet die Eingabe eines Indexes.
Tipps Du 0 ein, dann schaltet MRI auf das erste Tabellenblatt.
Schau Dir die Werte unter Properties an.
Dort steht der Tabellenblattname als String.
Klicke auf
DataArray in den
Properties, dann werden Dir Zellinhalte von Blatt1 angezeigt und so weiter.
Kannst auch auf
getDataArray unter
Methods aufrufen
MRI ist für unverzichtbar
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
Dim oDoc as Object
Dim oTabBlatt as Object
Dim oRange as Object
Dim mArray as Variant
Dim lb as Integer, ub as Integer, i as Integer
' akteuelles Dokument
oDoc =thiscomponent
' Blatt 0
oTabBlatt =oDoc.Sheets().getByindex(0)
' Range
oRange=oTabBlatt.getCellRangeByName("H1:H15")
' Daten aus Range in Array
mArray= oRange.getDataArray()
'mri odoc
'mri oTabBlatt
'mri oCC
'mri oSel
'mri mArray
' Array Untergrenze
lb= lBound(mArray())
' Array Obergrenze
ub= uBound(mArray())
' Zählen von Untergrenze bis Obergrenze
for i = lb to ub
' Array mit neuen Daten befüllen
mArray(i)(0)=mArray(i)(0)+8
next i
'Arrayinhalt in Range schreiben
oRange.DataArray =mArray
'mri oRange
'mri mArray
End Sub
Denke in Objekten. Objekte brauchen zeitweise andere Services, Strukturen und
Interfaces die extra geladen werden müssen, sonst hat man auf gewisse
Eigenschaften und Methoden keinen Zugriff.
Welche sind das?
Da muss ich selbst noch oft genug suchen; im Netz und in der API.
Gruß
Craig