Ich bin mir nicht sicher, aber ungefähr so müsste es aussehen:
Code: Alles auswählen
Procedure.l XLSFunc_OpenExcelFileReadOnly(Datei.s); Open ExcelFile
Protected ExcelObject.COMateObject,Workbook
ExcelObject = COMate_CreateObject("Excel.Application")
If ExcelObject
ExcelObject\SetProperty("Workbooks\ReadOnly = #True")
ExcelObject\Invoke("Workbooks\Open('"+Datei+"')")
Else
MessageRequester("Achtung","Bitte geben Sie eine vorhandene xls-Datei mit Pfad an!")
EndIf
ProcedureReturn ExcelObject ;.COMateObject
EndProcedure
Morgen schaue ich mir das mal genauer an.
[Edit] Ich habe das nochmal geändert, weil das heute nicht funktionierte.
Wenn ich das wie folgt mache:
Code: Alles auswählen
Procedure.l XLSFunc_OpenExcelFileReadOnly(Datei.s); Open ExcelFile
Protected ExcelObject.COMateObject,Workbooks
ExcelObject = COMate_CreateObject("Excel.Application")
If ExcelObject
ExcelObject\Invoke("Workbooks\Open('"+Datei+"')")
ExcelObject\SetProperty("ActiveWorkbook\ReadOnly = #True")
Else
MessageRequester("Achtung","Bitte geben Sie eine vorhandene xls-Datei mit Pfad an!")
EndIf
ProcedureReturn ExcelObject ;.COMateObject
EndProcedure
bekomme ich beim Ausführen folgende Antwort zurück:
Debugger hat geschrieben:Die ReadOnly-Eigenschaft des Workbook-Objektes kann nicht festgelegt werden.
Unter VBA wird dieses ReadOnly := True beim Open-Befehl gleich mit dem Komma hinten angehängt.
Irgendwie kriege ich das mit ComateCom nicht hin, da man alles splitten muss und nicht wie in VBA
alles in einem Befehlssatz ausführen kann. Schade drum das diese Einschränkung existiert. Sonst könnte man
vieles einzuein aus VBA - Beispielen, ohne Experimentieren zu müssen, übernehmen
.
Vielleicht hat Kiffi hierzu noch eine funktionierende Lösung, die ich dann gerne in dieser Excelfunktionslibrary
aufnehmen würde
.
Gruß,
Falko