【问题标题】:How can I use CreateObject and pass user input when object takes over?对象接管时如何使用 CreateObject 并传递用户输入?
【发布时间】:2013-10-01 11:30:05
【问题描述】:

因为this problem 似乎无法解析,所以我正在探索自动生成 InfoPath 电子邮件的不同选项。

以下代码有效,但一旦我使用 .Submit,它会提示我使用输入 - 基本上 InfoPath 窗口要求我在对话框上点击“发送”。

我希望有一种方法可以基本上完​​成下面的代码在伪代码中所做的事情。问题是当.Submit 被调用时(documentation here - 看起来没有任何标志我可以通过/设置来忽略它),VBA 等待按键继续(所以SendKeys 不像下面,至少要做 Alt+S)。

有关显示的确认示例,请参见下图:

我想抑制这种情况(即使我必须更改创建 InfoPath 电子邮件的方式)或者能够伪造“发送”按键。

Private Sub GenerateInfoPathEmail()

    Dim mFilePath As String
    Dim oApp As Object
    Dim objEmailAdapter As EmailAdapterObject

    mFilePath = "A:\tmp\testform.xsn"
    Set oApp = CreateObject("InfoPath.Application")
    oApp.XDocuments.NewFromSolution (mFilePath)

    'infopath form has a connection called "email"
    Set objEmailAdapter = oApp.XDocuments(0).DataAdapters("email")
    objEmailAdapter.To = "myEmail@myDomain.com"
    objEmailAdapter.CC = ""
    objEmailAdapter.Intro = "intro"
    objEmailAdapter.Subject = "subject"
    objEmailAdapter.AttachmentType = 1 'xdXmlXns
    objEmailAdapter.AttachmentFileName = mFilePath

    'I want to be able to pass through
    'the silly user input here to basically
    'hit "send" (alt+s for keyboard shortcut)
    objEmailAdapter.Submit
    SendKeys ("%s")  ' This obviously won't work because the code waits for user input


End Sub

【问题讨论】:

    标签: vba infopath infopath2010


    【解决方案1】:

    我不使用 infopath,因此无法在那里测试 appraoch,但您可以使用 sendkeys 通过填写必填字段并使用 {tab} 代码(见下文)来解决此问题。我希望 tab 键能在用户输入表单的字段之间移动。

    请注意,sendkeys 可能不可靠,因此它可能不是最好的主意,但如果您找不到解决问题的其他方法,可能值得一试。

    Sub testSendKeys()
        Dim SendkeyString As String
    
        Application.Wait (3)                        'Wait 3 seconds to allow 
                                                    'form to load
        SendkeyString = "myEmail@myDomain.com"      'Fill in the to field that appears
                                                    'to be selected by default
        SendkeyString = SendkeyString & "{tab}"     'Tab to CC field
        SendkeyString = SendkeyString & "{tab}"     'Tab to BCC field
        SendkeyString = SendkeyString & "{tab}"     'Tab to Subject field
        SendkeyString = SendkeyString & "subject"   'Fill in subject details
        SendkeyString = SendkeyString & "%s"        'Alt-S to send
    
        SendKeys (SendkeyString)
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多