Ich habe ein funktionierendes Outlook-Makro, das die Aufgabenliste des aktuellen Benutzers in eine Excel-Tabelle exportiert, aber ich möchte es für die späte Bindung für die einfache Verteilung verwenden (dh ich muss anderen Benutzern nicht das Einstellen einer Bibliotheksreferenz usw. erklären.)Konvertierung in späte Bindung verursacht Runtime 1004 Fehler - Outlook
Ich folgte dem Beispiel Convert Early Binding VBA to Late Binding VBA : Excel to Outlook Contacts, um meine Excel-Variablen als Objekte festzulegen.
Unten finden Sie einen Vergleich, wie ich die Variablen deklariert Pre/Post-Bindung Änderung:
'Late binding variables and their early binding equivilants
Dim objExcel As Object 'Dim objExcel As New Excel.Application
Dim exWB As Object 'Dim exWb As Excel.Workbook
Dim sht As Object 'Dim sht As Excel.Worksheet
Dim Range As Object 'Dim Range As Excel.Range
Dim r As Object 'Dim r As Range
Dim cell As Object 'Dim cell As Range
'set application
Set objExcel = CreateObject("Excel.Application")
ich jetzt eine Laufzeit 1004 Fehler im folgenden Abschnitt meines Codes bekommen:
With objExcel.ActiveSheet
Set r = .Range(.Cells(2, col), .Cells(.Rows.Count, col).End(xlUp)) 'runtime 1004 error here after late binding modification
End With
For Each cell In r
s = cell.Text
If Len(Trim(s)) > 0 Then
iloc = InStr(1, s, sChar, vbTextCompare)
If iloc > 1 Then
s1 = Left(s, iloc - 1)
cell.Value = s1
Else
If iloc <> 0 Then
cell.ClearContents
End If
End If
End If
Next cell
y = y + 1
stat_string = ""
End If
Next x
'Autofit all column widths
For Each sht In objExcel.ActiveWorkbook.Worksheets
sht.Columns("A").EntireColumn.AutoFit
sht.Columns("B").EntireColumn.AutoFit
sht.Columns("C").EntireColumn.AutoFit
sht.Columns("D").EntireColumn.AutoFit
sht.Columns("E").EntireColumn.AutoFit
sht.Columns("F").EntireColumn.AutoFit
Next sht
exWB.Save
exWB.Close
Set exWB = Nothing
'this kills the excel program from the task manager so the code will not double up on opening the application
'sKillExcel = "TASKKILL /F /IM Excel.exe"
'Shell sKillExcel, vbHide
objExcel.Application.Quit
Ich habe den Rest des Codes nach der Fehlerzeile eingefügt. Wenn es weitere Laufzeitprobleme gibt, werden sie möglicherweise von den unglaublichen Leuten auf SO übernommen.
Ich gehe davon aus, dass die Methode zur Deklarierung meiner "Range" falsch ist, aber ich bin nicht wirklich sicher warum und daher unsicher, wie ich es beheben kann.
Jeder Körper da draußen mit einem Vorschlag?
Danke!
ahh vergaß diese kleine Kastanie ..... Also sollte ich gerade 'xlUp' als Objekt deklarieren? – scb998
'Const xlUp = -4162', oder definieren Sie eine Enum Ihrer eigenen' Enum XlDirection' ... – ThunderFrame
Legende - Vielen Dank !!! – scb998