VBScriptでOpenOffice.orgのodsファイルへアクセスするための簡単なサンプルプログラムです。ファイルへのパスは引数から得ています。loadComponentFromURLを使用するにはファイル名にConvertToUrlの処理が必要です。
Option Explicit
Dim oSM
Dim oDesktop
Dim oIntroSpection
Dim oDispatchHelper
Dim oCalcDocDim oSheet
Dim oCellDim OpenPar(1)
Dim myFileNameSet
oSM = Wscript.CreateObject("com.sun.star.ServiceManager")
Set oDesktop = oSM.createInstance("com.sun.star.frame.Desktop")
myFileName = ConvertToUrl(WScript.Arguments(0))
Set OpenPar(0) = MakePropertyValue("ReadOnly", False)
Set OpenPar(1) = MakePropertyValue("Hidden", False)
'Set OpenPar(1) = MakePropertyValue("Hidden", True)
Set oCalcDoc = oDesktop.loadComponentFromURL(myFileName, "_blanks", 0, OpenPar)
Set oSheet = oCalcDoc.Sheets.getByName("Sheet1")
Set oCell = oSheet.getCellByPosition(1,2)
Wscript.echo oCell.Value
Call oCalcDoc.close(true)
Function ConvertToURL(sFileName)
Dim fso
Dim sTmpFile
Set fso = CreateObject("Scripting.FileSystemObject")
If Left(sFileName, 7) = "file://"
Then
ConvertToURL = sFileName
Exit Function
End If
ConvertToURL = "file:///"
sTmpFile = fso.GetAbsolutePathName(sFileName) 'replace any "\" by "/"
sTmpFile = Replace(sTmpFile,"\","/") ' replace any % by %25
sTmpFile = Replace(sTmpFile,"%","%25") 'replace any " " by "%20"
sTmpFile = Replace(sTmpFile," ","%20")
ConvertToURL = ConvertToURL & sTmpFile
End Function
MakePropertyValue は事前にoSMに"com.sun.star.ServiceManager"がセットされていないといけません。
Function MakePropertyValue(byval cName, byval uValue)
Dim oPropertyValue
Set oPropertyValue = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") oPropertyValue.Name = cName
oPropertyValue.Value = uValue
Set MakePropertyValue = oPropertyValue
End Function
なんか草稿があったから適当にアップしとくね
間違いあったから、直してみた