2012-10-09 20 views
10

Utworzono plik .vbs w celu utworzenia folderu w programie Outlook. Skopiowałem większość skryptu bezpośrednio z numeru MSDN i otrzymałem odpowiedź o błędzie "Oczekiwany koniec oświadczenia" 800A0401.800A0401 - Oczekiwany koniec oświadczenia

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 

Nigdy wcześniej nie utworzono skryptu .vbs. Nie jestem pewien, czego mi brakuje.

Windows 7 64-bitowy i Outlook 2010. Działa jako administrator lokalny.

Odpowiedz

23

Ten błąd jest spowodowany tym, że nie można przyciemnić zmiennych jako czegoś szczególnego w VBS. Mówiąc bardziej wyraźnie, instrukcja "Dim" jest używana bez definiowania typu zmiennej w VBScript, ponieważ wszystkie zmienne w VBScript są automatycznie typu Variant. Jeśli spróbujesz przyciemnić zmienną jako cokolwiek, spowoduje to błąd.

Zamiast tego chcesz:

Dim myNameSpace 
Dim myFolder 
Dim myNewFolder 

Dodatkowo, wydaje się, że tylko niektóre VBA skopiowane z programu Outlook i próbował uruchomić go jako VBS.

VBscript nie wie, jak interpretować Application.GetNameSpace("MAPI").

Należy również utworzyć aplikację Outlook. (., Dlatego użyłem CreateObject)

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

Ponadto, ponieważ nie można dostarczyć referencje w VBS, trzeba użyć późnego wiązania dla dowolnych obiektów Więc ponownie napisany kod jest następujący:

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, nie jestem pewien czy VBScript rozróżnia wielkość liter, ponieważ masz 'myOUtlook' w twojej pierwszej linii" set ". – gravyface

+0

Nie jest, tak jak VBA technicznie nie jest rozróżniana wielkość liter. Różnica polega na tym, że w VBA IDE automatycznie aktualizuje wszelkie niespójności w kapitalizacji. –