PDA

Vollständige Version anzeigen : Existenz von Excelsheet prüfen


CrizMas
01.02.2006, 08:50
Servus leute,

Kann mir wer sagen, wie ich aus einer Excel Datei prüfen kann, ob ein bestimmtes Sheet in einer anderen ungeöffneten (und schreibgeschützen) xls - Datei existiert? Das ganze sollte natürlich in vba sein oder zumindest so, das es automatisch gemacht wird und der benutzer der datei nicht um 5 Ecken klicken muss.

Also wenn das Sheet im selben Workbook wäre, wüsste ich wie ich das machen würde:



Public Function SheetExists(sname) As Boolean
' Returns TRUE if sheet exists in the active workbook
Dim x As Object
On Error Resume Next
Set x = ActiveWorkbook.Sheets(sname)
If Err = 0 Then SheetExists = True _
Else SheetExists = False
End Function

aber leider befindet sich das Sheet in einer anderen Datei und deshalb stehe ich aufm schlauch. Vielen Dank schon mal für evtl Antworten. THX.

Beste Grüße
Criz

Beverly
01.02.2006, 09:55
Hi Criz,

versuche diesen Code

Sub suchen_tabelle2()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim wsTabelle As Long
Dim strDateiname As String
Dim strTabelle As String
On Error Resume Next
strTabelle = "Tabelle10"
strDateiname = "d:\temp\test.xls"
Workbooks.Open Filename:=strDateiname
On Error Resume Next
For wsTabelle = 1 To Worksheets.Count
If Sheets(wsTabelle).Name = strTabelle Then
MsgBox "Tabelle " & strTabelle & " existiert"
GoTo Fehler
End If
Next wsTabelle
MsgBox "Tabelle " & strTabelle & " existiert nicht"
Fehler:
Application.Workbooks("test.xls").Close
Application.DisplayAlerts = False
Application.ScreenUpdating = True
End Sub
Tabellenname und Datei einschließlich Pfad anpassen. Falls Datei auf anderem Laufwerk liegt, noch ChDrive berücksichtigen.

CrizMas
01.02.2006, 14:49
Hi Beverly,

so im groben und ganzen funktioniert das super. Habe da allerdings noch ein Frage: Muss das in der drittletzten Zeile nicht

Application.DisplayAlerts = True

heißen? Oder ist das so richtig, wie es in deinem Beitrag steht???

Aber sonst super. DANKE. :)

Beverly
01.02.2006, 15:03
Hi Criz,

klar, hast vollkommen Recht. Was ausgeschaltet wurde, muss auch wieder eingeschaltet werden. Kommt davon, wenn man was kopiert und dann nicht noch mal kontrolliert. Aber zum Glück merkt ihr eben alles ;).

jinx
01.02.2006, 20:41
<font size="2" face="Century Gothic">Moin, Chriz,

lies Dir bitte die Netiquette durch und verwende bitte das nächste Mal den vorhandenen Thread prüfen ob sheet in anderem Workbook existiert! (http://www.ms-office-forum.net/forum/showthread.php?t=178792), anstatt ein neues Thema zu eröffnen. Nur zur Info: manchmal machne Helfer auch Pause. ;)

Und auch bei diesem Lösungsanstz wird die Mappe geöffnet, was zumindest in der ursprünglichen Aufgabenstellung von mir als unerwünscht angesehen wurde.</font>

CrizMas
02.02.2006, 15:13
@Beverly: wollte nur sicher gehn ;) Der Code läuft super, Danke.

@jinx: Also erstmal zur Aufgabenstellung. Als ich die Aufgabe gestellt hatte, wusste ich leider noch nicht das man es mit dem Befehl

Application.ScreenUpdating = False

so aussehen lassen kann, als ob die Datei nicht geöffnet wird. Mein Fehler.

Zum Post kann ich nur sagen, dass ich leute im Thread gesehn hab und gedacht hab, das die mir evtl. weiterhelfen können da die Frage ja ähnlich war. Leider war das nicht der Fall (evtl. nicht ähnlich genug... ka) und am nächsten Tag kam mir auch, dass ich besser nen neuen Thread für die Frage aufgemacht hätte. Hab dann den neuen Thread aufgemacht, Teile rüberkopiert und wollte im anderen Thread dann den letzten Post löschen oder zumindest updaten... ging aber leider net.
Mein Fehler... aber trotzdem dumm gelaufen, sry.

Beste Grüße
Criz