错误消息: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
答案 0 :(得分:2)
如果单元格中有日期值,Excel将自动格式化该单元格类型到目前为止。因此,当您将其与“”进行比较时,它将抛出异常。您应该检查单元格值的类型,或者在比较之前将单元格值转换为字符串。