我正在創建一個Web應用程序來替換當前的Excel宏應用程序。 Excel宏中有幾個表單和模塊。當我使用xlApp.Run方法在C#中調用宏函數時,該函數正在調用,但在函數調用其他子函數並使用全局公共變量時拋出錯誤。從C#拋出調用Excel宏編譯錯誤:子或函數未定義
錯誤: 1.編譯錯誤:Sub或未定義功能 - 在 「設置SVD = m_queries(GetSheetRootName(工作表Sheet))」 2.運行時錯誤424:所需的對象 - 在 「CompareWorksheetsToCombined」
代碼:
Public Function CompareExcels(filePath1 As String, filePath2 As String)
Call MsgBox("Done comparing sheets1.", vbInformation, "Compare Complete")
On Error GoTo CompErr
Call MsgBox("Done comparing sheets2.", vbInformation, "Compare Complete")
Dim compBook As Workbook
Dim book1 As Workbook, book2 As Workbook
Dim sheet, Sheet1 As Worksheet, Sheet2 As Worksheet
Dim svd As ScriptViewDescription, obj
Dim l As Long
Dim sheetName As String
Dim a As Integer
'// Check to make sure we have valid options selected for compare
If ValidateOptions = False Then Exit Function
cmdCompare.Enabled = True
'// Create the comparison output workbook
Set compBook = OpenCompareOutput()
'// Get the workbooks we're comparing
Set book1 = Workbooks(filePath1)
Set book2 = Workbooks(filePath2)
'// Verify if the Summary Sheet Exists and compare the libraries.
'//If (WorksheetExists("[" & filePath1 & "]Summary")) And (WorksheetExists("[" & filePath2 & "]Summary")) Then
Set Sheet1 = book1.Sheets("Summary")
Set Sheet2 = book2.Sheets("Summary")
'//If Sheet1.Cells(2, 3) = Sheet2.Cells(2, 3) Then
'// a = MsgBox("Attention: You are comparing the data from Same Environment", vbCritical, "Critical Warning")
'//End If
'//Else
'//a = MsgBox("Summary Tab does not exist in either Workbook A or B and the Libraries are not compared", vbCritical, "Critical Warning")
'//End If
'// Look for selected sheets and then compare them
For l = 0 To lstSheets.ListCount - 1
If lstSheets.selected(l) = True Then
'// reset vars to make sure we don't accidentally re-use from last loop
Set Sheet1 = Nothing
Set Sheet2 = Nothing
Set svd = Nothing
'// Attempt to load up the vars with the new stuff
sheetName = lstSheets.list(l)
Set Sheet1 = book1.Sheets(sheetName)
Set Sheet2 = book2.Sheets(sheetName)
Set svd = m_queries(GetSheetRootName(Sheet1))
'// Check vars and if we're good then compare
If Not (Sheet1 Is Nothing) _
And Not (Sheet2 Is Nothing) _
And Not (svd Is Nothing) Then
Call CompareWorksheetsToCombined(Sheet1, Sheet2, compBook, svd, txtPrefixA.Text, txtPrefixB.Text)
End If
End If
Next l
cmdCompare.Enabled = True
Call MsgBox("Done comparing sheets.", vbInformation, "Compare Complete")
Exit Function
CompErr:
Call MsgBox("Error while attempting to process compares." & vbCrLf & vbCrLf & "Error " & Err.Number & ": " & Err.Description, vbCritical, "Error During Compare")
cmdCompare.Enabled = True
End Function
請幫幫忙。
沒有你的代碼我們該怎麼幫忙?請閱讀[如何問](http://stackoverflow.com/help/how-to-ask) –
請檢查現在。謝謝 –
如果你在服務器上自動執行excel,這不是一個好的方向:它的設計並不是這樣使用的。 –