Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 1004 OLE Object

Laufzeitfehler 1004 OLE Object
16.08.2021 07:17:57
Sebastian
Hallo VBA Genies,
ich hab leider ein kleines aber nerviges Problem
Ich hab eine große Arbeitsmappe mit mehrern Aktiv X Steuerelemensten programmmiert. Diese Arbeitsmappe muss von mehrern Nutzern gleichzeitig bearbeitet werden.
Dies funktioniert auch ohne Probleme. Das nervige Problem hab ich mit den Steuerelementen (glaub ich).
Bei der vorherigen Version der Arbeitsmappe haben sich die Positionen, Größe und Schriften der Steuerelemete immer wieder bei den Usern geändert. Um dieses in Zukunft zu vermieden, hab ich in der neuen Version ein Modul geschrieben, sodass die Buttons immer an der selben Stelle, Größe und Schriftart bleiben. Auch dies Funktioniert, solang ich der einzige User bin.
Gebe ich jedoch die Mappe für mehrere Nutzer frei, kommt folgende Fehlermeldung:
Laufzeitfehler 1004:
Die Top-Eigenschaft des OLEObject-Objektes kann nicht festgesetzt werden.
Leider kann ich die Mappe nicht hochladen, da diese zu groß ist.
Anbei das Makro auf den ich den Fehler zurückführe:
Makro hinter dem Button

Ansicht Leitstand
Private Sub AnsichtLS_Click()
Range("A4").Select
ActiveWindow.FreezePanes = True
Range("A:AJ").EntireColumn.Hidden = False
Range("I:I").EntireColumn.Hidden = True
Range("K:K").EntireColumn.Hidden = True
Range("O:T").EntireColumn.Hidden = True
Range("Y:AI").EntireColumn.Hidden = True
AutoFilterEinschalten1
Call Buttonfixierung
End Sub
'
Makro hinter AutoFilterEinschalten1 --> in einem Modul hinterlegt

Sub AutoFilterEinschalten1()
With Steuerung
If Not .AutoFilterMode Then .Rows(3).AutoFilter
Cells.EntireRow.Hidden = False
If IsEmpty([A4]) Then
[A4].Select
Else
[A4].End(xlDown).Offset(1).Activate 'Erste leere Zelle der Spalte A aktivieren
'Die letzten 2 Einträge anzeigen und Bildschirm rollen :
If ActiveCell.Row > 2 Then ActiveWindow.ScrollRow = ActiveCell.Row - 15
End If
Cells.EntireRow.Hidden = False
End With
End Sub
Makro hinter Buttonfixierung --> Modul

