SharePoint Datei per VBA bearbeiten
16.07.2021 15:09:00
Maxl
ich habe eine Makro, welches eine andere Excel Datei öffnet und da ein paar Sachen rauskopiert. Soweit hat alles gut Funktioniert.
Jetzt wurde die Datei auf einen Sharepoint hochgeladen. Den Dateipfad habe ich entsprechend mit dem Sharepoint link ausgetauscht.
Das öffnen der Datei habe ich dann über FollowHyperlink Address:= gemacht, damit sich die Datei nicht in der Excel Browser Version öffnet.
Soweit so gut. Das Funktioniert auch bis dahin, aber leider nur so lange, wie ich das neu geöffnete Sheet nicht ansprechen. Es soll aber nicht nur geöffnet werden sondern auch Daten kopiert werden. Das erkennbare Problem ist, dass das Makro nicht wartet bis die Datei offen ist. Aufgrund der Ladezeit durch den Sharepoint findet das Makro nicht direkt die neue Datei und stürzt ab "ungültiger Bereich" und DANN öffnet sich trotzdem noch die andere Datei aus dem Sharepoint, obwohl das Makro schon beendet wurde.
Ich habe jetzt alles möglich versucht mit Wait und loop befehlen, eine Wartezeit einzubauen. Problem hier ist, dass während der Wartezeit die Datei nicht geöffnet wird.
Die Zeit wird gewartete-> Datei soll angesprochen werden ->wird nicht gefunden ->"Bereich ungültig" ->Abbruch ->dann öffnet sich die Datei im Nachgang.
Ich wäre um jede Hilfe oder Idee sehr Dankbar!
Sub DatenEinlesen()
Dim NameZ As String 'damit spreche ich später die Fenster an um sie wieder zu schließen
Dim NameQ As String
NameZ = Application.ActiveWorkbook.Name
Worksheets("Deckblatt").Select
Formspfad = Worksheets("Deckblatt").Range("B12") 'hier ist ein normaler Hyperlink hinter, welcher die zweite Datei öffnen soll
ActiveWorkbook.FollowHyperlink Address:=Formspfad
Sheets("Form1").Columns("A:AH").Select 'an der Stelle Abbruch, danach öffnet sich die zweite Datei
Application.CutCopyMode = False
Selection.Copy
NameQ = Application.ActiveWorkbook.Name
Windows(NameZ).Activate
Sheets("Form2").Range("A1").PasteSpecial Paste:=xlValues
Windows(NameQ).Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Sheets("Deckblatt").Activate
MsgBox "Die Werte aus dem Formsformular wurden aktualisiert", vbOKOnly
End Sub