Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1444to1448
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
Vba Daten aus geschlossener Mappe kopieren
15.09.2015 14:42:11
hdave
Hi,
ich bin ziemlich neu in der VBA-Welt und habe ein Problem:
Ich möchte über einen CommandButton Daten aus einer geschlossenen Excel-Datei in die aktive Excel-Datei importieren. Die Datei, aus der mehrere Zellinhalte kopiert werden sollen, soll nachdem man den Button gedrückt hat in einem Dialogfenster ausgewählt werden können.
Für den Aufruf des Dialogfensters habe ich folgenden Sub benutzt:
Application.Dialogs(xlDialogOpen).Show arg1:="H:\"
Mit diesem Öffne ich jedoch die Datei - ich möchte diese jedoch nur zur Weiterverarbeitung "anwählen"!
Das Kopieren der Zellinhalte habe ich wie folgt gelöst:

Private Sub CommandButton4_Click()
Dim strPath As String, strFile As String
strPath = "H:\xxx\yyy\zzz\Import Test"
strFile = "Import_test.xlsm"
Worksheets(1).Range("E15").Value = GetValue(strPath, strFile, "Tabelle1", "A1")
'       Worksheets(1).Range("E16").Value = GetValue(strPath, strFile, "Tabelle1", "B2")
Worksheets(1).Range("E17").Value = GetValue(strPath, strFile, "Tabelle1", "C3")
Worksheets(1).Range("E18").Value = GetValue(strPath, strFile, "Tabelle1", "D4")
Worksheets(1).Range("E19").Value = GetValue(strPath, strFile, "Tabelle1", "E5")
Worksheets(1).Range("E20").Value = GetValue(strPath, strFile, "Tabelle1", "F6")
End Sub

Private Function GetValue(ByVal path As String, ByVal file As String, ByVal sheet As String, _
ByVal ref As String) As String
Dim arg As String
arg = "'" & path & "\[" & file & "]" & sheet & "'!" & Range(ref).Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function

Beide Subs/Function funktionieren auch unabhängig von einander, jedoch weiß ich nicht wie ich beide verknüpfen soll...
Kann mir da irgendjemand weiterhelfen oder Input geben?
Im Voraus vielen Dank!!!

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vba Daten aus geschlossener Mappe kopieren
15.09.2015 15:11:56
ChrisL
Hi
Sub t()
Dim fileToOpen As Variant
Dim strPath As String, strFile As String
fileToOpen = Application.GetOpenFilename("Excel Datei (*.xlsx), *.xlsx")
If fileToOpen  False Then
strPath = Left(fileToOpen, InStrRev(fileToOpen, "\") - 1)
strFile = Right(fileToOpen, Len(fileToOpen) - InStrRev(fileToOpen, "\"))
With ThisWorkbook.Worksheets(1)
.Range("E15").Value = GetValue(strPath, strFile, "Tabelle1", "A1")
.Range("E16").Value = GetValue(strPath, strFile, "Tabelle1", "B2")
.Range("E17").Value = GetValue(strPath, strFile, "Tabelle1", "C3")
.Range("E18").Value = GetValue(strPath, strFile, "Tabelle1", "D4")
.Range("E19").Value = GetValue(strPath, strFile, "Tabelle1", "E5")
.Range("E20").Value = GetValue(strPath, strFile, "Tabelle1", "F6")
End With
End If
End Sub
cu
Chris

Anzeige
AW: Vba Daten aus geschlossener Mappe kopieren
15.09.2015 16:08:28
hdave
Hey Chris,
vielen Dank für Deine Hilfe - klappt 1a!! Musste nur den Dateityp in *.xlsm ändern ;-)
Danke & Beste Grüße,
hdave

AW: Vba Daten aus geschlossener Mappe kopieren
15.09.2015 15:20:32
Daniel
Hi
wenn du nur den Dateinamen als Textstring brauchst dann:
Datei = Application.GetOpenFilename
dann öffnet sich zwar der gleiche Dialog, aber die Datei wird nicht geöffnet, sondern nur der Dateiname mit vollständigem Pfad in die Variable geschrieben.
damit kannst du dann weiterarbeiten.
um noch Pfad vom Dateinamen zu trennen kannst du so vorgehen:
Pfad = Left(Datei, InstrRev(Datei, "\")- 1)
Name = Mid(Datei, InstrRef(Datei, "\") + 1)

(jeweils ohne den Trenner "\")
wenn du viele Zellen übertragen musst und dabei nicht nur bekannte Zellwerte auslesen willst, dann könnte es sich aber schon lohnen, die Datei zu öffnen.
Dann kannst du das ganze VBA-Instrumentarium anwenden und das Übertragen der Daten geht schneller.
Damit es nicht zu Konflikten kommt wenn jemand die Datei zeitgleich bearbeiten will, öffnet man sie Schreibgeschüttz:
Datei = Application.GetOpenFilename
Workbooks.Open Datei, ReadOnly:=true
gruß Daniel
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige