VBA Projekt von Excel auf LibreOffice umschreiben

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

Moderator: Moderatoren

Andreas77
Beiträge: 6
Registriert: Mi, 24.11.2021 10:17

VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Andreas77 »

Hallo Forenmitglieder,

Ich habe ein VBA Projekt, das ich gern in LibreCalc nutzen möchte. Der VBA Code läuft aber nicht perfekt(er kopiert nicht alles was er kopieren soll). Da ich "LEIHE" bin, würde ich mich über Hilfe bei diesem Problem freuen. Im LibreOffice Forum hat das zumindest nicht funktioniert. Da versucht man nicht konstruktiv einen zu Helfen und weiterzubringen, sondern hofft, das der Hilfesuchende das Problem von alleine erkennt. Daher hoffe ich, dass das hier anders ist.

Wenn ich irgendwelche Info´s noch posten soll, die hilfreich sind bitte einfach schreiben.

hier mal der Code

Code: Alles auswählen

Code: Alles auswählen

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub ausgedruckteVorschlägekopieren()
    
   With Worksheets("Vorschlag")
        If .Range("C4") <> "" Then
            .Range("C4:E4").Copy Sheets("ausgedruckte Vorschläge").Range("B1")
            Sheets("ausgedruckte Vorschläge").Range("B1:K1").Insert Shift:=xlDown
        End If
        If .Range("C5") <> "" Then
            .Range("C5:E5").Copy Sheets("ausgedruckte Vorschläge").Range("E2")
        End If
        If .Range("C6") <> "" Then
            .Range("C6:E6").Copy Sheets("ausgedruckte Vorschläge").Range("H2")
        End If
    End With
    
            Sheets("Vorschlag").Range("C8").Copy
            Sheets("ausgedruckte Vorschläge").Range("A1").PasteSpecial xlPasteValues
            Sheets("ausgedruckte Vorschläge").Range("A1").Insert Shift:=xlDown
            
            Sheets("Vorschlag").Range("C13").Copy
            Sheets("ausgedruckte Vorschläge").Range("K2").PasteSpecial xlPasteValues
            
    
            Sheets("Vorschlag").Select
            Range("C4,C5,C6").Select
            Selection.ClearContents
    
            Range("C4").Select
   
        
            Sheets("Kalkulation").Select
            Range("C5:C21,C25:C41,A25:A41,B25:B41").Select
            Selection.ClearContents
    
            Range("C5").Select
    
   

End Sub
Dank schon mal an alle, die helfen wollen und können.

Andreas
Mondblatt24
*******
Beiträge: 1129
Registriert: So, 14.05.2017 16:11

Re: VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Mondblatt24 »

Andreas77 hat geschrieben: Mi, 24.11.2021 12:13 VBA Projekt von Excel auf LibreOffice umschreiben
Hier übrigens auch!
Win 11 (x64) ▪ 24.2.1.2 (x64) ▪ AOO Portable 4.1.15
Wurde die Frage zutreffend beantwortet bitte den Betreff der Eingangsfrage mit [GELÖST] ergänzen. Beschreibung
Andreas77
Beiträge: 6
Registriert: Mi, 24.11.2021 10:17

Re: VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Andreas77 »

Ja habe ich ja im Text erwähnt. Leider ohne sinnvolle Unterstützung. Hoffe, dass das hier anders ist.
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Karolus »

Der VBA Code läuft aber nicht perfekt(er kopiert nicht alles was er kopieren soll).
super…eine winzige Information deinerseits, wenn du jetzt noch sagst wo es klemmt, und vielleicht noch die Fehlermeldung dazu ??
Und wie bereits in denem Crosspost angemerkt, wo bleibt die Testdatei? Die will sich hier ebenfalls keiner zusammenreimen, um DEIN Problem zu lösen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Karolus »

Andreas77 hat geschrieben: Mi, 24.11.2021 12:34 Ja habe ich ja im Text erwähnt. Leider ohne sinnvolle Unterstützung. Hoffe, dass das hier anders ist.
Ach so der Tipp option VBASupport 1 hat dir also nicht geholfen!?
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Andreas77
Beiträge: 6
Registriert: Mi, 24.11.2021 10:17

Re: VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Andreas77 »

Karolus hat geschrieben: Mi, 24.11.2021 12:38
Der VBA Code läuft aber nicht perfekt(er kopiert nicht alles was er kopieren soll).
super…eine winzige Information deinerseits, wenn du jetzt noch sagst wo es klemmt, und vielleicht noch die Fehlermeldung dazu ??
Und wie bereits in denem Crosspost angemerkt, wo bleibt die Testdatei? Die will sich hier ebenfalls keiner zusammenreimen, um DEIN Problem zu lösen.
Es kopiert nicht mehr ab den Bereich. Fehlermeldung kommt keine. Es kopiert einfach nur ein leeres Feld.

Code: Alles auswählen

Sheets("Vorschlag").Range("C8").Copy
            Sheets("ausgedruckte Vorschläge").Range("A1").PasteSpecial xlPasteValues
            Sheets("ausgedruckte Vorschläge").Range("A1").Insert Shift:=xlDown
            
            Sheets("Vorschlag").Range("C13").Copy
            Sheets("ausgedruckte Vorschläge").Range("K2").PasteSpecial xlPasteValues
            
    
            Sheets("Vorschlag").Select
            Range("C4,C5,C6").Select
            Selection.ClearContents
    
            Range("C4").Select
   
        
            Sheets("Kalkulation").Select
            Range("C5:C21,C25:C41,A25:A41,B25:B41").Select
            Selection.ClearContents
    
            Range("C5").Select
    
   

End Sub
Zuletzt geändert von Andreas77 am Mi, 24.11.2021 13:59, insgesamt 2-mal geändert.
Andreas77
Beiträge: 6
Registriert: Mi, 24.11.2021 10:17

Re: VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Andreas77 »

Karolus hat geschrieben: Mi, 24.11.2021 12:40
Andreas77 hat geschrieben: Mi, 24.11.2021 12:34 Ja habe ich ja im Text erwähnt. Leider ohne sinnvolle Unterstützung. Hoffe, dass das hier anders ist.
Ach so der Tipp option VBASupport 1 hat dir also nicht geholfen!?
nein leider nicht
Andreas77
Beiträge: 6
Registriert: Mi, 24.11.2021 10:17

Re: VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Andreas77 »

Hier mal die Originaldatei in Excelformat. Da funktioniert alles
Vorschlag - Kopie.xls
(125.5 KiB) 107-mal heruntergeladen
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Karolus »

Hallo

dieser VBA-modus-schrott macht wirklich jegliche Verwendung von normalen Starbasic ziemlich schwierig, ich musste im Prinzip ein neues VBA -UNBEHELLIGTES dokument aufsetzen:
zuerst die python-variante:

Code: Alles auswählen

def backup(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    sheets = doc.Sheets
    kalk = sheets.Kalkulation
    vorschlag = sheets.Vorschlag
    ausgedruckt = sheets["ausgedruckte Vorschläge"]
    data = list(zip(*vorschlag["C4:C13"].DataArray))
    data = data[0]
    name, street , city, _ ,datum, *_ , rezept = data    
    out = [[datum, name, street, city, rezept]]
    ausgedruckt["A1:E1"].DataArray = out
    ausgedruckt.Rows.insertByIndex(0,1)
    ausgedruckt.Columns.OptimalWidth = True
    vorschlag["C4:C6"].clearContents(15)
    vorschlag["C13"].clearContents(15)
    for addr in ("C5:C21", "A25:C41"):
        kalk[addr].clearContents(15)
        
das funktioniert ebenso wie analog dazu:

Code: Alles auswählen

sub backup
	doc = ThisComponent
	sheets = doc.getSheets()
	kalkulation = sheets.Kalkulation
	vorschlag = sheets.getByName("Vorschlag")
	ausgedruckt = sheets.getByName("ausgedruckte Vorschläge")
	with vorschlag
		kname = .getCellRangeByName("C4").String
		strasse = .getCellRangeByName("C5").String
		ort = .getCellRangeByName("C6").String
		datum = .getCellRangeByName("C8").Value
		rezept = .getCellRangeByName("C13").String
		.getCellRangeByName("C4:C6").clearContents(15)
		.getCellRangeByName("C13").clearContents(15)
	end with
	if kname <>"" then
		out = array(array(datum, kname, strasse, ort, rezept))
		with ausgedruckt
			.getCellRangeByName("A1:E1").setDataArray(out)
			.Rows.insertByIndex(0,1)
			.Columns.OptimalWidth = True
		end with
	end if
	with kalkulation
		.getCellRangeByName("A25:C41").clearContents(15)
		.getCellRangeByName("C5:C21").clearContents(15)
	end with
end sub
vorschlag_neu.ods
(21.6 KiB) 99-mal heruntergeladen
beide Versionen sind im Dokument, momentan wird Python-variante vom Druck-button ausgeführt.

um den "druck-auftrag" hab ich mich mangels Drucker nicht gekümmert!!
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Andreas77
Beiträge: 6
Registriert: Mi, 24.11.2021 10:17

Re: VBA Projekt von Excel auf LibreOffice umschreiben

Beitrag von Andreas77 »

Hallo

vielen Dank für die geänderte Datei. Das funktioniert wirklich perfekt. Das mit dem Drucken bekomme ich hoffentlich selber hin. Habe mir dazu schon einiges durchgelesen.

Also vielen Dank nochmal

Gruß
Andreas
Antworten