2013-10-15 88 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會自動格式化該單元格類型的日期。所以,當你將它與「」比較時,它會拋出異常。在比較之前,您應該檢查單元格值的類型或將單元格值轉換爲字符串。

相關問題