2013-10-15 3 views
0

Сообщение об ошибке: System.InvalidCastException: Преобразование из строки "" для ввода типа 'Date' недопустимо.System.InvalidCastException: преобразование из строки "" в тип 'Date' недействительно

Sub Main() 

     Dim OutApp As Object 
     Dim OutMail As Object 
     Dim xlApp As Excel.Application 
     Dim xlWorkBook As Excel.Workbook 
     Dim xlWorkSheet As Excel.Worksheet 
     Dim fecha As String 
     Dim proc As System.Diagnostics.Process 

     For Each proc In System.Diagnostics.Process.GetProcessesByName("EXCEL") 
      If proc.MainWindowTitle.Trim.Length = 0 Then 
       proc.Kill() 
      End If 
     Next 

     xlApp = New Excel.ApplicationClass 
     xlWorkBook = xlApp.Workbooks.Open("\\file.xlsm") 
     xlWorkSheet = xlWorkBook.Worksheets("Sheet") 

     Try 

      xlApp.Range("E41").Activate() 
      xlApp.Range("E4").Select() 

      xlWorkSheet.Range("E4").Select() 
      xlWorkSheet.Range("E4").Activate() 
      fecha = xlApp.ActiveCell.Value 

      Do While xlApp.ActiveCell.Value <> "" 

       'If (DateTime.Today - CDate(fecha)).Days = 180 Then 
       If (DateTime.Today - DateTime.ParseExact(fecha, "dd/mm/yyyy", CultureInfo.InvariantCulture)).Days = 180 Then 

        ' --more lines --- 
        '... 
    End Sub 

Получение ошибки в этой строке:

Do While xlApp.ActiveCell.Value <> "" 

По какой-то причине кажется xlApp.ActiveCell.Value в настоящее время рассматривается как дата вместо строки.

Другое дело, это правильный способ сравнения, если между сегодняшним днем ​​и значением ячейки существует разница в 6 месяцев?

If (DateTime.Today - DateTime.ParseExact(fecha, "dd/mm/yyyy", CultureInfo.InvariantCulture)).Days = 180 
+1

Попробуйте xlApp.ActiveCell.Text – Steve

ответ

2

Если у вас есть значение даты в ячейке, Excel будет автоматически форматировать этот тип ячейки на сегодняшний день. Итак, когда вы сравниваете это с «", он будет генерировать исключение. Вы должны проверить тип значения ячейки или передать значение ячейки в строку перед сравнением.

Смежные вопросы