Sub Buttonfixierung()
'Buttons fixieren
With Steuerung
'Ansichtsbuttons
With .AnsichtLS
.Top = 40: .Left = 7.5
.Width = 129.75: .Height = 30
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
With .AnsichtSL
.Top = 75: .Left = 7.5
.Width = 129.75: .Height = 30
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
With .AnsichtVoll
.Top = 109.5: .Left = 7.5
.Width = 129.75: .Height = 30
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
'Info Eingänge
With .Info_geplante_Eingänge
.Top = 75: .Left = 170
.Width = 129.75: .Height = 60
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
'Datenerfassung
With .Datenerfassung1
.Top = 40: .Left = 330
.Width = 199.8: .Height = 30
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
'Schleusenübernahme
With .Schleusenübernahme
.Top = 75: .Left = 330
.Width = 199.8: .Height = 30
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
'Zeitstempel
With .Zeitstempel
.Top = 75: .Left = 590
.Width = 345: .Height = 30
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
'Clear
With .Clear
.Top = 109.5: .Left = 590
.Width = 345: .Height = 30
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
'Tagesabschluss
With .Tagesabschluss
.Top = 40: .Left = 590
.Width = 345: .Height = 30
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
End With
With Produktionsanpassung
'Ansichtsbutton
With .Ansicht2
.Top = 125: .Left = 7.5
.Width = 150: .Height = 40
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
'Zeitstempel
With .Zeitstempel2
.Top = 125: .Left = 250
.Width = 502: .Height = 40
.Font.Name = "Arial"
.Font.Size = 16
.Font.Bold = True
End With
'Datum
With .Datum
.Top = 175.5: .Left = 4.5
.Width = 79.5: .Height = 33
.Font.Name = "Arial"
.Font.Size = 14
End With
'User
With .User
.Top = 175.5: .Left = 836.25
.Width = 79.5: .Height = 33
.Font.Name = "Arial"
.Font.Size = 14
End With
'Kostenstelle
With .Kostenstellen
.Top = 125.5: .Left = 761
.Width = 166: .Height = 39.75
.Font.Name = "Arial"
.Font.Size = 14
End With
End With
End Sub
Ich hoffe mir kann jemand helfen.
Vielen Dank

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004 OLE Object
16.08.2021 08:13:53
Oberschlumpf
Hi Sebastian
Leider kann ich die Mappe nicht hochladen, da diese zu groß ist.
Aber du kannst ja eine Bsp-Datei mit viel weniger Bsp-Daten, aber durchaus mit einigen ActiveX-Elementen und natürlich deinem Code erstellen.
Ja, dadurch kann es vielleicht etwas länger dauern, bis wirklich hilfreiche Antworten hier ankommen, weil du diese Textdatei vor dem Upload ja auch erst mal freigeben und von/bei 1 oder 2 Kollegen testen (lassen) musst.
Aber wie sollen wir dir ohne Datei helfen können bei so einem Problem - nur der Code allein wird hier - vielleicht - nicht helfen.
Ich schreib deswg vielleicht, weil ich natürlich nicht beurteilen kann, ob es nicht doch jemanden gibt, der dir helfen kann.
So kannst du natürlich auch noch etwas warten - oder du erstellst die Bsp-Datei schon mal....so bist du während des Wartens nicht untätig ;-) Und sollte bis zum Fertig deiner Datei keiner geantwortet haben, kannst du die Datei hier sofort per Upload zeigen.
Ciao
Thorsten
Anzeige
AW: Laufzeitfehler 1004 OLE Object
16.08.2021 08:25:44
ChrisL
Hi Sebastian
Ohne der Sache im Detail nachzugehen oder Tests auszuführen, vermute ich folgende Ursache:
https://support.microsoft.com/de-de/office/informationen-zum-feature-freigegebene-arbeitsmappe-49b833c0-873b-48d8-8bf2-c1c59a628534
Nicht unterstütze Features
Einfügen oder Ändern von (Bildern oder) anderen Objekten

Ich denke am MS Standard kann man nichts ändern, aber vielleicht kann man das Problem an der Wurzel packen. Ist ja nicht normal, dass sich die Objekte in einer geschützten Mappe einfach so ändern.
cu
Chris
Anzeige
Ist ja nicht normal,
16.08.2021 12:59:25
Rudi
Hallo Chris,
leider doch.
Das Problem existiert seit Einführung der ActiveX-Steuerelemente. Da kann man nur auf die alten Formular-Elemente ausweichen.
Gruß
Rudi
AW: Ist ja nicht normal,
16.08.2021 13:37:24
ChrisL
Hi
Danke Rudi für den Hinweis.
Ich war gedanklich bei der Position und der Steuerelement-Eigenschaft, Objektpositionierung. Das eigentliche Problem hatte ich schon lange nicht mehr und daher verdrängt :)
https://stackoverflow.com/questions/1573349/excel-the-incredible-shrinking-and-expanding-controls
In der vorliegenden Konstellation scheint sich tatsächlich eine Umstellung auf Formularsteuerelemente anzubieten.
Interessant fand ich zudem folgenden Beitrag im Link. Auto-Übersetzung:
Die Ursache scheint sich auf jedes Setup zu beziehen, bei dem Bildschirme in einer anderen als ihrer nativen Auflösung verwendet werden. Dies kann leicht passieren, wenn ein Benutzer einen externen Monitor an einen Laptop anschließt und die resultierende Bildschirmkonfiguration nicht sorgfältig auswählt. Wenn beispielsweise ein Laptop an einen Projektor angeschlossen ist (vielleicht ein alter mit einem nativen 1024 x 768-Display), der Laptop jedoch 1280 x 800 groß ist und der Benutzer das Display dupliziert, anstatt es zu erweitern (Einstellungen in "Connect to ein Beamer" oder "Anzeige"-Bedienfeld in Windows 7), ist das Ergebnis ein unvorhersehbares und normalerweise unbefriedigendes Bild auf beiden Bildschirmen mit beiden in nicht nativen Auflösungen. Wir haben festgestellt, dass diese Einstellungen fast immer ernsthafte Probleme mit Excel-Schaltflächen, insbesondere ActiveX-Steuerelementen, verursachen. Manchmal schrumpfen sie bei wiederholten Klicks zur Unlesbarkeit; andere Male werden sie erweitert, um den gesamten Bildschirm abzudecken.
Meistens sehen wir das Problem nicht, wenn wir Benutzer anweisen, die Anzeigeerweiterungseinstellung zu verwenden und das Ergebnis zwei Bildschirme sind, die beide native Auflösungen verwenden.

Kurz: Anzeige erweitern anstelle duplizieren
Die Anzeige zu duplizieren ergibt bis auf wenige Situation sowieso kaum Sinn. Vielleicht wäre der Benutzer dankbar, wenn man mal die Anzeigeeinstellungen konfigurieren würde.
Natürlich kann ich auch nicht mit Sicherheit sagen, ob sich das Problem damit lösen lässt (insbesondere in Zusammenhang mit einer freigegebenen Mappe), aber die Erklärung als möglich Ursache scheint mir plausibel.
cu
Chris
Anzeige
AW: Laufzeitfehler 1004 OLE Object
16.08.2021 13:47:53
Sebastian
Hallo ihr drei,
danke für euere Hilfe. Ich dachte mir fast, dass es nicht ohne Upload geht.
Ich hab die Datei soweit abgespeckt das ihr es probieren könnt
Die Arbeitsmappe muss aber freigegeben sein. Bei Exclusivnutzung kommt der Fehler nicht.
https://www.herber.de/bbs/user/147650.xlsm
Danke nochmal
AW: Laufzeitfehler 1004 OLE Object
16.08.2021 14:50:59
ChrisL
Hi
Meine Firewall verbietet leider den Download von Makro-Dateien, aber es scheint offensichtlich, dass es sich wie erwähnt um ein "Nicht unterstütze Features" handelt.
cu
Chris
AW: Laufzeitfehler 1004 OLE Object
16.08.2021 16:28:39
Sebastian
Hy Chris du hat aber ne komische Firewall.
Nur wie kann es sein, dass es im Einzelmodus klappt und bei der Freigabe nicht. Ich hab nur definiert wo der Button genau sein soll, wie groß und welche Schrift.
Anzeige
AW: Laufzeitfehler 1004 OLE Object
16.08.2021 19:13:25
ChrisL
Hi Sebastian
Zwar nervig, aber nicht unbedingt komisch. Ich kann gut verstehen, dass sich Unternehmen vor Makroviren schützen.
Der Test (in XL2016) war auch ohne deine Beispieldatei schnell gemacht.

