Goeiedag,
ik ken niet veel van Libreoffice Calc. Toch wil ik er een projectje mee uitvoeren en vroeg BING een macro te maken om gegevens van één bestand te synchroniseren met de gegevens van een ander bestand. Hieronder de verkregen macro:
Sub SynchronizeData()
Dim oDocSource As Object
Dim oDocTarget As Object
Dim oSheetSource As Object
Dim oSheetTarget As Object
Dim oCellSource As Object
Dim oCellTarget As Object
Dim i As Integer
Dim j As Integer
Dim lastRow As Integer
Dim etap As Integer
Dim sourceRange As Object
Dim targetRange As Object
Dim sourceValue As String
Dim targetColumn As Integer
' Vraag naar de etappe
etap = InputBox("Welke etappe moet overgedragen worden?", "Etappe Selectie")
' Open de bron- en doelbestanden als ze nog niet geopend zijn
On Error GoTo ErrorHandler
oDocTarget = StarDesktop.loadComponentFromURL("file:///C:\Users\lucca\Documents\Wielrennen/Basis.ods", "_blank", 0, Array())
On Error GoTo 0
' Verwijs naar de werkbladen
oSheetSource = oDocSource.Sheets.getByName("STAGE")
oSheetTarget = oDocTarget.Sheets.getByName("STAGEPTN")
' Bepaal de laatste rij in de bron
lastRow = 2
Do While oSheetSource.getCellByPosition(0, lastRow).String <> ""
lastRow = lastRow + 1
Loop
' Loop door de rijen van de bron
For i = 2 To lastRow - 1
sourceValue = oSheetSource.getCellByPosition(0, i).String
' Zoek naar de overeenkomstige waarde in de doelkolom
For j = 252 To 500
If oSheetTarget.getCellByPosition(2, j).String = sourceValue Then
' Bepaal de doelkolom op basis van de etappe
targetColumn = 4 + etap
' Kopieer de waarde van kolom B in de bron naar de doelkolom
oSheetTarget.getCellByPosition(targetColumn, j).Value = oSheetSource.getCellByPosition(1, i).Value
Exit For
End If
Next j
Next i
' Sla de wijzigingen op en sluit de bestanden
oDocTarget.store()
oDocSource.close(True)
oDocTarget.close(True)
MsgBox "Synchronisatie voltooid!"
Exit Sub
ErrorHandler:
MsgBox “Het document is al geopend of de bestandsnaam/extensie is onjuist.”, 16, “Fout”
End Sub
Wanneer ik deze wil uitvoeren krijg ik foutmelding BASIC-runtime-fout. Objectvariabele niet ingesteld.
Dit gebeurt ter hoogte van regel: oSheetSource = oDocSource.Sheets.getByName(“STAGE”). Wil iemand mij helpen om die macro aan te passen ? Ik gebruik geen betalend abonnement bij BING dus zit ik al gauw aan mijn limiet van vraagstelling. Alvast van harte dank, Lucca