Übersetzung von VBA nach OOo

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Übersetzung von VBA nach OOo

Re: Übersetzung von VBA nach OOo

von Karolus » Do, 29.05.2014 18:26

Hallo
Vielen Dank für die Hilfe, habs hingebracht.
Schön, das du dich selbst auch noch ein wenig angestrengt hast - als Belohnung gibts einen Ansatz wie man das vernünftig lösen könnte

Code: Alles auswählen

def iterate(iterable):
    iterable = iterable.createEnumeration()
    while iterable.hasMoreElements():
        yield iterable.nextElement()
        
def nextEmptyRow(cellrange):
    emptys = cellrange.queryEmptyCells()
    last = emptys.getByIndex( emptys.Count -1 )
    return last.RangeAddress.StartRow



def getSelection(  something_selected ):

    sel = something_selected    
    try:  # einzelne Zelle oder Zellbereich
        data = tuple(entry
                     for entry in sel.DataArray
                     if entry[0] )
    except AttributeError:  # mehrere Zellen oder Bereiche
        data = tuple(cell.DataArray[0]
                     for cell in iterate( sel.Cells )
                     if cell.DataArray[0])
    return data

def main():
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.CurrentSelection
    data = getSelection(sel)-
    sheetnames = [ 'Materialbestellung', 'Alle_Bestellungen' ]
    for sname in sheetnames:
        sheet = doc.Sheets.getByName( sname )
        aCol = sheet.Columns.A
        fRow = nextEmptyRow( aCol )
        lRow = fRow + len( data ) -1
        target = sheet.getCellRangeByPosition(0, fRow, 0, lRow)
        target.setDataArray( data )
 
@Balu: Du hast natürlich Recht - die Verweis-daten sollte man bei der Gelegenheit auch gleich abholen und eintragen.

Karolus

Re: Übersetzung von VBA nach OOo

von Stephan » Do, 29.05.2014 14:32

ich habe vom Programmieren keine Ahnung


aber lesen kannst Du und mehr wäre hier nicht nötig gewesen
und habe die Makroschnipsel von Excel auch nur zusammengetragen und mit Hilfe des Herbers-Excel Forums erstellt
komisch das Du hier bezüglich OO das gleiche Vorgehen verweigerst und gegebene Hinweise auf eben solche Codeschnipsel ignorierst und stattdessen falsche Behauptungen (="Geht eben doch nicht") aufstellst
aber wer hat mir nun wirklich geholfen?
das kommt wohl darauf an ob Du selbstständig sein willst oder abhängig. das ist bei Programmieren nicht anders als wie im realen Leben und es ist immer diegleiche Frage ob man die Bequemlichkeit, aber eben Abhängigkeit, bevorzugt sich Fische schenken zu lassen oder ob man sich ein Netz schenken lässt um abschliessend selbst fischen zu lernen


Gruß
Stephan

Re: Übersetzung von VBA nach OOo

von balu » Do, 29.05.2014 11:08

Hallo Gammaray,
Geht eben doch nicht.
Was geht nicht?

Lorbass hatte dir schon zu recht einen sehr nützlichen Link gepostet, damit Du dich schon mal mit StarBasic beschäftigen kannst. Denn wenn Du von VBA nach StarBasic umsteigen willst(musst), ist es für dich sehr wichtig gewisse Grundkenntnisse von der für dich neuen Programmiersprache anzueignen. Auch wenn beide Sprachen bis zu einem gewissen Punkt gleich klingen, so sind es doch sprachlich zwei verschiedene Dialekte.

Mir geht es hauptsächlich darum, ob mir jemand sagen kann, ob mein Problem überhaupt gelöst werden kann. Funktioniert das in Calc?
Kann bestimmt gelöst werden. Und Calc wird das wohl schon schaffen, wenn Du es richtig programmiert hast (also nicht mit Makrorecorder aufzeichnest).

Wichtig ist mir eigentlich nur der Schritt, in welchem das Makro die nächste freie Zelle in Spalte "A" findet und dort hinein springt.
Mit ein bisschen logischem überlegen, und dann die passenden Suchbegriffe hättest Du schon eine Lösung dafür hier im Forum finden können. Logische Suchbegriffe wären gewesen: Letzte benutzte Zelle in Spalte.
Hier mal ein einfaches Beispiel

Code: Alles auswählen

Sub Main
	oDok = thisComponent
	oTestSheet = oDok.sheets.getByName("Test")
	
	With oTestSheet 
		x = .Columns(0).queryEmptyCells()
		iLetzteZeile = x(x.Count-1).RangeAddress.StartRow + 1
	End With
	print iLetzteZeile
	oTestSheet.getCellRangeByName("A" & iLetzteZeile).value = iLetzteZeile
End Sub
Mir wäre auch schon geholfen, wenn man mir einfach sagt: Calc, bzw. StarBasic kann das nicht, dann brächte ich mich auch nicht weiter um eine Lösung bemühen.
Ich wüsste nicht warum StarBasic das nicht kann.
Spalten-Verweise
Häh, wie bitte!?
Sache mal, sieh ich das richtig das Du trotz Makro noch zusätzlich mit der Calc-Funktion SVERWEIS() arbeitest? Wenn ich deine Schilderung vom Fr, 16.05.2014 18:19 so lese, muss ich zu dieser Vermutung kommen. Und sollte ich recht haben, dann frag ich mich nur: Warum nicht gleich alles per Makro erledigen?
Oder seh ich da was falsch?

Noch einen tipp wegen dem kopieren von einer Tabelle zur anderen; schau mal bei Dannenhöfer rein.



Gruß
balu

Re: Übersetzung von VBA nach OOo

von Stephan » Do, 29.05.2014 11:01

Geht eben doch nicht.
Dir ist schon klar das lorbass Dir das exakte Gegenteil gesagt hat? StarBasic ist in OO exakt das was in MS Office VBA ist.

Ebenso enthält der Link von Lorbass die Routine nach der Du fragtest, nämlich die nächste freie Zelle ermitteln:
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig214

Gruß
Stephan

Re: Übersetzung von VBA nach OOo

von lorbass » Mi, 28.05.2014 19:38

Gammaray hat geschrieben:nur der Schritt, in welchem das Makro die nächste freie Zelle in Spalte "A" findet und dort hinein springt. […] Mir wäre auch schon geholfen, wenn man mir einfach sagt: Calc, bzw. StarBasic kann das nicht
Das kann du mit StarBasic realisieren, oder auch mit Python, wenn dir das lieber ist, und vermutlich auch mit Java

Tipp am Rande: http://www.dannenhoefer.de/faqstarbasic ... -Calc.html

Gruß
lorbass

Re: Übersetzung von VBA nach OOo

von Karolus » Fr, 16.05.2014 18:44

Hallo

Ich erkenne durchaus daß das Ding vmtl. die erste freie Zelle in Spalte A findet und selektiert - nur dafür brauchts kein Makro - das geht auch direkt mit einer Calcfunktion namens =HYPERLINK("#A" &ANZAHL2(A1:A100000))

Ich fragte nach der eigentlichen Aufgabe nicht nach dem offensichtlichem.

Karolus

Re: Übersetzung von VBA nach OOo

von Karolus » Fr, 16.05.2014 17:01

Hallo

Wir sind hier kein Übersetzungbüro für lau!
Für was brauchst du das - bzw. was ist die eigentliche Aufgabe

Karolus

Nach oben