尝试在Linux中的VB.NET中使用Microsoft.Office.Interop.Excel

时间:2018-09-18 14:34:04

标签: excel linux vb.net

我想每天在我的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运行,但出现错误:error BC30002: The type 'Excel.Workbook' is not defined.

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

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

Excel Interop图层需要(等待它……)Excel。 8-)

除非找到适用于Linux的Microsoft Office副本以及实现COM接口的所有Magic,否则您将不走运。

答案 1 :(得分:0)

感谢Terry Carmen的回答。
我们找到了另一个答案,而没有使用VB和Excel宏来满足我们的需求。 如果我们不得不使用VB和Excel,可以在macOS下完成。