【问题标题】:VB.net manage opened excel file on the flyVB.net 即时管理打开的 excel 文件
【发布时间】:2016-04-22 11:45:50
【问题描述】:

在我当前的项目中,我需要修改一个已经打开的 excel 文件。这意味着,每当我修改它时,我都需要查看 excel 文件中的更改。

由于打开的文件被锁定并且vb无法访问该文件,我的解决方案是打开另一个excel文件,修改其内容,然后使用excel vba复制到原始文件,因为excel vba可用于在打开的工作表之间复制数据.

这是我的另一个 excel 文件(称为 TTHT.xlsm)中的 vb 代码:

Private Sub Worksheet_CHANGE(ByVal Target As Range)
  Application.ScreenUpdating = False
  If Sheet1.[B5].Value = "#" Then
  Application.DisplayAlerts = False
  With Workbooks.Open(ThisWorkbook.Path & "\PCN.xlsm")
    With ThisWorkbook.Sheets("TTHT").[B5]
        .Parent.Range("B4").Copy
        Sheets("PCN").[B4].PasteSpecial 7
        End With
    End With
Application.DisplayAlerts = True
 End If
End Sub

在我的 2 个打开的 excel 文件(TTHT 和 PCN.xlsm)之间运行良好。

现在我需要做的就是将数据填入TTHT,并通过我的代码将“#”放入B5。我认为它会起作用,但它不是..

Private Sub btnUpdate_Click(sender As System.Object, e As System.EventArgs) Handles btnUpdate.Click
    Dim oExcel As Object
    Dim oBook As Object
    Dim oSheet As Object
    oExcel = CreateObject("Excel.Application")
    oExcel.DisplayAlerts = False
    oBook = oExcel.Workbooks.Open(TTHTPath)
    oSheet = oBook.Worksheets("TTHT")
    oSheet.Range("B4").Value = txtValue_Needed.text
    oSheet.Range("B5").Value = "#"
    oBook.Save()
    'System.Diagnostics.Process.Start(DuongDanPhieuCongNghe)
    oSheet = Nothing
    oBook.Close()
    oBook = Nothing
    oExcel.Quit()
    oExcel = Nothing
End Sub

结果是,如果我打开 PCN 文件并单击按钮,它不会改变。如果我关闭 PCN 并单击按钮,它将改变.. 但我需要即时查看更改,而不是每次需要更新时关闭并重新打开。 有人可以告诉我一些关于如何使用或使用哪个功能...无论是 vba 还是 vb.net,我应该使用吗?

【问题讨论】:

    标签: vb.net excel vba


    【解决方案1】:

    如果文件已经打开并且有焦点,那么您可以尝试在运行对象表中查找它。

    Dim ExcelApplication As Excel.Application    
    ExcelApplication = GetObject("C:\Folder\ExcelWorkbook.xls")
    

    然后您可以对您引用的实例进行修改,同时尽量避免干扰用户。

    getobject() 函数很棒;这是一个链接。 https://msdn.microsoft.com/en-us/library/e9waz863(v=vs.71).aspx

    【讨论】:

    • 很抱歉,我无法为您的答案投票,因为我的声誉仍然很低:D 您使用 GetObject 的解决方案非常简单,但它对我来说非常适合。非常感谢。
    猜你喜欢
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多