Anzeige
Archiv - Navigation
1364to1368
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

Arbeitsmappe im Hintergrund bearbeiten

Arbeitsmappe im Hintergrund bearbeiten
16.06.2014 09:34:15
Erik
Hallo liebe Gemeinde,
ich habe eine Excel-Arbeitsmappe auf einem Server unseres Firmenintranets liegen und möchte diese Arbeitsmappe im Hintergrund öffnen, bearbeiten, speichern und schließen, ohne dass der Anwender/die Anwenderin davon Kenntnis erlangt (Es werden lediglich statistische Daten festgehalten).
Folgenden Code verwende ich bisher:

Option Explicit
Public Sub SaveInNetwork()
Dim Filepath As String
Dim CheckFilepath As Boolean
Dim Source As Object
Dim myValue As Variant
Filepath = Sheets("Tabelle2").Range("B2").Value 'In dieser Zelle befindet sich ein bereits  _
validierter Pfad zur Arbeitsmappe
Debug.Print "Filepath " & Filepath
CheckFilepath = False
Debug.Print "CheckFilepath: " & CheckFilepath
Application.ScreenUpdating = False
'Prüft, ob die Datei existiert bzw. ob die Datei erreichbar ist
If Dir(Filepath) = "" Then
CheckFilepath = False
Else
CheckFilepath = True
End If
Debug.Print "CheckFilepath: " & CheckFilepath
Set Source = GetObject(Filepath).Worksheets("Tabelle1")
myValue = InputBox("Was soll ich da reinschreiben?")
With Source
.Range("A1").Value = myValue
End With
Debug.Print "Filepath: " & Filepath
Workbooks(Filepath).Close SaveChanges:=True
Application.ScreenUpdating = True
Set Source = Nothing
End Sub

Die folgende Anweisung gibt leider einen Fehler aus:

Workbooks(Filepath).Close SaveChanges:=True

Die Fehlermeldung lautet:

Laufzeitfehler 9: Der Index liegt außerhalb des gültigen Bereichs.

Ich habe bereits versucht, die ausgeblendete Arbeitsmappe mit "source.visible = true" und "activewindow.visible = true" einzublenden - bisher leider ohne Erfolg.
Ich habe noch eine zweite Frage: Wie kann ich dieses Makro nach spätestens 30 Sekunden automatisch abbrechen/killen? Hintergrund: Die Arbeitsmappe liegt auf einem Server, zu dem die Verbindung manchmal sehr sehr sehr sehr sehr langsam ist bzw. der Zugriff extrem lange dauert (passiert selten, kommt aber vor).
Ich möchte damit die Möglichkeit einräumen, dass der Nutzer die Aktion zu einem späteren Zeitpunkt ausführt.
Dank gebührt im Voraus!
Gruß
Erik

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsmappe im Hintergrund bearbeiten
16.06.2014 09:37:54
Rudi
Hallo,
Filepath enthält den kompletten Dateinamen, deshalb geht's schief.
Source.Parent.Close True
Gruß
Rudi

AW: Arbeitsmappe im Hintergrund bearbeiten
16.06.2014 09:59:53
Erik
Lieber Rudi,
merci! Kannst du mir ggf. noch bei meiner Frage helfen? Wie kann ich das Makro nach einer Zeit t automatisch abbrechen lassen. Ich habe mir schon die Doku zu Application.OnTime durchgelesen, traue mich - konfrontiert mit einigen Warnungen - noch nicht heran. :)
Danke für die Unterstützung!
Gruß
Erik

AW: Arbeitsmappe im Hintergrund bearbeiten
16.06.2014 10:14:29
Rudi
Hallo,
ich weiß nicht, wie das gehen soll, einen laufenden Code (öffnen der Mappe) per Code zu unterbrechen. VBA kann kein Multitasking.
Gruß
Rudi

Anzeige
AW: Arbeitsmappe im Hintergrund bearbeiten
16.06.2014 10:23:36
Nepumuk
Hallo,
welche Aktion in der Prozedur dauert "so lange" ?
Gruß
Nepumuk

AW: welche Prozedur...
16.06.2014 10:29:41
Rudi
Hallo Nepumuk,
anscheinend das Öffnen der Mappe:
Die Arbeitsmappe liegt auf einem Server, zu dem die Verbindung manchmal sehr sehr sehr sehr sehr langsam ist bzw. der Zugriff extrem lange dauert (passiert selten, kommt aber vor).
Gruß
Rudi

AW: welche Prozedur...
16.06.2014 11:16:53
Nepumuk
Hallo,
achso, das Laden der Mappe. Na dann einfach eine On Error Goto-Anweisung an den Anfang des Codes und dem User einen Hinweis geben dass er das Ganze per ESC-Taste abbrechen kann.
Gruß
Nepumuk

Anzeige
AW: welche Prozedur...
16.06.2014 19:02:27
Erik
Hallo Nepumuk und Rudi,
vielen Dank für eure Tipps. Werde ich zeitnah testen. Sagt mal, würde Application.OnTime bei meinem Anliegen etwas nützen? Im Sinne von:
Starte Sub SaveInNetwork in 10 Sekunden, kille Sub SaveInNetwork in 40 Sekunden?
Ansonsten vielen Dank und ich gebe nochmal eine Rückmeldung, ob es klappt.
Gruß
Erik

