2016-10-19 3 views
0

Я пытаюсь посмотреть, открыта ли книга Excel (Logtemplate.xlsm) с помощью HP Размышления VBA.And, если рабочая книга открыта на моем рабочем столе, затем отправьте
Текст из Размышления на следующую доступную строку в этой книге. Я могу открыть книгу Excel, но она обновит только текстовое сообщение , а в следующий раз, когда я попытаюсь запустить vba, он снова откроет тот же файл 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 

ответ

1

Если вы работаете с Excel VBA вам не нужно создавать объект приложения Microsoft Excel. Это уже доступно вам. Приведенный ниже код даст вам А.Л. открытые книги:

Dim oWB As Workbook 

For Each oWB In Workbooks 

    MsgBox oWB.Name 

Next 

Set oWB = Nothing 

Я поставил MsgBox просто чтобы дать вам представление о том, как получить имя рабочей книги. вы можете использовать это, чтобы проверить, что вы ожидали, что рабочая книга уже открыта. Отдайте это и посмотрите, работают ли ваши обновления. Если не вернуться, и я постараюсь помочь

+0

Благодарим вас за ответ. Vba находится в HP Reflections (Attachmate), и он вызывает excel как объект. Моя проблема заключается в том, что я не могу заставить vba определить, что рабочая книга excel уже открыта ... и если она возобновляет отправку текста (как .GetText) из Reflections. – arduinooo

Смежные вопросы