通过DDE连接推送信息时运行Excel宏

时间:2019-07-12 22:48:32

标签: excel vba dde

我目前有一个HMI,可以通过DDE连接与Excel进行通信。 如果我在HMI中更新值,则在Excel电子表格中更新值,反之亦然。这正是我想要的。但是,我创建了一个VBA代码,当在HMI中更改值时,该代码也将更新电子表格中的值。但是,如果我通过HMI更改值,则不会运行此VBA代码,但是如果我在Excel中手动更改它们,它将运行。 我有没有考虑的东西?

log.info 'Current environment is ' + testRunner.testCase.testSuite.project.getActiveEnvironment().name

testRunner.testCase.project.setActiveEnvironment("Test")
log.info 'Environment afterwards is now ' + testRunner.testCase.testSuite.project.getActiveEnvironment().name

// Now run tests in the new environment.
def testCase = testRunner.testCase.testSuite.project.getTestSuiteByName("MyTestSuite").getTestCaseByName("MyTestCase")
def properties = new com.eviware.soapui.support.types.StringToObjectMap ()
testCase.run(properties, false)

1 个答案:

答案 0 :(得分:0)

作为粗略的解决方法,如果仅涉及三个单元格,则可以在涉及目标单元格的其他单元格中创建一些简单公式(如果尚不存在),并使用Worksheet_Calculate()事件进行处理。像

Public VarK1, VarK2, Vark3
Private Sub Worksheet_Calculate()
    If VarK1 <> Range("K1").Value Or VarK2 <> Range("K2").Value Or Vark3 <> Range("K3").Value Then
    VarK1 = Range("K1").Value
    VarK2 = Range("K2").Value
    Vark3 = Range("K3").Value
   'Call the required process
End If
End Sub

尽管也可以使用涉及DDE的其他直接方法来执行此操作,并且可能需要进一步研究/等待以获取更合适的命令。另一种解决方法是使用Application.OnTime方法。