2013-05-21 3 views
0

У меня есть VB SCRIPT, чтобы создать новые оповещения по электронной почте для дополнительных учетных записей электронной почты в Outlook (2010).Ошибка Visual Basic Compile - недопустимый символ

Теперь это первая часть кода, и при запуске Outlook, он дает мне следующую ошибку:

"Compile Error: Invalid Character"

отладчик подчеркивает _ символ в следующие строки: "sndPlaySoundA" _

'On the next line change the file name and path of the sound you want to play.' 
Public Const SOUND_TO_PLAY = "C:\Windows\Media\Speech On.wav" 
Public Const SND_ASYNC = &H1 

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _ 
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Public Declare Function MessageBox _ 
    Lib "User32" Alias "MessageBoxA" _ 
     (ByVal hWnd As Long, _ 
     ByVal lpText As String, _ 
     ByVal lpCaption As String, _ 
     ByVal wType As Long) _ 
    As Long 


Function OpenOutlookFolder(strFolderPath As String) As Outlook.MAPIFolder 
    ' Purpose: Opens an Outlook folder from a folder path.' 
    ' Written: 4/24/2009' 
    ' Author: BlueDevilFan' 
    ' Outlook: All versions' 
    Dim arrFolders As Variant, _ 
     varFolder As Variant, _ 
     bolBeyondRoot As Boolean 
    On Error Resume Next 
    If strFolderPath = "" Then 
     Set OpenOutlookFolder = Nothing 
    Else 
     Do While Left(strFolderPath, 1) = "\" 
      strFolderPath = Right(strFolderPath, Len(strFolderPath) - 1) 
     Loop 
     arrFolders = Split(strFolderPath, "\") 
     For Each varFolder In arrFolders 
      Select Case bolBeyondRoot 
       Case False 
        Set OpenOutlookFolder = Outlook.Session.Folders(varFolder) 
        bolBeyondRoot = True 
       Case True 
        Set OpenOutlookFolder = OpenOutlookFolder.Folders(varFolder) 
      End Select 
      If Err.Number <> 0 Then 
       Set OpenOutlookFolder = Nothing 
       Exit For 
      End If 
     Next 
    End If 
    On Error GoTo 0 
End Function 

UPDATE: новая ошибка поднялась: (после того, как я установил новый выпуск строки в строке 1 после «sndPl aySoundA "), как refered в Адриан ниже)

"Compile Error Ожидаемый: Конец заявления" и следующее слово подсвечивается: "Публичная"

UPDATE2: Следующая ошибка:

Compile Error : определяются пользователь типа не определен (для «Почтового ящика - SupportDesk \ Входящие»)

Dim objFM1 As FolderMonitor 

Private Sub Application_Quit() 
    Set objFM1 = Nothing 
End Sub 

Private Sub Application_Startup() 
    Set objFM1 = New FolderMonitor 
    'Edit the folder path on the next line as needed.' 
    objFM1.FolderToWatch OpenOutlookFolder("Mailbox - supportdesk\Inbox") 
    End Sub 
+0

Я не знаком с FolderMonitor. Является ли это встроенным классом Outlook или отдельной библиотекой? Если это отдельно, добавили ли вы ссылку на него в разделе «Инструменты»> «Ссылки»? – Adrian

+0

нет, я не думаю, что сделал ... Посмотрим, что смогу сделать – DextrousDave

ответ

1

в соответствии с образцом кода предоставленными Вами там вам нужна новая строка сразу после _. Символ подчеркивания является продолжением строки в VBA (это то, что вы используете, а не VBScript. Немного разные звери), и поэтому требуется, чтобы вы продолжали на следующей строке, а не на той же строке. Таким образом, вместо

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _ (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Public Declare Function MessageBox _ 
Lib "User32" Alias "MessageBoxA" _ 
    (ByVal hWnd As Long, _ 
    ByVal lpText As String, _ 
    ByVal lpCaption As String, _ 
    ByVal wType As Long) _ 
As Long 

вы должны иметь

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _ 
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long 

Public Declare Function MessageBox _ 
Lib "User32" Alias "MessageBoxA" _ 
    (ByVal hWnd As Long, _ 
    ByVal lpText As String, _ 
    ByVal lpCaption As String, _ 
    ByVal wType As Long) _ 
As Long 

EDIT: я, очевидно, не читал весь путь до конца этого примера линии, иначе я увидел бы, что пример каким-то образом удалось смять две объявления функций на одну строку, а также использовать недопустимое позиционирование разделителя строк. Я исправил это сейчас.

+0

Прохладный спасибо. Но теперь возникла другая ошибка: «Compile Error Expected: End of statement» и следующее слово выделено: «Public» ... Во второй строке (... As Long Public ...) – DextrousDave

+0

@DextrousDave Итак, мы отредактировали ответ, чтобы исправить это. Duh. Я действительно должен был прочитать до конца этой строки. – Adrian

+0

спасибо. Кажется, что все ошибки теперь исправлены, за исключением одного, но это не синтаксис: в нем написано: «Определенный пользователем тип не определен» для следующей строки: objFM1.FolderToWatch OpenOutlookFolder («Почтовый ящик - служба поддержки \ Входящие») – DextrousDave

Смежные вопросы