Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开时从一个Excel工作簿向另一个工作簿读取实时值_Excel_Vba_Copy - Fatal编程技术网

打开时从一个Excel工作簿向另一个工作簿读取实时值

打开时从一个Excel工作簿向另一个工作簿读取实时值,excel,vba,copy,Excel,Vba,Copy,我希望能够使用VBA从一个打开的Excel工作簿读取和写入值到另一个应用程序,而无需使用“作为工作表”功能,因为这是一个非windows应用程序。这可能吗 我发布的代码来自使用脚本的PLC应用程序 我只需要知道除了.open之外还需要使用什么函数,因为文件已经打开了 Dim objXLApp, objXLWb, objXLWs1, objXLWs2, objXLWs5 Set objXLApp = CreateObject("Excel.Application") objXLApp.Visi

我希望能够使用VBA从一个打开的Excel工作簿读取和写入值到另一个应用程序,而无需使用“作为工作表”功能,因为这是一个非windows应用程序。这可能吗

我发布的代码来自使用脚本的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

如果工作簿已打开,您只需在
工作簿
集合中按名称引用即可。
Set objXLWb=objXLApp.Workbooks(“File.xlsm”)


编辑:因为你已经改变了你的问题,我不再确定你在问什么。我的猜测是,您的“已打开”工作簿没有在您使用
Set objXLApp=CreateObject(“Excel.Application”)
创建的同一Excel实例中打开,因此您需要引用现有Excel应用程序,然后是该应用程序中打开的工作簿。

响应速度非常快。这不管用。有一个窗口会弹出并立即消失&数据不会写入excel工作表。今天我将发布整个脚本,这可能会提供更多的见解。好的,很抱歉造成混淆。无论如何,我都不是脚本编写专家。因此,如果我使用的是已打开的excel工作表,则不需要创建对象。我是否可以不使用此选项并将其更改为打开以设置objXLWb=objXLApp.Workbooks(“File.xlsm”)&尝试使用该脚本?我没有任何PLC应用程序的经验。在Excel VBA中,只要工作簿已在同一应用程序实例中打开,
Set objXLWb=Workbooks(“File.xlsm”)
将为您获取表示工作簿的变量。您的
objXLApp
引用了一个全新的Excel实例(因为您使用了
CreateObject
),所以它的
工作簿
集合中不会有您的工作簿。