Excel VBA查看工作簿是否打开以及是否写入数据

我正在尝试使用HP Reflections VBA查看是否打开了一个Excel工作簿(Logtemplate.xlsm)。如果工作簿已在我的桌面上打开,请发送
文字从reflection到该工作簿上的下一个可用的行。 我可以打开excel工作簿,但它只会更新文本一次,下一次我尝试运行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 

如果您正在使用Excel VBA ,则不需要创buildExcel应用程序对象。 它已经提供给你。 下面的代码会给你打开工作簿:

 Dim oWB As Workbook For Each oWB In Workbooks MsgBox oWB.Name Next Set oWB = Nothing 

我已经把一个MsgBox只是给你一个关于如何获取工作簿名称的想法。 您可以使用它来检查您是否预期工作簿已经打开。 给一下去看看你的更新是否工作。 如果不回复,我会尽力帮助