1. Wenn ich nach dem Ausführen des ersten Makros das Spreadsheet schliesse, werde ich nicht nur gefragt, ob ich die Änderungen im Spreadsheet sichern möchte, sondern jeweils auch, ob ich die Änderungen in den eingebetteten OLEObjects (XLS-Dateien) sichern möchte??
Verstehe ich nicht, da ich doch die Dateien als OLEObjects mit Link:=False einbette und den Wert aus dem Feld J44 nur auslese. Woraus sind die überflüssigen Meldungen begründet und wie werde ich sie los?
Makro 1:
Sub Alltogether()
Dim fileToOpen As Variant
Dim linkToOpen As Variant
'Stand 05.08.02 D.Schwaner
'Tastenkombination: Strg+z
Select Case Selection.ColumnWidth
Case 10.71
Selection.ColumnWidth = 27.71
Case Else
End Select
'Anzeigen aller XLS-Dateien im Unterverzeichnis zur Auswahl
fileToOpen = Application.GetOpenFilename("XLS Files (*.XLS), *.XLS")
'Wegspeichern des Links, damit das einzubettende OLEObject gefunden wird
linkToOpen = fileToOpen
'Der Dateiname wird als Variable für das IconLabel benötigt
fileToOpen = Dir(fileToOpen)
'Einbetten der ausgewählten Datei als OLEObject, wenn xlicons.exe im gleichen Verzeichnis
'wie die Excel-Datendateien
ActiveSheet.OLEObjects.Add(Filename:=linkToOpen, Link:=False, DisplayAsIcon:= _
True, IconFileName:= _
"xlicons.exe", _
IconIndex:=0, IconLabel:=fileToOpen).Select
'Zelle J44 auswerten
ActiveCell.Formula = "=[" & fileToOpen & "]Tätigkeitsnachweis!J44"
'Verknüpfungen in Wertkopie umwandeln
ActiveWorkbook.BreakLink Name:=linkToOpen, Type:=xlExcelLinks
MsgBox "Gesamtstundenwert aus der Datei " & fileToOpen & " :", vbInformation
End Sub
2.) Sind die OLEObjects im Spreadsheet drin, sollen Sie nach einiger Zeit wieder entfernt werden. Das zweite Makro zeigt mir zwar die Anzahl der OLEObjects im Spreadsheet korrekt an, stolpert dann aber beim Löschen in unregelmäßigen Abständen in folgende Fehlermeldung:
Run-time error 1004: Unable to get the OLEObjects property of the Worksheet class,
Mit unregelmäßigen Abständen meine ich, z.B. manchmal werden 4 von 10 OLEObjects gelöscht, dann die Fehlermeldung. Erneuter Aufruf des Makro, wieder zwei oder drei gelöscht , dann Fehlermeldung etc. Irgendwie werden letztlich alle gelöscht, aber wie klappts, ohne die Fehlermeldungen?
Makro 2
Sub OLEObjekte_löschen()
'Makro zum Löschen aller eingebetteten OLEObjects im aktiven Sheet.
'Stand 05.08.02 D.Schwaner
'Tastenkombination: Strg+k
Dim i As Integer
Dim n As Integer
MsgBox "Es gibt " & ActiveSheet.OLEObjects.Count & _
" OLEObjects in diesem Worksheet. Diese werden jetzt gelöscht."
n = ActiveSheet.OLEObjects.Count
For i = 1 To n
ActiveSheet.OLEObjects(i).Delete
Next i
Selection.ColumnWidth = 10.71
End Sub