【问题标题】:Visual Basic - Saving and editing excel formsVisual Basic - 保存和编辑 Excel 表单
【发布时间】:2017-11-12 14:10:38
【问题描述】:

我遇到了一个错误。 我正在尝试创建一个创建、加载和保存 excel 文件的程序。我只使用 Visual Basic,所以请不要用其他语言回答。

该程序旨在创建一个名为“Example”的 excel 文件,或者如果它已经存在则加载它。

        If (My.Computer.FileSystem.FileExists("D:\Programming\Example.xlsx")) Then
        xlWorkBook.Save()
    Else
        xlWorkBook.SaveAs(Filename:="D:\Programming\Example.xlsx",
        FileFormat:=51)
    End If

由于某种原因,它似乎没有这样做,而是创建了一个名为“book1.xlsx”而不是“Example.xlsx”的文件。

当它保存时,它似乎在后台保持 excel 打开。 这是我的完整代码:

Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1

    Dim xlApp As New Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Create_Click(sender As Object, e As EventArgs) Handles Create.Click
        xlWorkBook = xlApp.Workbooks.Add

        xlApp.Visible = True

        xlWorkSheet = xlWorkBook.Sheets("Sheet1")

        With xlWorkSheet
            .Range("A1").Value = "Month"
            .Range("A2").Value = "January"
            .Range("A3").Value = "February"
            .Range("A4").Value = "March"
            .Range("A5").Value = "April"

            .Range("B1").Value = "Loan Repayment"
            .Range("B2").Value = "1000.00"
            .Range("B3").Value = "1200.00"
            .Range("B4").Value = "1300.00"
            .Range("B5").Value = "1600.00"

            .Range("A6").Value = "Total Paid"

            .Range("B6").Formula = "=Sum(B2:B5)"
        End With

        Test.Text = xlWorkSheet.Range("A1").Value

    End Sub

    Private Sub Save_Click(sender As Object, e As EventArgs) Handles Save.Click
        If (My.Computer.FileSystem.FileExists("D:\Programming\Example.xlsx")) Then
            xlWorkBook.Save()
        Else
            xlWorkBook.SaveAs(Filename:="D:\Programming\Example.xlsx",
            FileFormat:=51)
        End If

        xlWorkBook.Close()

        xlApp.Quit()

        ReleaseAll(xlApp)
        ReleaseAll(xlWorkBook)
    End Sub

    Private Sub ReleaseAll(ByVal obj As Object)

        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing

        Catch ex As Exception

            obj = Nothing

        Finally

            GC.Collect()

        End Try

    End Sub
End Class

干杯感谢任何帮助。 :D

【问题讨论】:

  • 如果你想要 VB.NET 的答案,你应该检查你的标签...
  • 我不希望 VB.NET 回答 VBA 和 VB.NET 完全不同。我已经用 VBA 标记了它,并特别说我想要用 VBA。 @t
  • 问题中的代码不是 VBA。 Try/Catch/Finally 在 VBA 中不存在。 Handles 在 VBA 中不存在。 Imports 在 VBA 中不存在
  • 对不起,我的错。 @barrowc
  • 您特别提到“Visual Basic”,通常表示 VB.NET,而您的代码是 VB.NET,正如@barrowc 指出的那样。

标签: vb.net


【解决方案1】:

问题的出现是因为我正在创建同一个工作簿的多个实例,而不是在文件已经存在的情况下打开它。

这修复了代码:

        If (My.Computer.FileSystem.FileExists(Application.StartupPath + "\Book1.xlsx")) Then
        xlWorkBook = xlApp.Workbook.Open(Application.StartupPath + "\Book1.xlsx")
    Else
        xlWorkBook = xlApp.Workbooks.Add
    End If

但是,这会产生另一个问题。错误说:

System.MissingMemberException: 'Public member 'Workbook' on type 'ApplicationClass' not found.'

在行中打开工作簿。 (ln 15)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-22
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多