Wie Sie sagen, wenn Sie ein Excel 2007-Arbeitsblatt geöffnet ist, und WER hat ihn mithilfe von VBScript zu öffnen
Wie kann ich feststellen, ob eine Excel 2007-Arbeitsblatt geöffnet ist, und WER hat ihn mithilfe von VBScript zu öffnen?
Ich versuche herauszufinden, ob oder nicht eine Excel-Arbeitsmappe wird momentan von einem anderen Benutzer geöffnet und der Rückkehr, wer dieser Benutzer ist in meinem Skript.
Habe ich schon herausgefunden, wer, um zu bestimmen, wenn die Arbeitsmappe geöffnet ist. Es ist ein workaround, aber im wesentlichen habe ich die Arbeitsmappe öffnen und prüfen, ob es schreibgeschützt ist. Das funktioniert perfekt; ich habe es getestet.
Ich weiß, dies ist möglich, da Excel ermöglicht Sie dem Benutzer, der die Datei öffnen, wenn Sie es öffnen über den browser.
Hier ist mein code (isWorkbookOpen.vbs):
Set objExcelTestWorkbook = CreateObject("Excel.Application")
objExcelTestWorkbook.DisplayAlerts = False 'doesn't display overwrite alert
testWorkbookFile = "I:\test_workbook.xlsx"
Set objBook = objExcelTestWorkbook.Workbooks.open(testWorkbookFile)
If objBook.ReadOnly Then
Wscript.echo "The file is read only"
Call EndScript
Else
Wscript.echo "The file is available"
Call EndScript
End If
Function EndScript
objExcelTestWorkbook.Workbooks.close
objExcelTestWorkbook.Quit
WScript.Echo "Closed " & testWorkbookFile
WScript.Quit
End Function
Auch, ich Lauf von der Kommandozeile aus:
cscript isWorkbookOpen.vbs
- Es ist nicht doppelt. , Die post ist zu Fragen, wie um festzustellen, ob eine excel-Tabelle ist bereits geöffnet, die mit meinem code habe ich bereits gezeigt. Ich bin auf der Suche zu bekommen, DIE Sie geöffnet. Ich weiß schon, wie man, WENN es geöffnet ist. Ich könnte es falsch für das was ich Suche obwohl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Genialen Kollegen daran erinnert, mir über Excel - "lock" - Datei. Beim öffnen von excel, erstellen Sie eine versteckte system-Datei, hält die Personen, die Namen, wer die Datei geöffnet hat. Eine lock-Datei beginnt mit "~$" vor die Arbeitsblatt-Namen. Beispiel:
Wenn Sie eine Tabellenkalkulation namens
testWorkbook.xlsx
es die lock-Datei wäre~$testWorkbook.xlsx
sich im gleichen Verzeichnis befindet.Dies ist auch eine schnellere und einfachere Methode, um zu überprüfen, ob die Datei geöffnet ist, da Ihr nicht wirklich die Datei öffnen wie ich es vorher Tat. Jetzt bin ich mal überprüfen, ob die lock-Datei existiert, und wenn es funktioniert, ich überprüfen, wer ist der "Eigentümer", der die lock-Datei und werden die person, die momentan das Arbeitsblatt geöffnet. Hoffentlich hilft jemand in der Zukunft!
Dies ist mein code, der funktioniert einwandfrei:
Will ich darauf hinweisen, dass ich nicht schreiben das GetFileOwner Funktion Eingeweide. Ich habe auf der website verlinkt, wo ich den code in die Funktion.
Auch, wenn Sie nicht den Standort zugeordnet, um die Tabellenkalkulation, und es ist über das Netzwerk, von einem UNC-Pfad wird nicht funktionieren, müssen Sie ein Laufwerk zuordnen. Dies kann getan werden mit den folgenden 2 Zeilen code:
Hoffentlich wird jemand davon profitieren. Ich weiß, es gibt nicht viel Informationen dazu im web, da habe ich die Suche für immer für Sie!
Haben Sie versucht, die Arbeitsmappe.UserStatus-Eigenschaft? Hier ist ein code-snippet, das Zitat aus der Excel-VBA-Hilfe: