2013-10-15 86 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会自动格式化该单元格类型的日期。所以,当你将它与“”比较时,它会抛出异常。在比较之前,您应该检查单元格值的类型或将单元格值转换为字符串。

相关问题