Foffaf Foffaf
asked on
VB code to Create Excel file from Outlook 2007 part 4
I need this code to run base on the rule I created. I tried to find in the rules Wizard, the "run a script" option is empty.
What should I do?
Note:
This question is related to these question
VB code to Create Excel file from Outlook 2007 part 3.1 - https://www.experts-exchange.com/questions/24279744/VB-code-to-Create-Excel-file-from-Outlook-2007-part-3-1.html?anchorAnswerId=24025641#a24025641
VB code to Create Excel file from Outlook 2007 part 3 - https://www.experts-exchange.com/questions/24237135/VB-code-to-Create-Excel-file-from-Outlook-2007-part-3.html?anchorAnswerId=24017516#a24017516
VB code to Create Excel file from Outlook 2007 part 2 - https://www.experts-exchange.com/questions/24163884/VB-code-to-Create-Excel-file-from-Outlook-2007-part-2.html?anchorAnswerId=23699562#a23699562
What should I do?
Note:
This question is related to these question
VB code to Create Excel file from Outlook 2007 part 3.1 - https://www.experts-exchange.com/questions/24279744/VB-code-to-Create-Excel-file-from-Outlook-2007-part-3-1.html?anchorAnswerId=24025641#a24025641
VB code to Create Excel file from Outlook 2007 part 3 - https://www.experts-exchange.com/questions/24237135/VB-code-to-Create-Excel-file-from-Outlook-2007-part-3.html?anchorAnswerId=24017516#a24017516
VB code to Create Excel file from Outlook 2007 part 2 - https://www.experts-exchange.com/questions/24163884/VB-code-to-Create-Excel-file-from-Outlook-2007-part-2.html?anchorAnswerId=23699562#a23699562
Option Explicit
Sub CreateExcel3()
Dim objExcel As Object
Dim objFSO As Object
Dim objFolder As Object
Dim sExcelFolderPath As String, sExcelFileName As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
sExcelFolderPath = "e:\temp\vba\" 'Folder path
sExcelFileName = "test.xlsx" 'File name
Set objExcel = CreateObject("excel.application")
On Error Resume Next
Set objFolder = objFSO.GetFolder(sExcelFolderPath) 'Set the folder path
On Error GoTo 0
If objFolder Is Nothing Then objFSO.createfolder (sExcelFolderPath) 'Create the folder if not present
objExcel.Workbooks.Add
objExcel.DisplayAlerts = False
objExcel.ActiveWorkbook.SaveAs (sExcelFolderPath & sExcelFileName)
objExcel.Quit
objExcel.DisplayAlerts = True
Set objExcel = Nothing
Set objFSO = Nothing
Set objFolder = Nothing
End Sub
The rule wizard will only display code with a mailitem or contactitem reference therefore:
Sub CreateExcel3(mai as mailitem)
Cannot see how to use it in your sub though ... since there does not seem to be a need for a mailitem. However if the sub is to run for any receipt then that will do it .. once the header is changed the wizard should see the sub.
Chris
Sub CreateExcel3(mai as mailitem)
Cannot see how to use it in your sub though ... since there does not seem to be a need for a mailitem. However if the sub is to run for any receipt then that will do it .. once the header is changed the wizard should see the sub.
Chris
ASKER
Maybe I'm not clear enough in my description.
I'm going to set up a rule which will process incoming email base on the sender then the rule should execute that code.
I'm going to set up a rule which will process incoming email base on the sender then the rule should execute that code.
ASKER
chris_bottomley,
I changed my line 3 to "Sub CreateExcel3(mail As MailItem)" and it showed in the script list as "CreateExcelProject.Create Excel3". So I setup the rule base on this script.
However, when I tried this rule by receiving an email to trigger the rule there was an error saying 'The script "CreateExcelProject.Create Excel3" doesn't exist or is invalid'.
What is wrong?
I changed my line 3 to "Sub CreateExcel3(mail As MailItem)" and it showed in the script list as "CreateExcelProject.Create
However, when I tried this rule by receiving an email to trigger the rule there was an error saying 'The script "CreateExcelProject.Create
What is wrong?
Not sure offhand but check if there is another sub of the same name and if not try moving the cursor to an email in an outlook folder then setting a breakpoint on the first line of your CreateExcel3 sub, >>>
Set objFSO = CreateObject("Scripting.Fi leSystemOb ject")
Now type in the immediate window:
CreateExcel3 application.ActiveExplorer .Selection .Item(1)
If it works stop the macro and let me know the settings on the rule as if it runs the rule declaration would seem to be at fault.
Chris
Set objFSO = CreateObject("Scripting.Fi
Now type in the immediate window:
CreateExcel3 application.ActiveExplorer
If it works stop the macro and let me know the settings on the rule as if it runs the rule declaration would seem to be at fault.
Chris
ASKER
chris_bottomley,
I have to clear the brackets in Sub CreateExcel3(mail As MailItem) first right? If not cleared, I couldn't ran the code coz it'll ask for which macro to run.
When I change it to Sub CreateExcel3(), here is the message I got:
Compile error:
Wrong number of arguments or invalid property assignment
I have to clear the brackets in Sub CreateExcel3(mail As MailItem) first right? If not cleared, I couldn't ran the code coz it'll ask for which macro to run.
When I change it to Sub CreateExcel3(), here is the message I got:
Compile error:
Wrong number of arguments or invalid property assignment
NO, don't change the sub, the whole idea is to test it as it would be called by the rule. Re-instate the sub as Sub CreateExcel3(mail As MailItem) ... i'm not sure mail is a good choice for the varname though ... i usually use mai - No L.
Then press enter on the line in the immediate window as suggested~:
CreateExcel3 application.ActiveExplorer .Selection .Item(1)
Chris
Then press enter on the line in the immediate window as suggested~:
CreateExcel3 application.ActiveExplorer
Chris
ASKER
I did as directed and got a compile error: expected variable or procedure, not module.
Here is my rule:
Apply this rule after the message arrives
from offa
and on this machine only
run CreateExcelProject.CreateE xcel3
Then I tried to sent an email to myself to test whether the rule is working. When the email arrived the rule error I described above came out even though I put a breakpoint on the Set objFSO = CreateObject("Scripting.Fi leSystemOb ject"). Then I press enter on the immediate window.
Here is my rule:
Apply this rule after the message arrives
from offa
and on this machine only
run CreateExcelProject.CreateE
Then I tried to sent an email to myself to test whether the rule is working. When the email arrived the rule error I described above came out even though I put a breakpoint on the Set objFSO = CreateObject("Scripting.Fi
SUb CreateExcel3 does exist in a normal code module called "CreateExcelProject" in outlook?
Chris
Chris
ASKER
What do you mean by normal code?
CLutching at straws ... the sub could be in the outlooksession code module, a class module or a code module.
I haven't tested to be sure though I assume it must be in a normal code module to be visible to the riules wizard but I ask teh question as I may have missed another option so seeking conformation that it's in a suitable module.
Chris
I haven't tested to be sure though I assume it must be in a normal code module to be visible to the riules wizard but I ask teh question as I may have missed another option so seeking conformation that it's in a suitable module.
Chris
Can you supply your sub as modified as well looking for what might be the problem as the code should run ok as far as I can see.
Chris
Chris
ASKER
This CreateExcel3 is in the module under CreateExcelProject . I'll attach the print screen for you to see.
If I used Sub CreateExcel3() the code will run straightaway but won't show in rule wizard's script option.
If I changed it to Sub CreateExcel3(mai As MailItem) when I ran it'll ask me to choose which Macro to run.
CreateExcelProject.jpg
If I used Sub CreateExcel3() the code will run straightaway but won't show in rule wizard's script option.
If I changed it to Sub CreateExcel3(mai As MailItem) when I ran it'll ask me to choose which Macro to run.
CreateExcelProject.jpg
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Chris,
I'm really happy when I tried the code again and it works like a charm. :)
I'm really happy when I tried the code again and it works like a charm. :)
ASKER
Chris,
Could you please explain more regarding the naming conflict?
Thanks again.
Could you please explain more regarding the naming conflict?
Thanks again.
ASKER
Continue to "VB code to Create Excel file from Outlook 2007 part 5 - Getting email sender name and change the worksheet name"
https://www.experts-exchange.com/questions/24314098/VB-code-to-Create-Excel-file-from-Outlook-2007-part-5-Getting-email-sender-name-and-change-the-worksheet-name.html
https://www.experts-exchange.com/questions/24314098/VB-code-to-Create-Excel-file-from-Outlook-2007-part-5-Getting-email-sender-name-and-change-the-worksheet-name.html
http://www.outlookcode.com
http://www.slovaktech.com/code_samples.htm