【发布时间】: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,我应该使用吗?
【问题讨论】: