Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1152to1156
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

zu überprüfende Datei soll geschlossen bleiben

zu überprüfende Datei soll geschlossen bleiben
Oberschlumpf
Hallo Leute
Hab mal wieder eine Frage.
Aufgabe:
Anwender soll per Datei Öffnen-Dialog eine ganz bestimmte Datei auswählen.
Damit er aber nicht die falsche Datei auswählt, dachte ich mir, dass ich mit VBA...
...die ausgewählte, aber nicht geöffnete Datei zur Kontrolle auf bestimmte Werte in bestimmten Sheets und Zellen überprüfe, ob es denn die richtige Datei ist
Der (einzige mir bekannte) Befehl zum Auslesen ungeöffneter Dateien ist (z Bsp) Range("A1").Value = "='C:\Ordner\[Datei.xls]Blattname'!B2"
Problem ist aber, wenn Anwender nun eine Datei auswählt, in der es kein Sheet mit dem Namen "Blattname" gibt, dass sich dann ein Dialog wie dieser öffnet
Userbild
Fragen:
Wie ist es möglich, die Anzeige dieses Dialogs zu verhindern?
(Application.DisplayAlerts = False ist leider nicht hilfreich)
Oder gibt es eine Möglichkeit, eine nicht geöffnete Exceldatei auf Vorhandensein eines bestimmten Tabellenblattnamens zu überprüfen?
Danke für eure Antwort(en).
Ciao
Thorsten

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: zu überprüfende Datei soll geschlossen bleiben
25.04.2010 14:15:39
Hajo_Zi
Hallo Torsten,
für den Zugriff auf geschlossene Dateien habe ich folgenden Code.

' ************************************************************* _
'  Modul:  mdl_Alf  Typ = Allgemeines Modul
' **************************************************************
Option Explicit
'   von Alf Herber Forum
'   http://www.herber.de/forum/archiv/52to56/t52834.htm#52840
Sub TestGetValue()
Dim p As String
Dim f As String
Dim s As String
Dim r As String
p = "L:\Eigene Dateien\Hajo\"
f = "Adresse.xlsm"
s = "Adresse"
r = "B4"
'   bennanter Bereich ergänzung von Nikhil Milo
'    r = "Heinze"
MsgBox GetValue(p, f, s, r)
Worksheets("Tabelle1").Range("A1") = GetValue(p, f, s, r)
End Sub
Public Function  _
GetValue(path, file, sheet, ref)
'   Retrieves a value from a closed workbook
Dim arg As String
'   Make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
'   Create the argument
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1"). _
Address(, , xlR1C1)
'   bennanter Bereich ergänzung von Nikhil Milo
'     arg = "'" & path & "[" & file  _
38; "]" & sheet & "'!" & ref
'   Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Public Function  _
Start(path, file, sheet, ref)
Worksheets("Tabelle1").Range("A1") = GetValue(path, file, sheet, ref)
Start = Worksheets("Tabelle1").Range _
40;"A1")
End Function



' **************************************************************
' Modul: mdl_ThomasRamel Typ = Allgemeines Modul
' **************************************************************

Option Explicit
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean

'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org
' wird durch die HoleDaten aufgerufen
Dim strQuelle As String
Dim Zeilen As Long
Dim Spalten As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range(SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from closed Workbook"
GetDataClosedWB = False
End Function
Public Sub HoleDaten()
' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Dim Bereich As String
Dim Ziel As Range
Pfad = "L:\Eigene Dateien\Hajo\Internet\Test\2009\"
Dateiname = "Beispiel Forum 30.xlsm" ' aus welcher Datei soll er holen?
Blatt = "Tabelle1" ' von welcher Tabelle soll er holen?
Bereich = "A1:B9" ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.Range("A1") ' in welchen Bereich soll er kopieren? Genauer gesagt: Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub

Anzeige
AW: zu überprüfende Datei soll geschlossen bleiben
25.04.2010 14:55:53
Oberschlumpf
Hallo HaJo
Vielen Dank für deine Antwort.
Aber leider hilft es noch nicht.
der erste Versuch:
Sub TestGetValue()
p = "D:\Thorsten\" 'existiert
f = "Mappe1.xls" 'existiert
s = "mein Blattname" 'existiert nicht
r = "B2" 'existiert
End Sub

endet in der Zeile
Function GetValue(path, file, sheet, ref)
GetValue = ExecuteExcel4Macro(arg)
End Sub

mit der Fehlermeldung:
13 - Typen unverträglich
Ändere ich dagegen aber
s = "mein Blattname"
gegen
s = "Tabelle1" 'existiert in Mappe1.xls
dann wird der Wert aus Quelle nach Ziel übertragen.
Also gilt auch für diese Functions, dass der Blattname aus Quelle bekannt sein muss - aber das kann ich eben nicht gewährleisten, da Anwender ja irgdeine Datei auswählen könnte.
Dein 2. Bsp bringt bei falscher Angabe von Blattname leider auch den von mir erwähnten Dialog zur Blattauswahl...mist
Hast du oder wer anders vielleicht noch eine Idee?
Danke
Ciao
Thorsten
Anzeige
AW: zu überprüfende Datei soll geschlossen bleiben
25.04.2010 15:00:50
Hajo_Zi
Hallo Torsten,
reicht da nicht On Error Resume next und nach der Anweisung ob Err0?
Gruß Hajo
oh Mann!!! :-))
25.04.2010 15:06:27
Oberschlumpf
Hi HaJo
DANKE!
Na klar reicht das....jetzt, wo du es sagst!..tztz :-)
Mir war gar nicht aufgefallen, dass der mich störende Dialog gar nicht erschienen war.
Laufzeitfehler kann ich ja - wie du vorschlägst - problemlos mit On Error abfangen.
Nun kann ich weiter machen! :-)
Ciao
Thorsten
offen vergessen...owT
25.04.2010 14:57:01
Oberschlumpf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige