Excel自动化错误运行时错误440-自动更正Outlook约会。开始

Excel自动化错误运行时错误440-自动更正Outlook约会。开始,excel,outlook,excel-2010,vba,Excel,Outlook,Excel 2010,Vba,一段时间以来,我一直在寻找如何解决这个问题。如果不深入了解VBA for outlook,很难找到具体的答案,如果有必要,我会这么做 我有一个日历更新宏,应该将约会添加到outlook日历中。我继承了代码,只是复制并粘贴了它,对单元格引用做了一些小的调整。代码如下: Sub CreateNewItems() Dim dimnum As Integer Dim num As Integer Dim objOL 'As Outlook.Application Dim objApt 'As Ou

一段时间以来,我一直在寻找如何解决这个问题。如果不深入了解VBA for outlook,很难找到具体的答案,如果有必要,我会这么做

我有一个日历更新宏,应该将约会添加到outlook日历中。我继承了代码,只是复制并粘贴了它,对单元格引用做了一些小的调整。代码如下:

Sub CreateNewItems()

Dim dimnum As Integer
Dim num As Integer
Dim objOL   'As Outlook.Application
Dim objApt 'As Outlook.AppointmentItem
Dim objNamespace
Dim strFolderName
Dim objCalendar
Dim objInbox
Dim pctCompl As Single
Const olMeeting = 1
Const olFolderInbox = 6
Const olAppointmentItem = 1 '1 = Appointment
'do not display alerts
Application.DisplayAlerts = False
'do not update screen
Application.ScreenUpdating = False

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Create new Undergrad info session events on Outlook Calendar
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Windows("WebScraper.xlsm").Activate
Sheets("Calendar Info Sess. Bridge").Activate
Set ws = ActiveSheet
ws.Range("B2").Select
ws.Range(Selection, Selection.End(xlDown)).Select
dimnum = Selection.count

ws.Range("B2").Select
num = 0
Do Until num = dimnum
    Set objOL = CreateObject("Outlook.Application")
    Set objNamespace = objOL.GetNamespace("MAPI")
    'Finds your Inbox
    Set objInbox = objNamespace.GetDefaultFolder(olFolderInbox)

    'Gets the parent of your Inbox which gives the Users email
    strFolderName = objInbox.Parent
    Set objCalendar =     objNamespace.Folders(strFolderName).Folders("Calendar").Folders("Undergrad TNRB")

    Set objApt = objCalendar.Items.Add(olAppointmentItem)
    With objApt
        .Subject = ActiveCell.Offset(0, 9).Value
        .Location = ActiveCell.Offset(0, 4).Value
        .start = ActiveCell.Offset(0, 1).Value & ActiveCell.Value
        .End = ActiveCell.Offset(0, 3).Text & ActiveCell.Offset(0, 2).Value
        .Save
    End With
    ActiveCell.Offset(1, 0).Select
    num = num + 1
Loop
End Sub
据我所知,问题是在
With
块中,它应该是
.Start
,而不是
.Start
。不幸的是,每次我尝试大写时,VBA都会自动更正回
.start
。我确实有一些其他的sub在这段代码之前运行,但是我删除了我使用单词“start”的任何实例,无论它是否大写、注释或可执行代码,所以我不会在不知情的情况下创建任何变量,这一行将尝试引用(据我所知)。我想可能是
.Start
是一个VBA定义的函数,但我不知道这是否正确,或者需要什么约定才能将约会保存到outlook


您可以看到,我在前几行获得了工作表中的行数,然后我对工作表的每一行重复
Do
循环。正如在
With
块中直观显示的那样,右侧的9列是约会的主题行,右侧的4列是约会的位置,活动列是约会开始的日期,下一列是约会结束的日期(所有事件在同一日期开始和结束),右边的第2列是开始时间,右边的第3列是结束时间。

当我运行代码时,时间列(右边的第1列和右边的第3列)很窄,从视觉上看,这些列显示了#s(就像excel在列未完全展开时所做的那样)。出于某种原因,代码提取的是#s,而不是实际值。它可能和.Text有关,但当我使用.Value时,它仍然不起作用。因此,如果其他任何人有此问题,请尝试对过于狭窄而无法从中提取值的列执行Columns.entireclumn.Autofit

您是否有名为
Start
的模块/函数/过程。如果没有,则只需在程序开始时键入
Dim Start
,然后按enter键。然后删除该行。现在检查这似乎是个好主意--所有
.start
行都改为
.start
。然而,当我运行这行代码时,我得到了一个“运行时错误‘440’:自动化错误”。。。您是遇到语法错误还是自动错误?我还尝试了
Dim Start As String
,但也没有成功。我想知道为什么您必须定义开始,而不是主题、位置、结束或保存。不,您不必定义它。我建议这样做,以便资本化能够恢复:)