Kontynuując zagadnienie prezentowane przed kilkoma dniami chciałbym zaprezentować podobne rozwiązanie do tam opisanego lecz tym razem oparte o funkcję użytkownika UDF.
Cel- funkcja ma zwracać wartości True/False w odpowiedzi na pytanie czy we wskazanym skoroszycie (tu podamy pełną ścieżkę do pliku) istnieje określony arkusz (tu podamy jego nazwę).
Poniżej kod funkcji wraz z dodatkowymi komentarzami. Funkcja tej postaci działać będzie zarówno w środowisku VBA jak również w dowolnej komórce Excela.
01 | Function IsSheetInWorkbook(shName As String , wbFullName As String ) As Boolean |
04 | Dim adoConn As ADODB.Connection |
05 | Dim adoxCat As ADOX.Catalog |
06 | Dim adoxTbl As ADOX.Table |
08 | Dim strConnString As String |
09 | Dim strSheet As String |
12 | strConnString = "Provider=Microsoft.ACE.OLEDB.12.0; " & _ |
13 | "Data Source=" & wbFullName & ";" & _ |
14 | "Extended Properties=Excel 12.0 Xml;" |
16 | Set adoConn = New ADODB.Connection |
17 | adoConn.Open strConnString |
20 | Set adoxCat = New ADOX.Catalog |
21 | Set adoxCat.ActiveConnection = adoConn |
29 | Set adoxTbl = adoxCat.Tables(shName & "$" ) |
31 | If Err.Number = 0 Then |
33 | IsSheetInWorkbook = True |
36 | IsSheetInWorkbook = False |
Brak komentarzy:
Prześlij komentarz