一部の Excel レポートを自動化しようとしています。現在、Essbase サーバーからいくつかのデータを取得する必要があります。これを実現するために、Excel シートでデータを取得して設定するマクロを作成しました。私の VBA コードは次のとおりです。
Option Explicit
Declare Function EssVRetrieve Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant, ByVal range As Variant, ByVal lockflag As Variant) As Long
Declare Function EssVConnect Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant, ByVal userName As Variant, ByVal password As Variant, ByVal server As Variant, ByVal application As Variant, ByVal database As Variant) As Long
Declare Function EssVDisconnect Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant) As Long
Sub Essbase_Update_Pulls()
Dim rangeString As String
rangeString = "B3:AC5033"
MsgBox ("Starting macro")
Dim wbSrc As Workbook
Dim m As Variant
Dim mySheetname As Variant, myUserName As Variant, myPassword As Variant, myServer, myApp As Variant, myDB As Variant
Dim lockflag As Integer
Dim myrng As range
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim strMsgTxt As String
Dim blnRetVal As Boolean
Set wbSrc = ActiveWorkbook
Set myrng = range(rangeString)
lockflag = 1
MsgBox ("Data set")
mySheetname = "Sheet"
myServer = "Server"
myApp = "App"
myDB = "DB"
myUserName = "User"
myPassword = "Pass"
MsgBox ("Trying connection")
x = EssVConnect(mySheetname, myUserName, myPassword, myServer, myApp, myDB)
MsgBox (CStr(x))
If x < 0 Then
blnRetVal = False
strMsgTxt = "Essbase Login - Local Failure"
MsgBox (strMsgTxt)
ElseIf x > 0 Then
blnRetVal = False
strMsgTxt = "Essbase Login - Server Failure"
MsgBox (strMsgTxt)
Else
blnRetVal = True
strMsgTxt = "Success"
MsgBox ("Connection Succeeded")
y = EssVRetrieve(mySheetname, myrng, lockflag)
If y = 0 Then
MsgBox ("Retrieve successful.")
z = EssVDisconnect(mySheetname)
If z = 0 Then
MsgBox ("Disconnect Succeed.")
Else
MsgBox ("Disconnect failed.")
End If
Else
MsgBox ("Retrieve failed.")
End If
End If
End Sub
変数 x はステータス コードを返すことになっています (0 は成功、それ以外は失敗)。Excel 内でこのマクロを実行すると、完全に実行されますが、C# から呼び出すとxlApp.Run("Essbase_Update_Pulls");
、-3 のステータス コードが返されます。いくつかの調査を行ったところ、Excel アプリケーションがコードで作成されるたびに、アドインが読み込まれないため、
https://community.oracle.com/thread/2480398を手動で読み込む必要があることがわかりました。を繰り返したxlApp.AddIns
ところ、「essexcln.xll」が正しくインストールされていることがわかったので、今何をすべきかわかりません。また、実行時にアドインを追加できることもわかりましたが、これは例外を引き起こすだけです。ソースは次のとおりです
。 +call+to+Essbase