Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
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
Daten aus andere Exceltabelle auslesen
10.09.2014 10:26:04
ANAnas
Guten morgen Community,
mir stelllt sich momentan folgende Problematik: Ich habe eine Main-Excel Datei. Über diese soll es möglich sein, Daten aus einer anderen Excel Datei einzulesen. Diese Excel Datei soll man über ein Auswahlfenster öffnen. Die Daten sollen dann in die Main eingelesen werden...
Kann mir jemand sagen wie das funktioniert?
LG

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus andere Exceltabelle auslesen
10.09.2014 10:29:21
Jack_d
Hallo Mango
hast es schon mal mit dem Rekorder Probiert?
Den Quelltext den er dir ausspuckt, kann man dann wunderbar anpassen.
Grüße

AW: Daten aus andere Exceltabelle auslesen
10.09.2014 10:29:33
Hajo_Zi
warum nicht Verknüpfung?

AW: Daten aus andere Exceltabelle auslesen
10.09.2014 11:17:10
ANAnas
Hinter der Main-Datei steckt ein Quellcode mit dem die eingelesene Excel-Datei bearbeitet werden soll. Die Main ist also nur "Mittelsmann" und dient lediglich zur Bearbeitung. Nachdem die Datei bearbeitet wurde (Klick auf "Start" in der Userform) rödelt das Programm durch und spuckt am Ende die fertige Datei aus.
So zumindest der Plan :D

Anzeige
AW: Daten aus andere Exceltabelle auslesen
10.09.2014 14:32:06
fcs
Hallo ANAnas,
nachfolgend das Makro-Grundgerüst für Datei auswählen, Daten übertragen, Datei wieder schließen.
Gruß
Franz
Sub prcDatenHolen()
Dim wkbMain As Workbook, wksZiel As Worksheet
Dim wkbData As Workbook, wksData As Worksheet
Dim varAuswahl As Variant
On Error GoTo Beenden
'Dateiauswahldialog anzeigen
varAuswahl = Application.GetOpenFilename( _
Filefilter:="Excel(*.xls;*.xlsx;*.xlsm;*.xlsb),*.xls;*.xlsx;*.xlsm;*.xlsb", _
Title:="Bitte datendatei auswählen")
If varAuswahl = False Then GoTo Beenden
'Main-Datei-Objekte setzen
Set wkbMain = ActiveWorkbook
Application.ScreenUpdating = False
'Datendatei schreibgeschützt öffnen in Daten-Tabellenblatt setzen
Set wkbData = Application.Workbooks.Open(Filename:=varAuswahl, ReadOnly:=True)
Set wksData = wkbData.Worksheets(1) 'BlattNr/Blattname anpassen
'Daten von Daten-Tabelle nach Main-Datei übertragen - hier nur Testbeispiel
Set wksZiel = wkbMain.Worksheets("Input") 'Blattname anpassen
wksData.Range("B2:H4").Copy
wksZiel.Range("B3").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
'Daten-Datei wieder schließen
wkbData.Close savechanges:=False
Set wkbData = Nothing
Beenden:
With Err
Select Case .Number
Case 0 'alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
If Not wkbData Is Nothing Then wkbData.Close savechanges:=False
End Select
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Daten aus andere Exceltabelle auslesen
11.09.2014 11:58:08
ANAnas
Hallo Franz!
Erstmal vielen lieben Dank für deine Hilfe :)
Bei mir funktioniert das nicht ganz so wie ich es mir vorstelle...vielleicht kannst du mir da nochmal sunter die Arme greifen: die Main startet automatisch in der Userform1. Das einlesen klappt nicht ganz, es kommt zum Fehler: Formular wird bereits angezeigt und kann daher nicht gebunden dargestellt werden.
Hast du eine Lösung parat?
LG

AW: Daten aus andere Exceltabelle auslesen
11.09.2014 12:53:18
fcs
Hallo ANAnas,
eine direkte Lösung hab ich nicht parat. Wie denn auch? Ich kenne weder deine Datei(en) noch irgendwelche Makro-Codes.
Die Meldung selber bedeutet:
Dein Userform1 wird bereits angezeigt und jetzt wird ein weiteres Makro gestartet mit der Anweisung
Userform1.Show
Das funktioniert nicht! Die Zeile muss dann raus oder eine Prüfung eingebaut werden, ob das Userform schon geöffnet/sichtbar ist.(Userform1.Visible=True ?)
die Main startet automatisch in der Userform1
Was bedeutte dies?
A) Das Userform1 wird gestartet/geöffnet und als Teil der Userform-Anzeige wird auch die Main-Datei geöffnet?
D.h. das Userform1 ist nicht in der Main-Datei gespeichert, sondern in einer anderen Datei. Wenn ja, in welcher Datei?
B) Die Main-Datei wird geöffnet und beim öffnen automatisch die Userform angezeigt?
D.h. Userform1 ist in der Main-Datei gespeichert.
Gruß
Franz

