【发布时间】:2021-12-23 23:36:33
【问题描述】:
我使用 Microsoft.Office.Interop.Excel 库。我所做的是在 excel 中输入警报 我不知道该怎么做是通过 vb.net 我按日期和时间订购了警报,这样它就可以向我显示第一次输入的最后一个警报。我不能使用宏,因为我已经尝试过使用模板,但它给了我错误,因为在另一台 PC 上他们使用 Open Office。有没有出现什么解决办法。非常感谢你的一切。一切顺利。
我附上插入警报的代码。
Public Sub GuardarAlarmas()
Dim fileTest As String = "C:\Users\DT SCADA\Desktop\Historicos\Alarmas\Año 2021\Alarmas 2021_11_noviembre.xlsm"
Dim oExcel As Object
Dim oBook As Workbook
Dim oSheet As Worksheet
oExcel = CreateObject("Excel.Application")
If File.Exists(fileTest) Then
oBook = oExcel.Workbooks.Open(Filename:="C:\Users\DT SCADA\Desktop\Historicos\Alarmas\Año 2021\Alarmas 2021_11_noviembre.xlsm", ReadOnly:=False)
End If
oSheet = oExcel.Worksheets(1)
'Cuento las líneas escritas en cada fila y le pongo un +6 porque empiezo en B6 y si quiero escribir en B7,B8 y viceversa necesito ponerle el +6
Dim paco = oSheet.Range("A6").CurrentRegion.Rows.Count + 6
Console.WriteLine(paco.ToString)
'Aquí recojo el texto de estado, descripción, hora y día
oSheet.Range("A" + paco.ToString).Value = Date.Today
oSheet.Range("B" + paco.ToString).Value = TimeOfDay
oSheet.Range("C" + paco.ToString).Value = "ACTIVA"
oSheet.Range("D" + paco.ToString).Value = "DESCRIPCIÓN"
'Aquí pongo un borde negro en el Excel
Dim Range = oSheet.Range("A" + paco.ToString + ":D" + paco.ToString)
Range.Borders.Color = Color.Black
oSheet.UsedRange.Select()
oSheet.Sort.SortFields.Clear()
oSheet.Sort.SortFields.Add(oSheet.UsedRange.Columns("A"), Excel.XlSortOn.xlSortOnValues, Excel.XlSortOrder.xlDescending, System.Type.Missing, Excel.XlSortDataOption.xlSortNormal)
Dim sort = oSheet.Sort
sort.SetRange(oSheet.Range("A6:D1200"))
sort.Header = Excel.XlYesNoGuess.xlYes
sort.MatchCase = False
sort.Orientation = Microsoft.Office.Interop.Excel.XlSortOrientation.xlSortColumns
sort.SortMethod = Microsoft.Office.Interop.Excel.XlSortMethod.xlPinYin
sort.Apply()
Try
'Aquí uso el DisplayAlerts, para que directamente me confirme que deseo guardar el archivo.
oExcel.DisplayAlerts = False
'Aquí guardo todos los datos introducidos
oBook.SaveAs(Filename:="C:\Users\DT SCADA\Desktop\Historicos\Alarmas\Año 2021\Alarmas 2021_11_noviembre.xlsm", AccessMode:=3, ConflictResolution:=2, Local:=True)
'Aquí pongo el DisplayAlerts a true, por si acaso este queda invalidado en toda la aplicación.
oExcel.DisplayAlerts = True
oBook.Close()
oExcel.Quit()
Catch
'Si hubiese algún error en excel, mataría todos los procesos.
Dim pListOfProcesses() As Process
Dim pExcelProcess As System.Diagnostics.Process
pListOfProcesses = pExcelProcess.GetProcesses
For Each pExcelProcess In pListOfProcesses
If pExcelProcess.ProcessName.ToUpper = "EXCEL" Then
pExcelProcess.Kill()
End If
Next
End Try
End Sub
【问题讨论】:
-
目前还不清楚您在这里尝试做什么。这张包含警报的数据表是用您的 vb.net 项目生成的,然后写入 excel 吗?也许您需要用迄今为止的最佳尝试来更新您的问题。
-
您好,我附上了一段代码,说明如何使用 vb.net 中的 Microsoft Excel 库进行插入。那么它会解决这个问题吗?虽然我真正想要的是按日期和时间排序。所以我写了一篇文章来解释这个问题。
-
这个链接 - social.msdn.microsoft.com/Forums/lync/en-US/… 对这个问题有帮助吗?
-
是的,帮帮我。但是排序失败了,你可以证明我的代码。我上传代码 + 链接 Excel ;)
-
有人可以测试我的代码吗?添加了排序功能以对 B 列和 C 列进行排序,但我无法对其进行排序。 B 列和 C 列用于按日期和时间排序。理论上最早的日期和最高的时间
标签: excel vb.net visual-studio sorting