由于它是非Windows应用程序,因此我希望能够使用VBA从一个OPEN Excel工作簿向另一个应用程序读取和写入值,而无需使用“作为工作表”功能。这可能吗?
我发布的代码来自使用脚本的PLC应用程序。
由于文件已经打开,我只需要知道.open
之外还要使用什么功能。
Dim objXLApp, objXLWb, objXLWs1, objXLWs2, objXLWs5
Set objXLApp = CreateObject("Excel.Application")
objXLApp.Visible = True
Set objXLWb = objXLApp.Workbooks.Open("File.xlsm")
'~~> Working with Sheet1
Set objXLWs1 = objXLWb.Sheets(1)
Set objXLWs2 = objXLWb.Sheets(2)
Set objXLWs5 = objXLWb.Sheets(5)
'~~>Write SetPoints to Sheet1
With objXLWs1
'~~>Write
.Cells(6,23).value = SmartTags("Job Time Sec to OEE")
.Cells(6,23).value = SmartTags("Run Time Sec to OEE")
End With
''~~>Write Setup Values to Sheet2
'~~> Save as Excel File (xls) to retain format
objXLWb.Save
objXLWb.Close (False)
Set objXLWs1 = Nothing
Set objXLWs2 = Nothing
Set objXLWs5 = Nothing
Set objXLWb = Nothing
objXLApp.Quit
Set objXLApp = Nothing
答案 0 :(得分:0)
如果工作簿已经打开,则可以按名称将其引用为Workbooks
集合的一部分。
Set objXLWb = objXLApp.Workbooks("File.xlsm")
编辑:由于您已经更改了问题,所以我不再确定您要问什么。我的猜测是,您的“已打开”工作簿没有在使用Set objXLApp = CreateObject("Excel.Application")
创建的同一Excel实例中打开,因此您需要引用现有 Excel应用程序,然后打开该应用程序中的打开的工作簿。