在我當前的項目中,我需要修改已打開的excel文件。這意味着,我需要在修改它時查看excel文件中的更改。VB.net在線管理打開的excel文件
由於打開的文件被鎖定,vb無法訪問該文件,我的解決方案是打開另一個excel文件,修改其內容,然後使用excel vba複製到原始文件,因爲可以使用excel vba在打開牀單。
這裏是我的其他Excel文件(稱爲TTHT.xlsm)VB代碼:我的2口之間
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
運行良好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,我應該使用嗎?
對不起,我不能upvote你的答案,因爲我的聲譽還很少:D 你使用GetObject的解決方案非常簡單,但它對我來說非常完美。 非常感謝。 – HaPhan