Tabelle1.CommandButton1.Top = 1
Sobald man die Datei freigibt, kommt die erwähnte Fehlermeldung.
Wieso MS manche Features unterstützt und andere nicht (siehe Link im alten Beitrag), müsstest du MS fragen. Meine Vermutung lautet wie folgt. Sobald die Datei freigegeben wird, erfolgt eine Synchronisation über mehrere Benutzer. Bearbeiten beispielsweise zwei Benutzer dieselben Daten, kommt sinngemäss die Nachfrage, welche der beiden Eingabe übernommen/gespeichert werden soll. Was bei Daten noch halbwegs machbar ist, scheint mir bei Objekten etwas schwieriger. Benutzer A schiebt den Button nach rechts, gleichzeitig schiebt Benutzer B nach links und Benutzer C ändert die Schriftfarbe (wessen Änderung soll nun übernommen werden?).
Auch in Datenbankanwendungen wie Access, welche per se Multiuser-tauglich sind, können die Benutzer im Mehrfachzugriff nur die nackten Daten bearbeiten und nicht Datenfelder ändern oder Buttons anpassen.
cu
Chris
Anzeige
AW: Laufzeitfehler 1004 OLE Object
17.08.2021 08:52:33
Sebastian
Hallo Chris,
die USer verschieben die Buttons nicht.
Sie änderten ihre größe und aussehen selbständig immer beim öffnen der Datei. Wir waren uns alle einig, das dies vermieden werden sollte und somit die Fixierung eingebaut wurde.
Die Fixierung funktioniert soweit auch. Wenn man die fehlermeldung einfach nicht mehr angezeigt bekommen würde, würde das auch helfen. Ist halt nervig.
Gruß
wie schon erwähnt....
17.08.2021 10:48:49
Rudi
...die Größenänderung ist ein Bug.
Und der hat nichts mit Anzeigekonfigurationen zu tun, da er auf dem gleichen Rechner mal auftritt und mal nicht.
Du kannst in freigegebenen Dateien keine Objekte bearbeiten. Dein Code zur Fixierung stellt aber eine Bearbeitung dar. Wenn du nur die Fehlermeldung z.B. mit on Error unterdrückst, hast du nix davon, da die Objekte nicht korrigiert werden.
Letztlich bleibt dir nur, deine ActiveX durch Formularsteuerelemente zu ersetzen. Die haben den Bug nicht.
Gruß
Rudi
Anzeige
AW: wie schon erwähnt....
17.08.2021 14:49:57
Sebastian
Hallo Rudi,
also liegt es an meinem Modul "Buttonfixierung" und der Aktiv X Elemente. Wenn ich es auf Formularelemente umstelle kann ich diese mit einem Makro fixieren bzw. die Eigenschaften der Schrift etc festlegen?
Danke
AW: wie schon erwähnt....
17.08.2021 17:29:53
ChrisL
Hi
Die Eigenschaften von Formularsteuerelementen sollten sich nicht mehr ungewollt verändern d.h. der Bug bestünde damit gar nicht, weshalb auch kein Zurücksetzen per VBA mehr erforderlich ist. Die Eigenschaften werden einmalig und statisch so eingestellt, wie du es gerne möchtest und das Makro "Buttonfixierung" wird überflüssig.
Hypothetisch: Im freigegebenen Modus kannst du auch Formularsteuerelement nicht per VBA ändern. Aber eben, es sollte gar nicht mehr notwendig sein.
cu
Chris
Anzeige
AW: wie schon erwähnt....
18.08.2021 11:27:00
Sebastian
Hallo zusammen,
nochmals vielen Dank. Bau gerade alle um aus Formularelement und der Bug ist wie ihr sagtet weg.
Danke nochmals
AW: Laufzeitfehler 1004 OLE Object
16.08.2021 17:32:57
Oberschlumpf
Hi Sebastian,
ich kann alle Dateien runterladen, mir wird beim Öffnen deiner auch der von dir genannte Fehler gezeigt.
Will ich aber den VBE öffnen, damit ich mir deinen Code ansehen kann, wird mir das hier gezeigt:
Userbild
Hast du den Code mit Passwort geschützt?
Dann lösch bitte das PW in der Testdatei, speichern und erneut uploaden.
Wenn du aber den Code nicht mit PW geschützt hast und das nicht-Anzeigen des Codes auch mit der "alten Freigabe" zusammenhängt, dann hab ich keine weitere Idee, außer, du "steigst um" auf den Vorschlag der Datei von "alter Freigabe" auf OneDrive, wie unter ÜBERPRÜFEN zu sehen:
Userbild
Oder eben folge einer Idee der anderen Antworter.
Ciao
Thorsten
Anzeige
Korrektur...
16.08.2021 17:52:34
Oberschlumpf
...aber trotzdem noch keine Lösung ;-)
Hello again,
ich konnte die Freigabe zum Zeitpunkt meiner letzten Meldung nicht aufheben, da die Datei im schreibgeschützten Modus geöffnet war.
Aber nachdem ich die Datei außerhalb eines MS-temp-Ordners speicherte, war das Aufheben der Freigabe kein Problem, und auch der Code wird nun angezeigt.
Da aber tritt nun im Makro "Buttonfixierung" an dieser Stelle
Userbild
der Laufzeitfehler 424 "Objekt erforderlich" auf.
In deiner Bsp-Datei fehlt das Tabellenblatt "Produktionsanpassung"
Ich weiß nicht, ob das auch bei dir der eigentliche Fehler ist, weil du das genannte Tabellenblatt vielleicht gelöscht hast, aber du hast das vergessen.
Na ja, ich weiß auch nicht weiter.
Ciao
Thorsten
Anzeige
AW: Korrektur...
17.08.2021 08:47:58
Sebastian
Hallo Torsten,
ich musst einige Tabellenblätter und Buttons für den upload entfernen, da die Datei zu groß gewesen ist (1,3MB)
Genau durch den Befehl Buttonfixierung wird der Bug ausgelöst, mit dem Laufzeitfehler 1004.
Ich hab die Buttonfixierung angelegt, da ich sich die Button bei den Anderen Nutzern ständig geändert haben. Nun Glaub ich, dass diese Fixierung so nicht möglich ist. Nur bin ich mir dabei nicht sicher.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige