2012-10-09 13 views
10

Ho creato un file .vbs per creare una cartella in Outlook. Ho copiato la maggior parte dello script direttamente da MSDN e ottengo una risposta 800A0401 del codice di errore "Expected End of Statement".800A0401 - Attestato di fine previsto

Option Explicit 
Dim myNameSpace As Outlook.NameSpace 
Dim myFolder As Outlook.Folder 
Dim myNewFolder As Outlook.Folder 

Set myNameSpace = Application.GetNamespace("MAPI") 
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox) 
Set myNewFolder = myFolder.Folders.Add("Postini") 

Wscript.Echo "Folder created" 
Wscript.Quit 

Mai creato uno script .vbs prima. Non sono sicuro di cosa mi manchi.

Windows 7 a 64 bit e Outlook 2010. Esecuzione come amministratore locale.

risposta

23

Questo errore è dovuto al fatto che non è possibile attenuare le variabili come qualcosa in particolare in VBS. Ha detto più esplicitamente che l'istruzione "Dim" viene utilizzata senza definire il tipo di variabile in VBScript poiché tutte le variabili in VBScript sono automaticamente di tipo Variant. Se si tenta di attenuare una variabile come qualcosa, genererà un errore.

Invece, si vuole:

Dim myNameSpace 
Dim myFolder 
Dim myNewFolder 

Inoltre, sembra che tu abbia appena copiato alcuni VBA da Outlook e ho cercato di farlo funzionare come VBS.

VBscript non sa come interpretare Application.GetNameSpace("MAPI").

Sarà inoltre necessario creare un'applicazione Outlook. (., Che è il motivo per cui ho usato CreateObject)

dim myOutlook 
set myOUtlook = CreateObject("Outlook.Application") 

Inoltre, dal momento che non è possibile fornire i riferimenti a VBS, è necessario utilizzare l'associazione tardiva per tutti gli oggetti così riscritto il codice è il seguente:

Option Explicit 
Dim myOutlook 
Dim myNameSpace 
Dim myFolder 
Dim myNewFolder 

set myOUtlook = CreateObject("Outlook.Application") 
Set myNameSpace = myOutlook.GetNamespace("MAPI") 
Set myFolder = myNameSpace.GetDefaultFolder(6) '6 is the value of olFolderInbox 
Set myNewFolder = myFolder.Folders.Add("Postini") 
Wscript.Echo "Folder created" 
Wscript.Quit 
+0

Oh, non sono sicuro che se VBScript fa distinzione tra maiuscole e minuscole, hai "myOUtlook' nella tua prima" serie ". – gravyface

+0

Non lo è, proprio come VBA tecnicamente non fa distinzione tra maiuscole e minuscole. La differenza è che in VBA l'IDE aggiornerà automaticamente eventuali incoerenze di maiuscole. –