Anzeige
AW: Daten aus andere Exceltabelle auslesen
16.09.2014 08:04:55
ANAnas
Hey Franz, danke für deinen Tip!
Habe es mit einer Abfrage lösen können :)
Du hast mir deinen Quellcode zum kopieren bereitgestellt...nun habe ich dazu noch eine Frage:
wie kann ich einzelne Spalten kopieren? Hier nochmal der Quellcode:
Private Sub Auslesen_Click()
Dim wkbMain As Workbook, wksZiel As Worksheet
Dim wkbData As Workbook, wksData As Worksheet
Dim varAuswahl As Variant
On Error GoTo Beenden
'Dateiauswahldialog anzeigen
varAuswahl = Application.GetOpenFilename( _
Filefilter:="Excel(*.xls;*.xlsx;*.xlsm;*.xlsb),*.xls;*.xlsx;*.xlsm;*.xlsb", _
Title:="Bitte datendatei auswählen")
If varAuswahl = False Then GoTo Beenden
'Main-Datei-Objekte setzen
Set wkbMain = ActiveWorkbook
Application.ScreenUpdating = True 'False
'Datendatei schreibgeschützt öffnen in Daten-Tabellenblatt setzen
Set wkbData = Application.Workbooks.Open(Filename:=varAuswahl, ReadOnly:=True)
Set wksData = wkbData.Worksheets(1) 'BlattNr/Blattname anpassen
'Daten von Daten-Tabelle nach Main-Datei übertragen - hier nur Testbeispiel
Set wksZiel = wkbMain.Worksheets("Tabelle1") 'Blattname anpassen
wksData.Range("A2:BY1773").Copy
wksZiel.Range("A2").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
'Daten-Datei wieder schließen
wkbData.Close savechanges:=False
Set wkbData = Nothing
Beenden:
With Err
Select Case .Number
Case 0 'alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
If Not wkbData Is Nothing Then wkbData.Close savechanges:=False
End Select
End With
Application.ScreenUpdating = True
End Sub
Sagen wir mal, ich benötige Spalte a,b,d,h,z,ab und bb...wie löse ich das?
Danke für deine Hilfe :)

Anzeige
AW: Daten aus andere Exceltabelle auslesen
16.09.2014 08:06:52
ANAnas
Ergänzend zum ebend geschriebenen:
ich beginne in Zeile 2 ;)

AW: Daten aus andere Exceltabelle auslesen
16.09.2014 11:54:34
fcs
Hallo ANAnas,
wen mehrere Zellbereiche aus der Quelltabelle übernommen werden sollen, dann muss man das Kopieren/Einfügen entspechend verfeinern.
Gruß
Franz

Sub prcDatenHolen()
Dim wkbMain As Workbook, wksZiel As Worksheet, Zeile_Z As Long, Spalte_Z As Long
Dim wkbData As Workbook, wksData As Worksheet, Zeile_L, Spalte_D
Dim varAuswahl As Variant
On Error GoTo Beenden
'Dateiauswahldialog anzeigen
varAuswahl = Application.GetOpenFilename( _
Filefilter:="Excel(*.xls;*.xlsx;*.xlsm;*.xlsb),*.xls;*.xlsx;*.xlsm;*.xlsb", _
Title:="Bitte datendatei auswählen")
If varAuswahl = False Then GoTo Beenden
'Main-Datei-Objekte setzen
Set wkbMain = ActiveWorkbook
Application.ScreenUpdating = False
'Datendatei schreibgeschützt öffnen in Daten-Tabellenblatt setzen
Set wkbData = Application.Workbooks.Open(Filename:=varAuswahl, ReadOnly:=True)
Set wksData = wkbData.Worksheets(1) 'BlattNr/Blattname anpassen
'Daten von Daten-Tabelle nach Main-Datei übertragen - hier nur Testbeispiel
Set wksZiel = wkbMain.Worksheets("Input") 'Blattname anpassen
With wksZiel
'Altdaten in Zieltabelle löschen
With .UsedRange
Zeile_L = .Row + .Rows.Count - 1 'letzte benutze Zeile
End With
Zeile_Z = 1 'Zeile ab der gelöscht werden soll
If Zeile_L >= Zeile_Z Then
.Range(.Rows(Zeile_Z), .Rows(Zeile_L)).ClearContents
End If
End With
Zeile_Z = 1 'Einfüge-Zeile in Zieltabelle
Spalte_Z = 1 '1. Einfügespalte in Zieltabelle
With wksData
With .UsedRange
Zeile_L = .Row + .Rows.Count - 1 'letzte benutze Zeile
End With
For Spalte_D = 1 To .UsedRange.Column + .UsedRange.Columns.Count - 1
Select Case Spalte_D
Case 1, 2, 4, 8, 26, 27, 28 'a,b,d,h,z,ab und bb
.Range(.Cells(2, Spalte_D), .Cells(Zeile_L, Spalte_D)).Copy
wksZiel.Cells(Zeile_Z, Spalte_Z).PasteSpecial Paste:=xlPasteValues
Spalte_Z = Spalte_Z + 1
Case Else
'do nothing
End Select
Next
End With
Application.CutCopyMode = False
'Daten-Datei wieder schließen
wkbData.Close savechanges:=False
Set wkbData = Nothing
Beenden:
With Err
Select Case .Number
Case 0 'alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
If Not wkbData Is Nothing Then wkbData.Close savechanges:=False
End Select
End With
Application.ScreenUpdating = True
End Sub

Anzeige

357 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige