ich benutze in der Firma Libre Office und verwende dort ein Star Basic Macro welches mir viel Klickerei erspart. Jetzt wechseln wir zu Excel und es geht mir darum die Routine in VBA auszuführen. Folgendes passiert:
Eine offene Datenauskopplung wird geprüft wo die letzte gefüllte Zelle bis Spalte J ist. Dieser Bereich wird kopiert und danach wird die Datei geschlossen. In der parallel geöffneten Zieldatei wird der Zielbereich gelöscht und die Daten werden eingesetzt. Das Starbasic Macro sieht folgendermaßen aus.
Sub Vorlage_Baugruppen
Dim osheet as Object, oZelle as Object, sheets as Object
Dim oInhalt As string
'Anwenden auf aktuelles Dokument
odoc=thiscomponent
'Nimm aktuellen Tabellennamen
Tabellenname=odoc.currentcontroller.activesheet.name
oSheet = oDoc.Sheets.GetByName(Tabellenname)
'Zähle Zeilen und kopiere in Zwischenablage
x = oSheet.Columns(1).queryEmptyCells()
z = x(x.Count-1).RangeAddress.StartRow
'Nimm ermittelte Zeilen und markiere die Inhalte
oRange = oSheet.getCellRangeByName("A1:J"+Z)
oDoc.CurrentController.Select(oRange)
oRangeAddress = oDoc.CurrentController.getTransferable
'Zieldatei siehe Angabe im Target
odoc.close(true)
TargetFrame = "TMM_Vorlage.ods - LibreOffice Calc"
Frames = StarDesktop.GetFrames()
fTally = Frames.Count
For j = 0 To fTally - 1
Frame = Frames(j)
'Fensterwahl
If Frame.Title = TargetFrame Then
If Frame.Controller.Model.SupportsService("com.sun.star.sheet.SpreadsheetDocument") Then
Frame.Activate
Frame.ContainerWindow.Visible = True
Frame.ContainerWindow.ToFront()
Exit For
Else
End If
End IF
fTally=fTally-1
Next j
' wenn Datei nicht offen ist, soll jetzt geöffnet werden. Inhalte werden eingetragen.
if fTally = 0 then
oDesktop = createUnoService("com.sun.star.frame.Desktop")
URL = ConvertToURL ("Z:\TMM_Vorlage.ods")
Dim b(0) As New com.sun.star.beans.PropertyValue
b(0).name="MacroExecutionMode"
b(0).value =com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN
myDoc = oDesktop.loadComponentFromURL(URL,"_blank",0,b())
endif
odoc=thiscomponent
oSheet1 = ThisComponent.sheets.getByName("Baugruppen")
x1 = oSheet1.Columns(1).queryEmptyCells()
z1 = x1(x1.Count-1).RangeAddress.StartRow
Z1=Z1+1
oRange = oSheet1.getCellRangeByName("A1:J"+Z1)
oRange.clearContents(15)
oRange = oSheet1.getCellRangeByName("A1")
oDoc.CurrentController.Select(oRange)
oDoc.CurrentController.insertTransferable(oRangeAddress)
End Sub
Mir geht es jetzt darum zu erfahren ob es Converter gibt die sowas jetzt umschreiben oder ob man sich das aus Codeschnipseln zusammenbauen kann ?
Gruß Marcus