2014-01-08 24 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

这是对其他答案的评论,而不是一个独立的答案。我建议编辑它并用你建议的修改显示代码。 –