Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1548to1552
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

VBA Import von Zellen aus Excel-Datei

VBA Import von Zellen aus Excel-Datei
21.03.2017 14:43:50
Zellen
Hallo ich möchte gerne, mittels einem Button eine .xlsm Datei auswählen können und dann verschiedene Werte daraus in meine bestehende Tabelle ("Database") importieren.
Dabei ist jeder Spalte in der Database-Tabelle einem anderen Wert auf der zu importierenden Excel zugeordnet.
Als Bsp.
Die Database Tabelle, in denen schon Daten stehen, sollen durch eine ausgewählte Excel .xlsm Datei ergänzt werden. Durch click auf den Button kann ich den Dateipfad auswählen und danach wird ergänzt.
Name | Code | Strom | Last |
Bsp1 1234 56 30
Bsp2 5678 28 15
Import1 Import2 Import3 Import4
Dabei ist jeder Import eine andere Zelle ggf. auch anderes Worksheet:
Import1 = Worksheet(1´te von links) Zelle D6
Import2 = Worksheet(4´te von links) Zelle J4
Import3 = Worksheet(6´te von links) Zelle BE19
Import4 = Worksheet(6´te von links) Zelle BF19
Die Zellen im Arbeitsblatt ändern sich nie, da es sich immer um die gleiche Vorlage handelt die importiert wird!
Nach dem Import kann ich die Importfunktion wiederholen und meine Datenbank durch den Import von weiteren Daten ergänzen, sprich die nächsten Daten in einer Zeile weiter unten schreiben.
Ich habe dazu mal einige Codes probiert und versucht umzuschreiben, aber nicht hinbekommen.

Sub GetFilePath()
Dim pfad As String
FilePath = Application.GetOpenFilename("Excel-Arbeitsmappe mit Makros(*.xlsm), *.xlsm")
If FilePath  False Then
Set pfad = FilePath
End If
End Sub
___________________________________________________________________
Sub Zelle_auslesen1()
'** Dimensionierung der Variablen
blatt As String, zelle As String
'** Angaben zur auszulesenden Zelle
blatt = "Blatt 1"
bezug = "D6"
'** Eintragen in Zelle
ActiveCell.Value = GetValue(blatt, bezug)
End Sub
___________________________________________________________________
Private Function GetValue(pfad, blatt, zelle)
'** Daten aus geschlossener Arbeitsmappe auslesen
'*** Dimensionierung der Variablen
Dim arg As String
'Sicherstellen, dass das datei vorhanden ist
If Right(pfad, 1)  "\" Then pfad = pfad & "\"
If Dir(pfad & datei) = "" Then
GetValue = "datei Not Found"
Exit Function
End If
'** Das Argument erstellen
arg = "'" & pfad & blatt & "'!" & Range(zelle).Range("A1").Address(, , xlR1C1)
'** Auslesen über Excel4Macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Vielen Dank für Eure Hilfe.
Grüße Chris

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Import von Zellen aus Excel-Datei
22.03.2017 03:38:27
Zellen
Hallo Chris,
für korrekte Funktion des Excel4Macro muss das Arument in der korrekten Form übergeben werden, d.h. hier muss der Dateiname, wie bei Formeln in Excel mit Verknüpfung auf externe Dateien in eckige Klammern gesetzt werden.
Der im Dialog ausgewählte Name der Datei muss also in Pfad und Name der Datei zerlegt werden, um das Argument korrekt an das Excel4Macro übergeben zu können.
LG
Franz
Sub WerteEinlesen()
Dim FilePath As Variant
Dim FileSelection As Variant
Dim Zeile As Long
Dim wksZiel As Worksheet
FileSelection = Application.GetOpenFilename("Excel-Arbeitsmappe mit Makros(*.xlsm), *.xlsm", _
_
Title:="Bitte Importdatei(en) auswählen - Mehrfachauswahl ist möglich", _
MultiSelect:=True)
If Not IsArray(FileSelection) Then Exit Sub
Set wksZiel = ActiveWorkbook.Worksheets("Database")
With wksZiel
'Letzte Zeile mitInhalt in Spalte A
Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
'gewählte Datei(en) abarbeiten
For Each FilePath In FileSelection
With wksZiel
Zeile = Zeile + 1
.Cells(Zeile, 1).Value = getvalue(FilePath, "Tabelle1", "D3") 'Name
.Cells(Zeile, 2).Value = getvalue(FilePath, "Tabelle4", "J4") 'Code
.Cells(Zeile, 3).Value = getvalue(FilePath, "Tabelle6", "BE19") 'Strom
.Cells(Zeile, 4).Value = getvalue(FilePath, "Tabelle6", "BF19") 'Last
End With
Next
End Sub
Public Function getvalue(ByVal FilePath As String, sheet As String, ref As String)
'retrieves a value from a closed workbook
'FilePath = Dateiname inkl. Verzeichnis
'sheet = Name Tabellenblatt
'ref = Adresse der auszulesenden  Zella im A1-Format
Dim arg As String
Dim Pfad As String, File As String
'make sure the file exists
If Dir(FilePath) = "" Then
getvalue = "File not found"
Exit Function
End If
Pfad = Left(FilePath, InStrRev(FilePath, "\"))     'Verzeichnis
File = Mid(FilePath, InStrRev(FilePath, "\") + 1)  'Dateiname
'create the argument
arg = "'" & Pfad & "[" & File & "]" & sheet & "'!" & Range(ref).Address(, , xlR1C1)
'execute an xlm macro
getvalue = ExecuteExcel4Macro(arg)
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige