我想每天在我的 Linux (debian 9) 上自动在多个 Excel 上使用宏。于是我查了一下,发现用VB.NET是可以的。
添加 Microsoft 软件包后,我安装了 dotnet-sdk
sudo apt-get install dotnet-sdk-2.1
然后使用 dotnet new console -lang VB
创建我的项目
我将 Program.vb 修改为:
Imports System
Imports System.Text
Imports System.IO
Imports Microsoft.VisualBasic.ControlChars
Imports Excel = Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop
Module Program
Sub Main(args As String())
ProcessFiles
End Sub
End Module
Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Excel.Workbook
Pathname = ActiveWorkbook.Path & "/path/xlsx/"
Filename = Dir(Pathname & "*.xlsx")
Do While Filename <> ""
wb = Workbooks.Open(Pathname & Filename)
DoWork( wb )
wb.Close( SaveChanges:=True )
Filename = Dir()
Loop
End Sub
Sub DoWork(wb As Excel.Workbook)
With wb
.Worksheets(1).Range("A1").Select
.Selection.End(xlUp).Select
.Rows("1:1").Select
.Selection.AutoFilter
.ActiveSheet.Range("$A$1:$L$999999").AutoFilter( Field:=1 , Criteria1:="<>*2018*" )
.Range("A2:L999999").Select
.Selection.EntireRow.Delete
.Selection.End(xlUp).Select
.ActiveSheet.Range("$A$1:$L$999999").AutoFilter( Field:=1 )
.Rows("1:1").Select
.Selection.AutoFilter
.Range("A2").Select
End With
End Sub
现在,我尝试使用 dotnet run
运行,但出现错误:错误 BC30002:未定义类型“Excel.Workbook”。
我找到了很多具有良好意义的答案:
导入 Excel = Microsoft.Office.Interop.Excel
但这还不够。我还找到了使用 Visual Studio 的解决方案,但我没有它并且不想...
感谢您的帮助
最佳答案
Excel Interop 层需要(等等......)Excel。 8-)
除非您找到了适用于 Linux 的 Microsoft Office 的副本以及实现 COM 接口(interface)的所有 Magic,否则您就不走运了。
关于excel - 尝试在 Linux 中将 Microsoft.Office.Interop.Excel 与 VB.NET 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52388976/