尝试在 Linux 中将 Microsoft.Office.Interop.Excel 与 VB.NET 一起使用



我想每天在我的 linux (debian 9( 上自动在几个 excel 上使用宏。 所以我找了一点,我发现可以使用 VB.NET。

添加微软软件包后,我安装了dotnet-sdk

sudo apt-get install dotnet-sdk-2.1

然后使用dotnet new console -lang VB创建我的项目

我修改了程序.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运行,但出现错误:error BC30002: The type 'Excel.Workbook' is not defined.

我找到了很多答案,给出了很好的导入:
Imports Excel = Microsoft.Office.Interop.Excel
但这还不够。我也找到了使用Visual Studio的解决方案,但我没有它,也不想......

感谢您的帮助

Excel 互操作层需要(等待它。胜过。8-(

除非你找到了Microsoft Office for Linux的副本以及实现COM接口的所有Magic,否则你就不走运了。

感谢特里·卡门的回答。
我们找到了另一个答案,而无需使用VB和Excel宏来满足我们的需求。 在我们被迫使用VB和Excel的情况下,我们可以在macOS下完成。

最新更新