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