Проверьте, существует ли листок в Excel и записывается результат как Boolean

Я изучаю excel для подключения vb.net с этого сайта: http://www.siddharthrout.com/2012/09/09/checking-if-a-sheet-exists/

Я пытаюсь проверить, существует ли лист и записывать результат в boolean .

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, чтобы увидеть, соответствует ли он строке, чтобы проверить, что такое «Лист1». Переменная sheet_found, очевидно, «True».

Но когда он переходит к следующему листу, Лист 2 и Лист3, результат превращается в false, и я не могу проверить, действительно ли лист существует в книге.

под sheet_found = True должно быть sheet_found = True Exit For строки перед выражением Else , поскольку varocarbas предлагает

Спасибо varocarbas и patrick за ответы. Вот код, который сработал

  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 

Зачем беспокоиться об этом другом? Сделайте его ложным по умолчанию и измените его на true, если найдете свой лист.

  • Присоедините элемент .net к листу без VSTO (но Excel-DNA)
  • Есть ли способ изменить заголовки заголовков Excel на всех листах, используя макрос vba для Excel?
  • Добавить изображение быстрее в excel с помощью библиотеки Interop
  • Самый быстрый способ получить диапазон строк Excel
  • Excel ExportAsFixedFormat (PDF) добавление лишних пустых листов в экспортированный PDF-файл
  • Автоматизация Excel: экспорт PDF вызывает всплывающее окно «Настройка принтера»
  • Убить процесс, если Quit () не работает
  • Почему настройка OLEDBConnection.Connection выбрасывает исключение (HRESULT: 0x800A03EC)?
  • F # Excel UsedRange не имеет свойств или методов
  • C # Interop.Excel '# N / A' Значение ячейки, преобразованное в -2146826246
  • Исправление System.OutOfMemoryException в цикле foreach над строками Worsheet
  • Давайте будем гением компьютера.