I receive many e-mails which I need to re-direct to many other departments around my company. Recently, the company expanded to several other states so now I need to direct e-mails to the same departments but for other states. For example one email address might be FLAutoRepair... but another might be NYAutoRepair... Further expansion is possible. Prior to the expansion I created a macro which allowed me to select the recipient department and then called the correct macro to make the e-mails, but that was only 8 possible choices. Now it has ballooned into about 70 possible choices and I wanted to create a way to ask a couple of questions (State and Recipient) and from that generate a macro name rather than have 70+ possible choices to choose from. However CALL does not work with variables (according to my research) so I have to use APPLICATION.RUN. However, .RUN is not a method of the Outlook Application object so I need to use Excel's Application object. However, that is generating this error: "Run-time error '1004': Cannot run the macro 'Forward_CC_Response_Auto'. The macro may not be available in this workbook or all macros may be disabled."
The code is below and below that is the code of the Form you see in the first block. I also need to pass arguments to the called macro.
CODE OF CALLING MACRO
Sub Choose_Forward_Respond_CC_MultiState() ' Macro to choose which Respond & Forward with CC request e-mail macro to use for multiple states. ' Declare variables Dim appExcelRun As Excel.Application Dim objMail As Outlook.MailItem Dim objMailCopy As Outlook.MailItem Dim myNameSpace As Outlook.NameSpace Dim ofInbox As Outlook.Folder Dim ofDestination As Outlook.Folder Dim objRespondForwardCC As Object Dim strState, strRecipient, strCombinedRecipient, strCallName As String ' Instantiate Objects Set objItem = GetCurrentItem() Set objMail = objItem Set myNameSpace = Application.GetNamespace("MAPI") Set ofInbox = myNameSpace.GetDefaultFolder(olFolderInbox) Set appExcelRun = New Excel.Application ' Declare vairable of location form. Dim frmRespondForward As New frmRecipientChooser_V3 ' Loading and running form. Load frmRespondForward frmRespondForward.Show strState = frmRespondForward.lstStateChoice.Value strRecipient = frmRespondForward.lstRecipientChoice.Value Unload frmRespondForward strCombinedRecipient = strState & "_" & strRecipient ' strCallName = "Forward_CC_" & strCombinedRecipient ' Execute e-mail macro. If strRecipient = "Auto" Then appExcelRun.Run "Forward_CC_Response_Auto" Else app.ExcelRun.Run "strCallName" End If ' Release objects. Set objItem = Nothing Set objMail = Nothing Set objMailCopy = Nothing Set ofInbox = Nothing Set ofDestination = Nothing End SubPrivate Sub UserForm_Initialize() ' Initialize variables Dim varStateChoice As String ' Create list for State lstStateList = Array("BK", "FL", "GA", "KY", "MD", "NJ", "NY", "OH", "PA", "PR", "SC", "TX", "VA") With Me.lstStateChoice .List = lstStateList .ListIndex = 0 End With ' Create list for recipients lstRecipientList = Array("Specify", "Auto") With Me.lstRecipientChoice .List = lstRecipientList .ListIndex = 1 End With End Sub



Reply With Quote

