Excel-VBA-Arbeitsmappe.ChangeFileAccess
Ich habe Probleme mit dem ändern der Datei Zugriffsmodus auf Excel-Arbeitsmappen mit VBA. Ich bin mit Office 2010.
Ich möchte in der Lage sein, abwechseln zwischen nur Lesen und Lesen-write-Modus als angemessen. Allerdings scheint es das ändern einer Arbeitsmappe von Lesen/schreiben nur Lesen nur Lesen und dann wieder zurück, wie in den folgenden code verursacht einen automation-Fehler beim Zugriff auf ein Mitglied des workbook-Objekts.
Public Sub example()
Dim w As Workbook
'open workbook with write access
Set w = Workbooks.Open("example.xlsx", ReadOnly:=False)
Debug.Print w.Name 'sucessfully accesses members of w
'change file access to read only
w.ChangeFileAccess XlFileAccess.xlReadOnly
Debug.Print w.Name 'successfully accesses members of w
'change file access back to read/write
w.ChangeFileAccess XlFileAccess.xlReadWrite
Debug.Print w.Name 'fails to access members of w with automation error
End Sub
Ich verstehe nicht, warum dies der Fall ist. Es ist offensichtlich durchaus möglich ist, eine Arbeitsmappe öffnen, als nur zu Lesen, ändern Sie es zu Lesen, zu schreiben und dann weiter um das Objekt. Warum ist diese situation anders? Ich finde keine Erwähnung von diesem Verhalten auf der MSDN-Website.
http://msdn.microsoft.com/en-us/library/ff193344.aspx
Ist es möglich, ändern von Datei-Zugriffsarten, wie ich bin versucht, zu tun?
InformationsquelleAutor Thomas Wilkins | 2011-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich Sie getroffen habe, ein Interessantes Faible mit der Möglichkeit, dass Excel ändert den lese/schreib-Zustand. Um eine Arbeitsmappe von nur-Lesen auf Lesen/schreiben, Excel schließt die Arbeitsmappe und öffnet es wieder. Während dieses Prozesses, Ihr Objekt Referenz verwandelt sich in etwas seltsam gebrochen. Wenn Sie die Zeile hinzufügen:
nachdem Sie ChangeFileAccess zu xlReadWrite es dann Vergünstigungen wieder, aber es ist nicht gerade ideal.
Chris
Ja, es ist nur der Lesen->lese - /schreib-Richtung, führt zu einem öffnen. 🙁
Dieses Beispiel geht in diese Richtung, aber funktioniert -
InformationsquelleAutor Chris Rae