Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
632to636
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
632to636
632to636
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Werte aus geschlossener Datei

Werte aus geschlossener Datei
05.07.2005 15:53:34
Peter
Hallo,
ich möchte aus einer geschlossenen Datei per Makro die Werte aus B1-B12 übernehmen.
Ich weiß aber nur einen Teil des Dateinamens. Den bekannten Teil des Namens schreibe ich in die zelle A1 der Datei "Vorlage.xls".
z.B. die Datei heißt "D_1234_aa3a.xls",und liegt auf C/test,und ich weiß nur das im namen "1234" vorkommt.Nun möchte ich per Makro die Werte aus B1-B12 dieser Datei übernehmen bzw.kopieren und in eine geöffnete Datei (Vorlage.xls) in C1-C12 eintragen.
Vielen Dank im vorraus
MfG Peter B

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

Betreff
Datum
Anwender
Anzeige
AW: Werte aus geschlossener Datei
05.07.2005 16:31:56
IngGi
Hallo Peter,
2 Fragen zu deinem Problem:
1. Steht die gesuchte Datei immer im Ordner C:\Test und wenn nein, ist der bzw. sind die Ordner, in denen gesucht werden muß bekannt?
2. Das ganze kann nur vernünftig funktionieren, wenn du ausschließen kannst, dass es in dem/den zu durchsuchenden Ordner(n) nicht mehrere Dateien gibt, die "1234" im Dateinamen enthalten. Kannst du das ausschließen oder muß man dafür noch eine Fehlermeldung einbauen?
Gruß Ingolf
AW: Werte aus geschlossener Datei
05.07.2005 16:55:19
Peter
Hallo Ingolf,
die datei befindet sich immer in C/test, und der bekannte namensteil "1234" kommt auch nur einmal in diesem ordner vor.
MfG Peter B
Anzeige
AW: Werte aus geschlossener Datei
05.07.2005 18:10:37
IngGi
Hallo Peter,
so müsste es gehen:

Sub Daten_holen()
Dim fso As Object, fo As Object, f As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fo = fso.GetFolder("C:\test")
For Each f In fo.Files
If InStr(1, f.Name, Workbooks("Vorlage.xls").Sheets(1).Range("A1"), vbTextCompare) > 0 Then
Exit For
End If
Next f
If f Is Nothing Then
MsgBox ("Datei mit " & Chr$(34) & Workbooks("Vorlage.xls").Sheets(1).Range("A1") _
& Chr$(34) & " im Dateinamen nicht gefunden !!!")
Else
Workbooks.Open Filename:=f.Path
Workbooks(f.Name).Sheets(1).Range("B1:B12").Copy _
Destination:=Workbooks("Vorlage.xls").Sheets(1).Range("C1:C12")
Workbooks(f.Name).Close False
End If
End Sub

Gruß Ingolf
Anzeige
AW: Werte aus geschlossener Datei
05.07.2005 18:12:39
Matthias
Hallo Peter,
mein Vorschlag:
Option Explicit
'VBA Function to Get a Value From a Closed File
'VBA does not include a method to retrieve a value from a closed file.
'You can, however, take advantage of Excel's ability to work with linked files.
'This tip contains a VBA function that retrieves a value from a closed workbook.
'It does by calling an XLM macro.
'The GetValue Function
'The GetValue function, listed below takes four arguments:
'path: The drive and path to the closed file (e.g., "d:\files")
'file: The workbook name (e.g., "99budget.xls")
'sheet: The worksheet name (e.g., "Sheet1")
'ref: The cell reference (e.g., "C4")
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)
' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Function HoleDateiname(ByVal path As String, teil As String)
Dim s As String, found As Boolean
found = False
If Right(path, 1) <> "\" Then path = path + "\" ' Backslash ergänzen
s = Dir(path & "*.xls")
Do While s <> ""
If InStr(s, teil) > 0 Then found = True: Exit Do
s = Dir()
Loop
HoleDateiname = IIf(found, s, "")
End Function
Sub test()
Const teilS = "1234", pfad = "D:\xl\"
Dim fn As String, i As Integer, Wert
fn = HoleDateiname(pfad, teilS)
If fn = "" Then MsgBox "Eine Datei mit " & teilS & " wurde nicht im Verzeichnis " _
& pfad & " gefunden!", vbCritical, "Fehler": Exit Sub
For i = 1 To 12
Wert = GetValue(pfad, fn, "Tabelle1", "B" & i)
Sheets("Tabelle1").Cells(i, 3).Value = Wert
Next
End Sub

Die GetValue()-Funktion habe ich aus dem Forum.
In der Schleife der Prozedur "Test" musst du evtl. noch die Blattnamen anpassen.
Gruß Matthias
Anzeige
Danke euch beiden n.T.
07.07.2005 00:13:01
Peter
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige