У меня есть это приложение, которое читает список номеров файлов из листа Excel пользователя в столбце А. Приложение читает эти номера файлов и находит их в каталоге, а также использует извлечение и объединение PDF-файлов для разделения этих PDF-файлов по именам заголовков иобъединяет их соответственно.
Код работает нормально.Но я подумал: а что, если у пользователя есть список из 20 номеров файлов в его листе Excel, а код находит только 18 из 20 этих файлов ... как пользователь узнает в конце, над какими из них не работали?
Поэтому я подумал, что в конце приложения оно должно показать пользователю диалоговое окно со списком файлов, которые не были найдены.
Это то, что я пытался использовать до сих порчтобы проверить существование файла:
Imports System.IO
Imports Bytescout.PDFExtractor
Imports Microsoft.Office.Interop
Imports System.IO.Path
Public Class Form1
Class PageType
Property Identifier As String
Property TypeName As String
End Class
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Dim OpenFileDialog = New OpenFileDialog()
OpenFileDialog.Title = "Please Select a File"
OpenFileDialog.InitialDirectory = "c:\\"
OpenFileDialog.Filter = "Excel files|*.xls;*.xlsx;*.xlsm"
OpenFileDialog.FilterIndex = 2
OpenFileDialog.RestoreDirectory = True
If OpenFileDialog.ShowDialog() = DialogResult.OK Then
TextBox1.Text = OpenFileDialog.FileName
Else
Return
End If
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim range As Excel.Range
Dim aCell As Object
xlApp = New Excel.Application
xlWorkBook = xlApp.Workbooks.Open(TextBox1.Text)
xlWorkSheet = xlWorkBook.Worksheets("sheet1")
range = xlWorkSheet.UsedRange
Dim Dir = "G:\Word\Department Folders\Pre-Suit\Drafts-IL\2-IL_AttyReview\2018-09\Reviewed\"
Dim unmerged = Combine(Dir, "unmerged")
' Set up a list of the identifiers to be searched for and the corresponding names to be used in the filename.
Dim pageTypes As New List(Of PageType)
Dim ids = {"COVERSPLIT", "COMPLAINTSPLIT", "EXHIBITSPLIT", "MILSPLIT", "SUMSPLIT"}
Dim nams = {" Cover Sheet ", " Complaint ", " Exhibit ", " Military ", " Summons "}
For Each aCell In range
If Not File.Exists(Dir & aCell.Value & ".pdf") Then
MsgBox(aCell.Value & " file does not exist")
Else
В листе Excel я поместил фиктивное имя файла, такое как "ZTEST $$. * # & $ ^ 05", прекрасно зная, что это не будетв каталоге файлов.
Я также поставил это как msgBox, потому что я хотел видеть фактические значения, которые собирало приложение, чтобы показать мне, что он читает ....
thisвот что я попробовал:
For Each aCell In range
If Not File.Exists(Dir & aCell.Value & ".pdf") Then
MsgBox(aCell.Value & " file does not exist")
Else
(я пробовал это с «Dir» и без него, я хотел убедиться, что он читает его из каталога с общим общим диском, а не с моего компьютера)
Это то, что было указано в моем листе Excel:
ZTEST10.SAMPLE01
ZTEST14.SAMPLE05
ZTEST $$. * # & $ ^ 05
ZTEST12.SAMPLE03
когда я запускал это, казалось, что для каждого номера файла в столбце A мой код будет возвращать пустое значениекак если бы он не существовал в каталоге, давая мне сообщение вроде:
"Номер файла не существует" -> хорошо
"Номер файла не существует" -> хорошо
"ZTEST $$. * # & $ ^ 05 Номер файла не существует" -> хорошо
"Номер файла не существует" -> хорошо
"Номер файлане существует "-> хорошо
Почему это происходит?Являются ли следы Excel чтением ячейки от предыдущих раз, когда ячейка содержала значение, и я удалил его или что-то еще?
Редактировать: я вернулся к этому листу Excel и удалил все столбцы справа от столбца A,и все ячейки под списком, и теперь этот код работает ....
Проблема в том, будет ли пользователь делать это каждый раз, когда у него есть список номеров файлов в таблице Excel?Есть ли способ игнорировать пустые значения?