Hallo zusammen,
vorab erkläre ich zum Verständnis kurz die das Problem, das ich mit VBA Lösen möchte:
An einem Bürorechner wird regelmäßig mit einer Excel-Tabelle gearbeitet.
Die Inhalte eines Tabellenblattes sollen möglichst sychnron auf einem Rechner in der Produktion des Unternehmens angezeigt werden.
In der Produktion ist wichtig, das die Zahlen möglichst aktuell sind. Das heißt, eine Änderung auf dem Bürorechner soll möglichst zeitnah auch auf dem Rechner in der Produktion angezeigt werden. Änderungen an den Daten werden in der Produktion nicht vorgenommen.
Die Datei liegt auf einem Zentralen Netzlaufwerk, ist dadurch von beiden Rechnern erreichbar. In dein Eigenschaften der Datei ist die option der gemeinsamen Bearbeitung aktiviert.
Nach versuchen und Internetrecherchen ist dieser Code dabei entstanden:
Sub zettel_laden()
Dim datei As String
Dim ordnerpfad As String
Dim quellblatt As String
On Error GoTo Errhandler
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.OnTime Now + TimeValue("00:00:30"), "zettel_laden"
ordnerpfad = "d:\ablage"
quellblatt = "Waren"
datei = ordnerpfad & "\" & "aktuell.xls"
Set ext_wb = Workbooks.Open(datei, , True)
ext_wb.Sheets(quellblatt).Range("A1:Z500").Copy
ThisWorkbook.Sheets("Import").Range("A1:Z500").PasteSpecial
ThisWorkbook.Sheets("Import").Range("A:Z").PasteSpecial Paste:=8
ext_wb.Sheets(quellblatt).Rows("1:1000").Copy
ThisWorkbook.Sheets("Import").Range("A1").PasteSpecial Paste:=xlFormats
ext_wb.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub
Errhandler:
Cells.Clear
Cells(5, 4).Value = "Fehler im Abruf"
End Sub
Auf dem Produktionsrechner wird ein eigentlich leeres Exel Dokument gestartet, das die Prozedur "zettel_laden direkt beim öffnen ausführt.
Innerhalb der Prozedor habe ich dann einen neuaufruf alle 30 Sekunden gemacht.
Problem:
Grundsätzlich funktioniert es, die Daten werden angezeigt, und auch aktualisiert. Aber mehrmals am Tag bleibt das Script stehen, und hat einem Fehler an der Stelle
Set ext_wb = Workbooks.Open(datei, , True)
Der Fehler lautet,
Der Fehler lautet, dass die Methode "Open" für das Objekt "Workbooks" nicht ausgeführt werden kann. Die Netzwerverbindung ist allerdings permanent vorhanden. Der Fehler taucht auch auf, wenn der Bürorechner sogar ausgeschaltet ist, und somit von niemanden auf die Quell-Excel Datei zugegriffen wird.
Hat jemand eine Idee warum das Open sporadisch nicht funktioniert. Oder gibt es für den "Reload" alle 30 Sek. eine elegantere Methode, als die komplette Prozedur jedes mal erneut aufzurufen?
Danke vorab für die Hilfe...
Gruß
Christoph
|