Kiểm tra tên sheet có tồn tại hay không? (phiên bản mới : Workbook đóng)

Liên hệ QC

LearnExcel

Thành viên thường trực
Tham gia
7/8/06
Bài viết
292
Được thích
519
+-+-+-++-+-+-+Chào các anh chị, đã có khá nhiều cách để kiểm tra một sheet có tồn tại hay không
PHP:
Public Function WsExit(wsName As String) As Boolean
    On Error Resume Next
    WsExit = CBool(Len(Worksheets(wsName).Name) > 0)
End Function

PHP:
Function WorksheetExists(WorksheetName As String) As Boolean
Dim sht As Object
On Error Resume Next
Set sht = ActiveWorkbook.Sheets(WorksheetName)
WorksheetExists = (Err.Number = 0)
End Function


đây (http://www.giaiphapexcel.com/forum/showthread.php?t=3233) hay đây
nhưng đều dựa trên workbook đang mở.

hay cách khác ở đây
PHP:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\Test.xls")

x = 0

For Each objWorksheet in objWorkbook.Worksheets
    If objWorksheet.Name = "Budget" Then
        x = 1
        Exit For
    End If
Next

objExcel.Quit

If x = 1 Then
    Wscript.Echo "The specified worksheet was found."
Else
    Wscript.Echo "The specified worksheet was not found."
End If

Nghĩa là mở "trộm" ra rồi đóng vào :-=
...

Nhưng có cách nào kiểm tra tên sheet có tồn tại trong Workbook đóng THẬT SỰ +-+-+-+hay không? Mong các anh chị cho ý kiến.
 
Lần chỉnh sửa cuối:
Sau khi cày Google và tham khảo ở đây http://www.xtremevbtalk.com/archive/index.php/t-194598.html

Đây là giải pháp
PHP:
 Function CheckWorkbookIsExist(ByVal FileName As String) As Boolean     'true if Exists
    On Error Resume Next
    CheckWorkbookIsExist = (Len(Dir$(FileName)) > 0)  ' Directly refer!
End Function

Function CheckSheetExist(ByVal Pth As String, ByVal Wb As String, ByVal Sh As String) As Boolean
    CheckSheetExist = False
    On Error GoTo NBG
    If CheckWorkbookIsExist(Pth & Wb) Then
        CheckSheetExist = (Len(Application.ExecuteExcel4Macro("'" & Pth & "[" & Wb & "]" & Sh & "'!R1C1")) > 0)
    Else
        Exit Function
    End If
NBG:
    Err.Clear
    On Error GoTo 0
End Function
 
Upvote 0
Vài dòng thắc mắc

Cho mình hỏi, đã copy code vào nhưng vẫn báo kết quả Fasle trong khi Sheet vẫn tồn tại?
Có ví dụ nào không gửi giúp cho mình nhé !


Sau khi cày Google và tham khảo ở đây http://www.xtremevbtalk.com/archive/index.php/t-194598.html
Đây là giải pháp
PHP:
 Function CheckWorkbookIsExist(ByVal FileName As String) As Boolean     'true if Exists
    On Error Resume Next
    CheckWorkbookIsExist = (Len(Dir$(FileName)) > 0)  ' Directly refer!
End Function

Function CheckSheetExist(ByVal Pth As String, ByVal Wb As String, ByVal Sh As String) As Boolean
    CheckSheetExist = False
    On Error GoTo NBG
    If CheckWorkbookIsExist(Pth & Wb) Then
        CheckSheetExist = (Len(Application.ExecuteExcel4Macro("'" & Pth & "[" & Wb & "]" & Sh & "'!R1C1")) > 0)
    Else
        Exit Function
    End If
NBG:
    Err.Clear
    On Error GoTo 0
End Function
 
Upvote 0
Thông báo tiếp

Dùng cách trên đường link cũng không được, vẫn báo "Fasle"

PHP:
Function CheckSheetExist(Pth As String, Wb As String, Sh As String) As Boolean
    On Error GoTo NBG
    If Application.ExecuteExcel4Macro("'" & Pth & "[" & Wb & "]" & Sh & "'!R1C1") > "" Then
        CheckSheetExist = True
    Else
NBG:    CheckSheetExist = False
        Err.Clear
    End If
    On Error GoTo 0
End Function
Call it like this:
PHP:
Dim check As Boolean
    check = CheckSheetExist("C:\", "MyBook.xls", "Sheet1")
    MsgBox check
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom