2012-10-09 22 views
10

Tôi đã tạo tệp .vbs để tạo thư mục trong Outlook. Tôi đã sao chép hầu hết tập lệnh ngay trong số MSDN và nhận được mã phản hồi 800A0401 "Kỳ vọng kết thúc dự kiến".800A0401 - Dự kiến ​​Kết thúc Tuyên bố

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 

Không bao giờ tạo tập lệnh .vbs trước đây. Không chắc tôi đang thiếu gì.

Windows 7 64 bit và Outlook 2010. Chạy dưới dạng quản trị viên cục bộ.

Trả lời

23

Lỗi này là do bạn không thể làm mờ biến như một điều gì đó đặc biệt trong VBS. Nói rõ ràng hơn là câu lệnh "Dim" được sử dụng mà không xác định loại biến trong VBScript bởi vì tất cả các biến trong VBScript đều tự động có kiểu Biến thể. Nếu bạn cố gắng để Dim một biến như bất cứ điều gì, nó sẽ ném một lỗi.

Thay vào đó, bạn muốn:

Dim myNameSpace 
Dim myFolder 
Dim myNewFolder 

Ngoài ra, bạn dường như đã chỉ sao chép một số VBA từ Outlook và cố gắng chạy nó như VBS.

VBScript không biết cách diễn giải Application.GetNameSpace("MAPI").

Bạn cũng sẽ cần tạo một Ứng dụng Outlook. (. Đó là lý do tôi đã sử dụng CreateObject)

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

Ngoài ra, kể từ khi bạn không thể cung cấp tài liệu tham khảo trong VBS, bạn phải sử dụng kết muộn cho bất kỳ đối tượng Vì vậy, viết lại mã của bạn là như sau:

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

Ồ, không chắc chắn nếu VBScript là trường hợp nhạy cảm bởi bạn có 'myOUtlook' trong dòng" thiết lập "đầu tiên của bạn. – gravyface

+0

Nó không phải, giống như VBA kỹ thuật không phải là trường hợp nhạy cảm. Sự khác biệt là trong VBA IDE sẽ tự động cập nhật bất kỳ mâu thuẫn viết hoa nào. –