Ich habe gesucht, wie dieses Problem für einige Zeit behoben werden kann. Es ist schwierig, spezifische Antworten zu finden, ohne tief in VBA eintauchen zu müssen, was ich tun würde, wenn ich müsste.Excel-Automatisierungsfehler Laufzeitfehler 440 - Autokorrektur von Outlook-Termin .Start
Ich habe ein Kalender-Update-Makro, das Termine zu unserem Outlook-Kalender hinzufügen sollte. Ich habe den Code geerbt und ihn einfach kopiert und eingefügt, indem ich kleinere Änderungen an den Zellen vorgenommen habe. Die Codes sind unten:
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
Von dem, was ich sagen kann, das Problem ist, dass in dem With
Block, sollte es .Start
statt .start
sein. Leider, jedes Mal, wenn ich versuche, groß zu schreiben, Autokorrekturen VBA wieder auf .start
. Ich habe einige andere Subs, die vor diesem Code laufen, aber ich habe jede Instanz entfernt, in der ich das Wort "start" verwendet habe, egal ob Groß- oder Kleinschreibung, kommentierter Code oder ausführbarer Code, also erstelle ich keine Variablen, die das nicht wissen Linie würde versuchen zu verweisen (soweit ich das beurteilen kann). Ich dachte, es könnte sein, dass .Start
eine VBA-definierte Funktion ist, aber ich weiß nicht genug, um zu wissen, ob das stimmt, oder was die erforderliche Konvention wäre, um dies zu erhalten, um den Termin in Outlook zu speichern.
Sie können sehen, dass ich die Anzahl der Zeilen im Blatt in den ersten paar Zeilen bekomme, und dann wiederhole ich die Do
Schleife für jede Zeile des Blattes. So wie intuitiv im Block With
, 9 Spalten rechts ist eine Betreffzeile für den Termin, 4 Spalten auf der rechten Seite ist der Ort des Termins, die aktive Spalte ist das Datum des Beginns des Termins, die nächste Spalte ist das Datum, an dem der Termin endet (alle Ereignisse beginnen und enden am selben Datum), die Spalte 2 rechts ist die Startzeit, und die Spalte 3 rechts ist die Endzeit.
Haben Sie ein Modul/Funktion/Prozedur namens 'Start'. Wenn nicht, dann geben Sie am Anfang des Vorgangs einfach "Dim Start" ein und drücken die Eingabetaste. Dann lösche diese Zeile. Überprüfen Sie jetzt –
Es scheint, dass das eine gute Idee war - alle '.start' Linien änderten sich in' .Start'. Wenn ich diese Codezeile durchführe, erhalte ich einen "Laufzeitfehler 440 ': Automatisierungsfehler". –
Jetzt bin ich verwirrt ... Erhalten Sie einen Syntaxfehler oder einen Automatisierungsfehler? –