ich hab Euch schon längere Zeit nicht mehr mit Problemen genervt , doch jetzt ist es mal wieder so weit (leider).
Also der Betreff soll in langform folgendes sagen.
Ich will die Calc Funktion WENN im Makro mittels oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" ) nachbauen. Bei einer einfachen Vergleichoperation finktioniert das auch. Aber ich kann damit keine File-Verknüpfung so wie im Tabellenblatt vornehmen. Und ich versteh nicht warum mir das nicht gelingt.
Im Tabellenblatt Tabelle1 Zelle A1 würde das ja beispielsweise so aussehen.
Code: Alles auswählen
=WENN('file:///C:/Temp/Datei1.ods'#$Tabelle1.A1=11;"OK";"FEHLER")
Code: Alles auswählen
Private filepicker
Sub IF_File
Dim argF(2) As Variant
dim oFunctionAccess as object
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
fName = FileOpenDialog ("Datei auswählen")
fAsti = "='" & fName & "'#$Tabelle1.A1"
argF(0) = fAsti = 11
argF(1) = "OK"
argF(2) = "FEHLER"
print oFunctionAccess.callFunction( "IF", argF() )
end sub
'
'--------------------------------------------------------------------------------
'
function FileOpenDialog(title as String) as String
filepicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
filepicker.Title = title
filepicker.execute()
files = filepicker.getFiles()
FileOpenDialog = files(0)
End function
Wenn ich im Code
Code: Alles auswählen
args(0) = fAsti = 11
Code: Alles auswählen
args(0) = 3*8 = 24
Aber die File-Verknüpfung gelingt mir nicht, obwohl durch einen einfachen Print Befehl mir angezeigt wird das der Pfad samt Datei genau so aussieht wie im Tabellenblatt geschrieben, siehe Code weiter oben.
Es ist also irgendwie ein Problem mit der Variablen fAsti. Besser gesagt bin ich mir momentan überhaupt gar nicht sicher das das Verfahren wie ich es dort anwende, korrekt ist. Ich vermute mal das ich da noch irgendwas vergessen habe damit das funktioniert. Nur was, das weiß ich nicht.
Bevor ich es vergesse; Nein. Ich will keine alternative mit loadComponentFromURL, da ich die Datei nicht laden will, sondern einfach die WENN-Formel im Makro nachbauen.
Fragen an Euch
- Kann das überhaupt generell so funktionieren, oder geht das überhaupt nicht auf diese Art und Weise?
- Wie müsste ich das Makro umbauen damit es funktioniert?
- Wer kann mir behilflich sein?
Gruß
balu