# WSH Open Outlook with .attachment (Zip-File)

Hello Experts,

I've a simple wsh/vbs Script which doesn't work. In "Code-Example 1" Outlook doesn't start so I think there must be a problem with the DFile.

My Script create a Zip Archiv and I want to send this Archiv via Outlook respectively open Outlook with the right attachment.

DFile is the 'guilty' item (i.g. DFile = C:\Verschlüsselung\10000\Archiv-10000.Zip"

' Code-Example 1
...
ScriptPath = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))
sStr=Split(ScriptPath,"\")
FolderN=sStr(UBound(sStr)-1)
DFile = ScriptPath & "Archiv-" & FolderN & "-" & ".Zip"
...
Function Send2Outlook (DFile)
Set objOutl = CreateObject("Outlook.Application")
Set objMailItem = objOutl.CreateItem(olMailItem)
Set attachment = objMailItem.Attachments
objMailItem.Display
...
End Function


If I use a simple Filename in attachment.Add it works.


' Code-Example 1
...
Function Send2Outlook ()
Set objOutl = CreateObject("Outlook.Application")
Set objMailItem = objOutl.CreateItem(olMailItem)
Set attachment = objMailItem.Attachments
objMailItem.Display
End Function
...


Why doesn't DFile work in Attachment.Add Statement? It's an $which the absolute Filename and Filepath. I use ByRef and ByVal, delimiter chr(34) but in "Code-Example 1" Outlook doesn't start? Best Regards. reredok LVL 4 IT ConsultantAsked: ###### Who is Participating? Batchelor, Developer and EE Topic AdvisorCommented: "It must be a variant" cannot be true. In almost all cases the real type of the var is what you need. The file parameter can be a string or an Outlook object (hence the var type of variant is allowed here). For other types the Attachment.Add should result in an error message. First step to disect the culprit is to do exactly what I did for test - use a very limited test case and code. If that works, you can try to integrate that into some more code of you, and so on. BTW, if you write DFile = "C:\Verschlüsselung\Archiv-10001-2014-03-24_115211.Zip"  that isn't a variant anymore, but a string. Keep in mind you can't use (force) types for vars in VBS. On another note, why are you providing the "4" as position? I would expect to have a 1 here, as you did not fill in anything in the mail body yet. 0 Batchelor, Developer and EE Topic AdvisorCommented: Maybe it is because you append another dash ("-") to the filename? Your created zip file is searched as C:\Verschlüsselung\10000\Archiv-10000-.Zip, and probably does not exist. It might be generated the same, but that is something we cannot see here. 0 IT ConsultantAuthor Commented: The file exists. The same file can be send via Outlook manually. I added the pathname/filename hard-coded in script and it works fine. I presume that Outlook doesn't start because there must be a diffence between "C:\123456\123456.txt" and "C:\Verschlüsselung\10000\Archiv-10000.Zip" regarding the Outlook.Attachments Statement. Further I used the Filesystemobject in Function call ... with no success. 0 Batchelor, Developer and EE Topic AdvisorCommented: To clarify: You used "C:\Verschlüsselung\10000\Archiv-10000-.Zip" (with the trailing dash) hardcoded, and it worked? 0 IT ConsultantAuthor Commented: Yes. C:\Verschlüsselung\10000\Archiv-10000.Zip not C:\Verschlüsselung\10000\Archiv-10000-.Zip sry the vbs code create a Zip Archiv with winrar: i.e. Zip-Archiv: Archiv-10001-2014-03-24_115211.Zip Syntax: a custom Nummer 10001 Date: 2014-03-24 TimeStamp: 115211 Extension: Zip Result: C:\Verschlüsselung\Archiv-10001-2014-03-24_115211.Zip works: attachment.Add "C:\Verschlüsselung\Archiv-10001-2014-03-24_115211.Zip", olByValue, 4, "Great" works not: attachment.Add DFile, olByValue, 4, "Great" where DFile = "C:\Verschlüsselung\Archiv-10001-2014-03-24_115211.Zip" works not: attachment.Add chr(34) & DFile & chr(34), olByValue, 4, "Great" What's wrong with DFile??? 0 Batchelor, Developer and EE Topic AdvisorCommented: It's best to debug that in Outlook VBA, and that is what I will try to do now. Edit: Works in VBA, as expected. I get the "Der Pfad ist nicht vorhanden" error for non-existing files, and the file attached in a new mail if it exists, with this simple VBA code: Public Sub atttest() Dim DFile As String, objMailItem As MailItem ' DFile = "C:\Verschlüsselung\Archiv-10001-2014-03-24_115211.Zip" DFile = "C:\temp\ee\1.txt" Set objMailItem = CreateItem(olMailItem) objMailItem.Attachments.Add DFile, olByValue, 4, "Great" objMailItem.Display End Sub  What's your default eMail type? HTML, Text or RTF? (The latter has some special features, and should NOT be used). 0 Batchelor, Developer and EE Topic AdvisorCommented: Same with VBS: Option Explicit const olMailItem = 0 const olByValue = 1 Dim DFile, objOutlook, objMailItem ' DFile = "C:\Verschlüsselung\Archiv-10001-2014-03-24_115211.Zip" DFile = "C:\temp\ee\1.txt" set objOutlook = CreateObject("Outlook.Application") Set objMailItem = objOutlook.CreateItem(olMailItem) objMailItem.Attachments.Add DFile, olByValue, 4, "Great" objMailItem.Display  So it must be something else, or RTF. 0 IT ConsultantAuthor Commented: it's wsh vbs code which is controlled by a "file or more file drag 'n' drop" Event. Debug is not so easy and it's impossible for my opinion in Outlook VBA. I don't understand why CreateObject("Outlook.Application").CreateItem(olMailItem).Attachments deals so different between a$ "C:\Verschlüsselung\Archiv-10001-2014-03-24_115211.Zip" and a variant DFile
Which kind of Input is needed? In ms documentation it must be a variant
0

IT ConsultantAuthor Commented:
I rebuild my Code and found a Problem with DFile which was only declared in a vbs function and not in called code. So the scope of this var maybe not well defined... maybe outlook had same problems with this fact. So I <Dim DFile> in "Main-Code" and transmit it up to every called function so to say as dummy
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.