Daten aus geschlossener Excel Datei holen
20.05.2019 15:57:34
Blackjack2019
ich möchte mich einmal kurz vorstellen mein Name ist Blackjack (Torsten)und ich schaue schon sehr oft in dieses Forum vorbei, um mir Informationen für meine kleinen Projekte abzuholen. Es hat mir schon oft geholfen. Meine Erfahrungen gerade was VBA angehen sind begrenzt und habe ich mir alles durch Learning by Doing beigebracht. Nun bräuchte ich mal eine aktive Unterstützung.
Aufgabe: Datei soll aus einer geschlossenen Datei (input.xlsx) auslesen, welche sich in einem Tempverzeichnis befindet.
Ziel: Das Auslesen soll im Tabellenblatt (Auslesen) erfolgen und nachdem auslesen soll wieder das Tabellenblatt (startup) als einziges Tabellenblatt angezeigt werden.
Das Makro funktioniert insoweit, das es die Daten ausließt und auch sauber importiert, leider nur immer im Tabellenblatt (startup). Ich bin mir ziemlich sicher das es mit der Laufzeit etwas zu tun hat, weiß nur nicht wie ich das lösen kann. Hab schon überall gesucht, ausprobiert aber keine Lösung gefunden die ich verstehe umzusetzen. Wie gesagt bin da kein Profi, aber gebe nicht auf.
Hintergrund: Die eingelesenen Daten werden in einem Dashboard an unterschiedlichen Stellen später weiterverarbeitet mit entsprechenen Druckmenues.
Link Vorschau
Ich hoffe es so erklärt zu haben das man es versteht....
Würde mich freuen von Euch eine schnelle Hilfe zu erhalten, danke schon mal im voraus
LG Blackjack
Sub Import()
Sheets("startup").Select 'Startet im Tabellenblatt "startup"'
Sheets("Auslesen").Visible = True 'Blendet 'Tabellenblatt "Auslesen ein"'
Sheets("startup").Visible = False 'Blendet 'Tabellenblatt "startupaus"'
Sheets("Auslesen").Select'Startet im Tabellenblatt "Auslesen "'
'Hinweis das Daten importiert werden
Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
objShell.Popup "Daten werden importiert, bitte warten Sie einen Augenblick"
Set objShell = Nothing
'Startet das Makro Daten auslesen aus Tempverzeichnis
'** Dimensionierung der Variablen
Dim pfad As String, datei As String, blatt As String, bereich As Range, zelle As Object
'** Angaben zur auszulesenden Zelle
pfad = "C:\Temp"
datei = "input.xlsx" ' Datei welche ausgelesen werden soll
blatt = "Tabelle1" ' Tabellenblatt welche ausgelesen werden soll
Set bereich = Range("A1:AA46")' Bereich welches ausgelesen werden soll
'** Bereich auslesen
For Each zelle In bereich
'** Zellen umwandeln
zelle = zelle.Address(False, False)
'** Eintragen in Bereich
ActiveSheet.Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, blatt, zelle)
Next zelle
End Sub
Private Function GetValue(pfad, datei, 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 & "[" & datei & "]" & blatt & "'!" & Range(zelle).Range("A1").Address(, , _
xlR1C1)
'** Auslesen über Excel4Macro
GetValue = ExecuteExcel4Macro(arg)
'Call Data 'Wenn Daten eingelesen wurden starte Makro "Data"
End Function
Sub Data()
Sheets("Auslesen").Select 'Startet im Tabellenblatt "Auslesen "'
Sheets("startup").Visible = True 'Blendet 'Tabellenblatt "startup ein"'
Sheets("startup").Select'Startet im Tabellenblatt "startup"'
Sheets("Auslesen").Visible = False 'Blendet 'Auslesen"startup aus"'
End Sub