你们都帮了我这么多忙,我想知道我是否可以再麻烦你们一点。我几乎完成了从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是数值。——蒂姆·威廉姆斯
问题没有答案,但是问题在评论中解决了