AW: welche Prozedur...
17.06.2014 08:22:58
Nepumuk
Hallo,
per OnTime-Methode geht das nicht, denn das wartet so lange bis das andere Makro fertig ist. Du könntest versuchen mit der SetTimer-Funktion nach einer gewissen Zeit per Makro die ESC-Taste zu drücken, ob das hilft kann ich aber nicht sagen.
Gruß
Nepumuk

Anzeige
AW: Arbeitsmappe im Hintergrund bearbeiten
17.06.2014 16:00:13
Erik
Hallo Rüdi und Nepumuk,
ich habe ja geschrieben, dass ich euch nochmal eine Rückmeldung gebe. Vielen Dank, eure Hinweise funktionieren. Folgenden Code werde ich jetzt weiterentwickeln:

Option Explicit
Public Sub SaveInNetwork()
Dim vFilepath, vMessage As String
Dim oCommonStats As Object
Dim myValue As Variant
Dim vDestinationTbl As Variant
vFilepath = Sheets("Tabelle2").Range("B2").Value
vDestinationTbl = "Tabelle1"
vMessage = MsgBox( _
"Falls das Speichern der Datei ungewöhnlich lange dauern sollte, brechen Sie  _
den Vorgang durch Drücken der ESC-Taste ab und versuchen es zu einem späteren Zeitpunkt nochmal.", _
vbInformation, _
"Daten an die Zentraldatei senden" _
)
Application.ScreenUpdating = False
myValue = Application.InputBox("Was soll ich da reinschreiben?", "Dateneingabe")
Debug.Print myValue
On Error GoTo ReportErr
If Dir(vFilepath)  "" And myValue  False Then
Set oCommonStats = GetObject(vFilepath).Worksheets(vDestinationTbl)
With oCommonStats
.Range("A1").Value = myValue
.Visible = True
.Parent.Close True
End With
Set oCommonStats = Nothing
End If
Application.ScreenUpdating = True
Exit Sub
ReportErr:
MsgBox "Fehler in Sub SaveInNetwork" & _
vbCrLf & "---------------------------" & _
vbCrLf & "Fehlernummer: " & Err.Number & _
vbCrLf & "Fehlerbeschreibung: " & Err.Description & _
vbCrLf & "Fehlerquelle: " & Err.Source
End Sub
Also, vielen Dank euch!
Gruß
Erik

Anzeige
AW: Arbeitsmappe im Hintergrund bearbeiten
17.06.2014 18:41:08
Nepumuk
Hallo,
wenn du die Mappe vor dem Speichern einblenden willst, dann so:
.Parent.Windows(1).Visible = True
Dein .Visible = True würde nur das Blatt einblenden (so es ausgeblendet ist). Und du solltest die Mappe unbedingt einblenden, denn ansonsten bekommt der nächste, der sie manuell öffnet, nur ein leeres Excel zu sehen.
Gruß
Nepumuk

AW: Arbeitsmappe im Hintergrund bearbeiten
17.06.2014 22:14:44
Erik
Hallo Nepumuk,
vielen Dank für den Tipp! Ich hatte mein .visible ganz vergessen - dein Hinweis löst beantwortet eine Frage, die in meinem Kopf schon kreiste. Leider waren alle Selbstversuche gescheitert. Dann hatte mich entschlossen es so zulassen - und fand es gar nicht schlecht, dass die Arbeitsmappe nicht eingeblendet wird, da ich die Datei lediglich zum Ablegen der Daten nutzen will. Das bedeutet, die Auswertungen sollen später in anderen Dateien stattfinden.
Hast du zufällig Erfahrung mit Excel-Dateien, die im Netzwerk von mehreren Nutzern bearbeitet werden können? Ich habe zwar eine freigegebene Datei auf Arbeit, funktioniert auch - nur manchmal etwas unzuverlässig (wobei ich noch nicht ermitteln konnte, ob es an den Anwender/-innen liegt).
Ich habe im Forum bzw. bei Google schon entdeckt, dass ich den Zugriffsstatus einer Datei abfragen kann (also, ob gerade jemand daran arbeitet oder nicht).
Open sPath For Random Access Read Lock Read Write As oAccessFile
Also Danke nochmal für deine Hilfe! Besonders, dass du dich rege beteiligst!
Gruß
Erik

Anzeige
AW: Arbeitsmappe im Hintergrund bearbeiten
17.06.2014 22:33:26
Nepumuk
Hallo,
mit freigegebenen Arbeitsmappen hab ich keine Erfahrung da ich in solchen Fällen anders herangehe. Ich hab eine Textdatei in die ich eintrage wer die Mappe gerade geöffnet hat. So kann ich dem User anzeigen wer die Mappe sperrt. Das Ermitteln per Open sPath For ..... ob die Datei in Netz frei ist, ist meiner Erfahrung nach nicht zuverlässig, das mit der Textdatei schon.
Gruß
Nepumuk

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige