我正在尝试使用HP查看excel工作簿是否已打开(Logtemplate.xlsm) 思考VBA。如果工作簿在我的桌面上打开,那么发送 从反射到该工作簿上的下一个可用行的文本。 我可以打开excel工作簿,但它只会更新Text 时间,下次我尝试运行vba时,它重新打开相同的excel 文件并不更新文本。我对VBA很新,还有任何帮助 我将不胜感激。先感谢您。
Sub Test()
On Error GoTo 0
With Session
Wait 1
Dim Text As String
Dim TopRow, LastRow, LastColumn As Integer
Dim excelApp As Object
Dim wb As Workbook
Dim eRow As Long
TopRow = .ScreenTopRow
LastRow = TopRow + .DisplayRows
LastColumn = .DisplayColumns
Text = .GetText(.CursorRow - 1, 0, .CursorRow, 125)
On Error GoTo 0
Set wb = Nothing
On Error Resume Next
Set wb = Workbooks("Logtemplate.xlsm")
On Error GoTo 0
If wb Is Nothing Then
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = True
Set excelApp = Workbooks.Open("C:\Logtemplate.xlsm")
excelApp.Worksheets("Sheet1").Select
excelApp.Worksheets("Sheet1").Range("A2").Select
eRow = excelApp.Worksheets("Sheet1").Cells(Rows.Count, 1).End (xlUp).Offset (1, 0).Row
Cells(eRow + 1, 1).Select
Cells(eRow, 1).Value = Text
On Error Resume Next
If Not wb("Logtemplate.xlsm") Is Nothing Then
Set excelApp = Worksheets("Sheet1").Select
End If
On Error Resume Next
excelApp.Worksheets("Sheet1").Select
excelApp.Worksheets("Sheet1").Range("A2").Select
eRow = excelApp.Worksheets("Sheet1").Cells(Rows.Count, 1).End (xlUp).Offset (1, 0).Row
Cells(eRow + 1, 1).Select
Cells(eRow, 1).Value = Text
End Sub
答案 0 :(得分:1)
如果您正在使用 Excel VBA ,则无需创建Excel应用程序对象。它已经可以使用了。下面的代码将为您提供打开的工作簿:
Dim oWB As Workbook
For Each oWB In Workbooks
MsgBox oWB.Name
Next
Set oWB = Nothing
我已经发布MsgBox
只是为了让您了解如何获取工作簿名称。您可以使用它来检查您预期的工作簿是否已打开。试一试,看看你的更新是否有效。如果没有回复,我会尽力帮助