[Gelöst] makro kopiert Werte und klebt Nachbarn

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

Moderator: Moderatoren

Deko
**
Beiträge: 28
Registriert: Fr, 23.11.2018 17:56

[Gelöst] makro kopiert Werte und klebt Nachbarn

Beitrag von Deko »

Grüße

Ich bin neu im Forum und auch neu bei LibreOffice und OpenOffice

ist eine Excel-Datei mit einem VBA-Makro angehängt, das ich in die LibreOffice-Codesprache konvertieren muss

Das Makro kopiert die Werte aus Arbeitsblatt 1 der Spalte "A" und Spalte "B" und fügt die Werte aus Arbeitsblatt 2 in Spalte "J" und Spalte "L" nebeneinander ein, wie sie im Original vorhanden sind

Wenn Sie auf die Schaltfläche in Arbeitsblatt 1 klicken, sehen Sie, wie das Makro ausgeführt wird

Können Sie mir bitte helfen, das Makro in LibreOffice zu konvertieren

Umarmungen
Dateianhänge
Cola Werte.xls
(37 KiB) 105-mal heruntergeladen
Zuletzt geändert von Deko am So, 25.11.2018 00:53, insgesamt 2-mal geändert.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: makro kopiert Werte und klebt Nachbarn

Beitrag von Stephan »

Das konkrete Makro läüft auch ohne Veränderung in OO/LO Calc, wenn man am Anfang die Kompatibilitätsoption (Option VBASupport 1) hinzufügt, also:

Code: Alles auswählen

Option VBASupport 1

Sub Schwanzkopie()
     
    Dim UltimaLinha_Plan1 As Long
    Dim UltimaLinha_Plan2 As Long
        
    Dim RngACopiarA As Range
    Dim RngACopiarB As Range
       
    UltimaLinha_Plan1 = Worksheets("Planilha1").Cells(Rows.Count, 1).End(xlUp).Row
       
    Set RngACopiarA = Worksheets("Planilha1").Range("A2:" & "A" & UltimaLinha_Plan1)
    Set RngACopiarB = Worksheets("Planilha1").Range("B2:" & "B" & UltimaLinha_Plan1)
       
    UltimaLinha_Plan2 = Worksheets("Planilha2").Cells(Rows.Count, 10).End(xlUp).Row + 1
       
    RngACopiarA.Copy
    Worksheets("Planilha2").Range("J" & UltimaLinha_Plan2).PasteSpecial Paste:=xlPasteValues
    
    RngACopiarB.Copy
    Worksheets("Planilha2").Range("L" & UltimaLinha_Plan2).PasteSpecial Paste:=xlPasteValues
    
    Worksheets("Planilha2").Select
    
    Range("A1").Select
    
    Application.CutCopyMode = False
    

End Sub

ansonsten kann man auch beispielsweise folgenden StarBasic-Code verwenden:

Code: Alles auswählen

Sub Kopieren_OO()
	With Thiscomponent.Sheets
		With.getByName("Planilha1")
			oleer = .Columns(0).queryemptycells
			oletzter=oleer(oleer.count-1).rangeaddress.startrow-1
			werte = .getCellRangeByPosition(0,1,0,oletzter).getDataArray
			werte2 = .getCellRangeByPosition(1,1,1,oletzter).getDataArray
		End With
		With .getByName("Planilha2")
			oleer2 = .Columns(9).queryemptycells
			oletzter2=oleer2(oleer2.count-1).rangeaddress.startrow-1
			.getCellRangeByPosition(9,oletzter2+1,9,oletzter2+oletzter).setDataArray(werte)
			.getCellRangeByPosition(11,oletzter2+1,11,oletzter2+oletzter).setDataArray(werte2)
		End With
	End With
End Sub


Gruß
Stephan
Deko
**
Beiträge: 28
Registriert: Fr, 23.11.2018 17:56

Re: makro kopiert Werte und klebt Nachbarn

Beitrag von Deko »

[Gelöst]

sr. Stephan

Beide Makros haben für dieses Thema sehr gut funktioniert

das erste Makro funktionierte mit Kompatibilität (Option VBASupport 1)

Das zweite Makro, das Sie erstellt haben, hat auch sehr gut funktioniert

Vielen Dank, dass Sie meinem Freund geholfen haben.


Beobachtung

in meinen anderen Threads funktionierte nicht perfekt

im Thema> viewtopic.php?f=18&t=70986&sid=42efc0c3 ... 3a302884ec Fehler im Befehl Set Rng = Target.SpecialCells (xlCellTypeVisible)


Vielen Dank für Ihre Aufmerksamkeit, mein Freund.


Umarmungen
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [Gelöst] makro kopiert Werte und klebt Nachbarn

Beitrag von Stephan »

Beobachtung

in meinen anderen Threads funktionierte nicht perfekt
Das weiß ich, weshalb ich dieselbe Lösung (Option VBASupport 1) auch nicht für die anderen zwei Fragen/Makros empfohlen habe.

Der Grund das es nicht funktioniert ist das OO mit manchem VBA-Code nicht klarkommt, weil es nicht 100%ig zu VBA kompatibel ist.


Gruß
Stephan
Antworten