2014-01-08 21 views
0

我存在表learninf擅長從這個網站vb.net連接: http://www.siddharthrout.com/2012/09/09/checking-if-a-sheet-exists/檢查在Excel和記錄結果作爲布爾

試圖檢查是否存在板材和記錄結果布爾值

Dim SheetNameToCheck As String = "Sheet1" 
    Dim xs As Excel.Worksheet 
    Dim sheet_found As Boolean 
    '~~> Opens an exisiting Workbook. Change path and filename as applicable 
    xlWorkBook = xlApp.Workbooks.Open("C:\...\myExcel2007file.xlsx") 
    '~~> Display Excel 
    xlApp.Visible = True 
    '~~> Loop through the all the sheets in the workbook to find if name matches 
    For Each xs In xlWorkBook.Sheets 
     If xs.Name = SheetNameToCheck Then 
      sheet_found = True 
     Else 
      sheet_found = False 
     End If 
    Next 



    If sheet_found = True Then 
     MessageBox.Show("The sheet " & SheetNameToCheck & " found.") 
    Else 
     MessageBox.Show("Not found.") 
    End If 

的問題是,無論字符串你

錯誤檢查結果當屬找不到進來的for循環。 首先循環檢查Excel Sheet1以查看它是否符合字符串以檢查哪個是「Sheet1」。變量sheet_found顯然是「真」。

但是當它轉到下一張工作表時,工作表2和工作表3會變成錯誤,並且我無法檢查該工作表是否實際存在於工作簿中。

+0

執行此類比較時,您可能更願意忽略大寫字母並刪除開始/結束空白處以完全確定。例如:'If xs.Name.Trim()。ToLower()= SheetNameToCheck.Trim()。ToLower()Then';但這是我可以從這段代碼中糾正的最大值,這很好。只需確認目標文件中有一張名爲Sheet1的工作表(顯然不是這種情況)。 – varocarbas

+0

PS:這是VB.NET,與vba無關 – varocarbas

+0

謝謝你的回答 有一張名爲「Sheet1」的工作表,我已經逐步調試過它。問題不在於識別工作表是否存在。它是在處理vb.net的代碼。結果首先是真實的,然後是假的和另一個假的(對於表2和3) –

回答

1

sheet_found = True下應該是Else語句之前的Exit For線,如varocarbas建議

0

感謝varocarbas和帕特里克的答案。這裏是工作的代碼

Dim SheetNameToCheck As String = "Sheet22" 
    Dim xs As Excel.Worksheet 
    Dim sheet_found As Boolean 
    '~~> Opens an exisiting Workbook. Change path and filename as applicable 
    xlWorkBook = xlApp.Workbooks.Open("C:\...\myExcel2007file.xlsx") 
    '~~> Display Excel 
    xlApp.Visible = True 
    '~~> Loop through the all the sheets in the workbook to find if name matches 

    For Each xs In xlWorkBook.Sheets 
     If xs.Name = SheetNameToCheck Then 
      sheet_found = True 
      Exit For 
     Else 
      sheet_found = False 
     End If 
    Next 

    If sheet_found = True Then 
     MessageBox.Show("The sheet " & SheetNameToCheck & " found.") 
    Else 
     MessageBox.Show("Not found.") 
    End If 
0

爲什麼還要在第一個地方說別的聲明呢?將其設置爲默認值,並且只有在找到工作表時纔將其更改爲true。

+1

這是對其他答案的評論,而不是一個獨立的答案。我建議編輯它並用你建議的修改顯示代碼。 –