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

时间:2016-10-19 06:39:22

标签: excel vba

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

如果您正在使用 Excel VBA ,则无需创建Excel应用程序对象。它已经可以使用了。下面的代码将为您提供打开的工作簿:

Dim oWB As Workbook

For Each oWB In Workbooks

    MsgBox oWB.Name

Next

Set oWB = Nothing

我已经发布MsgBox只是为了让您了解如何获取工作簿名称。您可以使用它来检查您预期的工作簿是否已打开。试一试,看看你的更新是否有效。如果没有回复,我会尽力帮助