0

我对 Outlook 表单有点陌生,但对 VBA 整体来说不是 - 也不是表单的 HTML/Web 设计。但是,我的问题是找到一种将两者结合起来的方法。

我正在尝试设计一个供用户填写的表格,并根据他们在下拉框中填写的内容,然后告诉他们我们希望他们在电子邮件中附加什么。目前我们在 Excel 中完成了这项工作,基于 dropbox,然后 VLOOKUPS 到包含所需表格的第二个电子表格。

无论如何,我是否可以在我的 VBA Outlook 表单中使用 VLOOKUP 在 Excel 中引入,以便它可以查找我们希望用户执行的附件?否则,这将是 VBA 中的大量 SELECT CASE 语句 =/

4

1 回答 1

2

这似乎对我有用。其中一些是我从这样的网站拼凑而成的,其余的都是我自己从头开始创建的。

当我点击我的按钮时:

  • 将出现一个输入框,这是将在电子表格中查找的值。
  • 它在范围内(在代码中指定)查找匹配项
  • 返回值,它左侧的两列。
  • 当它找到匹配项时,会将其放在 Outlook 的主题行中。
Dim jobno As String
Dim Proj As String

Sub Test()
    jobno = InputBox("Job Number?", "Test")
    GetNameFromXL
    If jobno <> "" Then
        Set myItem = Application.CreateItem(0)
        If Proj <> "" Then
            myItem.Subject = jobno & " - " & Proj & " - " & Format(Date, "dd.mm.yy")
        Else
            myItem.Subject = jobno & " - " & Format(Date, "dd.mm.yy")
        End If
        myItem.Display
    Else
        Exit Sub
    End If
End Sub


Sub GetNameFromXL()

'Late binding.  No reference to Excel Object required.
Dim xlApp As Object
Dim xlWB As Object
Dim xlWS As Object

Set xlApp = CreateObject("Excel.Application")
'Open the spreadsheet to get data
Set xlWB = xlApp.Workbooks.Open("X:\...\FILENAME.xlsx") ' <-- Put your file path and name here
Set xlWS = xlWB.Worksheets(1) ' <-- Looks in the 1st Worksheet

Debug.Print "-----Start of 'For Each' loop"
For Each c In xlWS.Range("A6:A100") 'Change range to value you want to 'VLookUp'
Proj = c.Offset(0, 2).Value 'This looks at the 2nd column after the range above
Debug.Print c & Proj
    If jobno = c Then
        Debug.Print "-----Match Found:  " & jobno & " = " & Proj
        GoTo lbl_Exit
    Else
    End If
Next c
Debug.Print "-----End of For Each loop"
MsgBox jobno & " not found in WorkBook."

'Clean up
Set xlWS = Nothing
Set xlWB = Nothing
Set c = Nothing
Proj = ""
xlApp.Quit
Set xlApp = Nothing
lbl_Exit:
Exit Sub
End Sub
于 2013-05-29T16:24:30.183 回答