无效的字符串限定符.添加Outlook VBA



你们都帮了我这么多忙,我想知道我是否可以再麻烦你们一点。我几乎完成了从VB.net到Outlook的VBA转换,为了完成这一点,我需要一些关于具体一段代码返回的信息。如果你们都能帮忙解决这个问题,问题就会消失;如果没有,我可能需要一些帮助来处理这个无效限定符错误。

根据我的理解,我在VBA中声明了一个'数组',命令如下:

Dim Computers(1, 1) As String

生成一个2x2数组。然后我尝试像这样填充它:

Computers.Add ComputerName, ErrorState

其中ComputerName和ErrorState是我已经填充的变量。这就导致了错误。我将在下面提供整个相关部分。我需要知道outlook收件箱中有多少相关的邮件,这意味着要检查它们是否在今天的日期由正确的发件人发送。我需要这个,以便在数组计算机上得到正确的尺寸。(数组现在被填充,因为我知道正确的尺寸,但在实践中我不会。)我拿了一段我通过谷歌找到的代码,脚本字典输出,但我不完全理解它。我只需要电子邮件的数量,不需要任何无关的文本,并且我希望调试行能够告诉我需要哪个命令返回数字,而不是其他。不幸的是,由于上面的错误,我无法到达这一行。即使逐步执行代码,它告诉我的第一件事就是这里有一个问题。下面是整个相关部分。我知道格式是有问题的,但我只与VB工作。. NET 4天,这是我与VBA工作的第二天,所以我还没有完全放下一切。这里有一些无关的东西,我很确定,但我没有经验来判断一些东西是否相关,所以我把它们都留下了。很抱歉这么长!

Private Sub Main()
    Dim objOutlook As Outlook.Application
    Dim Inbox As Outlook.MAPIFolder
    Dim InboxItems As Outlook.Items
    Dim Mailobject As Object
    Dim strDate As String
    Dim ComputerName As Object
    Dim ErrorState As Object
    Dim DateToday As String: DateToday = Format(Date, "yyyy/MM/dd")
    Dim SenderEmail As String
    Dim Computers(1, 1) As String
    Dim compLength As Integer
    Dim disabledList As Collection
    Dim enabledList As Collection
    Dim unknownList As Collection
    Dim notpresentList As Collection
    Dim problemList As Collection
    Dim cArrayLength As Integer
    Dim I As Integer
    Dim J As Integer
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Outlook.Recipient
    Dim EmailCount As Integer
    Dim compArray() As String
    '\ load csv declarations
    Dim file_name As String
    Dim fnum As Integer
    Dim whole_file As String
    Dim lines As Variant
    Dim one_line As Variant
    Dim num_rows As Long
    Dim num_cols As Long
    Dim R As Long
    Dim C As Long
    Set disabledList = New Collection
    Set enabledList = New Collection
    Set unknownList = New Collection
    Set notpresentList = New Collection
    Set problemList = New Collection
    '\\
    '\Retrieve info from outlook, add to sorted list Computers
    '\\
    objOutlook = CreateObject("Outlook.Application")
    Inbox = objOutlook.GetNamespace("Mapi").GetDefaultFolder(6)
    InboxItems = Inbox.Items
    InboxItems.SetColumns ("SentOn")
    Dim myItems As Outlook.Items
    Dim dict As Object
    Dim msg As String
    Set dict = CreateObject("Scripting.Dictionary")
    myItems.SetColumns ("SentOn")
    EmailCount = InboxItems.Count
    For Each Mailobject In InboxItems
        strDate = GetDate(Mailobject.SentOn)
        If Not dict.Exists(strDate) Then
        dict(strDate) = 0
        End If
        dict(strDate) = CLng(dict(strDate)) + 1
        Next Mailobject
    '\ need redo to assign number of objects to CompLength
    msg = ""
    For Each o In dict.Keys
        msg = msg & o & ": " & dict(o) & " items" & vbCrLf
        Next
    Debug.Print msg
    For Each Mailobject In InboxItems
        ComputerName = Mailobject.Subject
        ErrorState = Mailobject.Body
        strDate = GetDate(Mailobject.SentOn)
        SenderEmail = Mailobject.SenderEmailAddress
        If strDate = DateToday And SenderEmail = "itadmin@email.org" Then
            '\ Syntax is (key, value)
            Computers.Add ComputerName, ErrorState
        End If
        'MsgBox(Mailobject.Subject)
        'MsgBox(Mailobject.SenderName)
        'MsgBox(Mailobject.To)
        'MsgBox(Mailobject.Body)
    Next Mailobject 

这个网站非常有帮助,不仅是我提问的地方,也是我找到相关信息的地方,而不必麻烦你们所有人。不幸的是,我经常不得不麻烦你们,但每次你们都非常友好和乐于助人。我要为此感谢你们

您正在尝试使用集合中的Add()方法来分配数组中的元素。要在二维数组中分配元素,您可以使用arr(a,b)=someValue,其中a和b是数值。——蒂姆·威廉姆斯

问题没有答案,但是问题在评论中解决了

最新更新