2013-09-25 33 views
2

由于this problem不可解析,因此我正在探索一个用于自动生成InfoPath电子邮件的不同选项。如何在对象接管时使用CreateObject并传递用户输入?

下面的代码工作,除了一旦我使用.Submit它会提示我使用输入 - 基本上InfoPath窗口要求我在对话框中点击“发送”。

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

请参阅下面的图像出现确认的例子:

enter image description here

我想要么抑制这种(即使我不得不改变我是如何创建的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 = "[email protected]" 
    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 

回答

0

我不使用InfoPath所以无法测试appraoch那里,但你可以使用的SendKeys通过填写所需的字段,并使用{tab}代码(见下文)来解决这个问题。我希望Tab键能够在用户输入表单中的字段之间移动。

有一点要小心,sendkeys可能不可靠,所以它可能不是最好的想法,但如果你找不到另一种解决方法,可能值得一试。

Sub testSendKeys() 
    Dim SendkeyString As String 

    Application.Wait (3)      'Wait 3 seconds to allow 
               'form to load 
    SendkeyString = "[email protected]"  '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