VBA-sub의 타사 Excel- 함수에서 함수를 호출하려고합니다.Excel에서 함수를 호출 할 때 워크 북을 찾을 수 없습니다.
Public Function loadFromDatabase(ByVal XLname As String, ByVal sMark As String)
Dim xlWB As Workbook
: 여기 전화가 거대하고 unfortunaly 나는 전체를 게시 할 수는 없지만 해요 엑셀 workbook.The 기능에서 지정된 셀에 데이터베이스에서 함수 데이터를로드는 처음 두 줄입니다
여기'
' Get the excel book and check if it is run in compatibility mode
'
Set xlWB = getXLBook(XLname)
If xlWB Is Nothing Then
loadFromDatabase = "Workbook '" + XLname + "' not found!"
Exit Function
End If
bExcel8Limits = True
If isExcel2007orLater Then
bExcel8Limits = bCheckCompMode(xlWB)
End If
나는이 메시지를 얻을 : 그럼 다음 테스트를 실행하기 전에 변수의 무리를 선언합니다!. "통합 문서"을 (를) 찾을 수 없습니다 "를 http://imgur.com/HQFAzoC getXLBook 기능은 다음과 같습니다 :
'
' Routine to get a specified Workbook
'
Function getXLBook(sName As String) As Workbook
Dim xlWB As Workbook
On Error Resume Next
Set xlWB = Nothing
Set xlWB = Application.Workbooks(sName)
On Error GoTo 0
Set getXLBook = xlWB
End Function
여기에 힌트가이 같은 워크 시트에 Private Sub
곳에서 함수를 호출 할 수있어 것을 할 수있다 ...
Private Sub loadFromDB()
Dim res As Variant
res = Application.Run("loadFromDatabase", Me.Parent.Name, "")
If res <> "OK" Then
MsgBox res
End If
End Sub
...하지만이 같은 같은 통합 문서의 모듈
Sub loadFromDB_test()
Dim res As Variant
res = Application.Run("loadFromDatabase", XLname, sMark)
If res <> "OK" Then
MsgBox res
End If
End Sub
의견이 있으십니까?
편집 : 명확히하기 위해 loadFromDB_test를 실행하면 "통합 문서를 찾을 수 없습니다"라는 메시지가 나타납니다.
편집 2 : 명백한 핫픽스 (내가 생각할 didnt는 것을) 바로 모듈의 Sub
에서 워크 시트의 Private Sub
를 호출하는 것입니다.
Sub load_test_new()
Application.Run "Sheet1.loadFromDB"
End Sub
학습의 관점에서 이것은 비효율적 인 코딩이므로 분명히 좋은 해결책이 아닙니다.
'Set xlWB = Application.Workbooks.Open (sName)'을 시도해보십시오. 통합 문서가 이미 열려 있기 때문에이 오류가 발생합니다. 그래도 오류가 발생하면'sName'의 값이 올바른지 확인하십시오. –
불행히도 그건 효과가 없습니다. 'sName'의 값이 유효한지 어떻게 확인 하시겠습니까? – tfunk
마지막 코드 블록에서'XLname' (또는'sMark')의 값은 무엇입니까? - 게시 한 오류 메시지를 기반으로 어떤 값도 전달하지 않습니다. 당신은 어딘가에 그 변수들을 글로벌 변수로 데칼 해 놓았습니까? –