Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wert kopieren ohne Tabelle zu öffnen

Wert kopieren ohne Tabelle zu öffnen
Christian
Hallo Zusammen,
ich habe folgenden Code bei dem 11 Werte aus 11 Tabellen geholt werden.
In meiner Zieldatei steht dieses Script welches die Wert untereinander ausgibt.
Jetzt hätte ich gerne gewusst ob es die Möglichkeit gibt die Werte aus den Tabellen zu holen ohne das diese geöffnet sind?
Sub Kopieren()
Dim Vergleich
Dim Bereich As Range
Dim Quelle As Workbook
Dim Quelle1 As Workbook
Dim Quelle2 As Workbook
Dim Quelle3 As Workbook
Dim Quelle4 As Workbook
Dim Quelle5 As Workbook
Dim Quelle6 As Workbook
Dim Quelle7 As Workbook
Dim Quelle8 As Workbook
Dim Quelle9 As Workbook
Dim Quelle10 As Workbook
Dim Quelle11 As Workbook
Dim Ziel As Workbook
Set Quelle = Workbooks("Quelle.xls")
Set Quelle1 = Workbooks("Quelle1.xls")
Set Quelle2 = Workbooks("Quelle2.xls")
Set Quelle3 = Workbooks("Quelle3.xls")
Set Quelle4 = Workbooks("Quelle4.xls")
Set Quelle5 = Workbooks("Quelle5.xls")
Set Quelle6 = Workbooks("Quelle6.xls")
Set Quelle7 = Workbooks("Quelle7.xls")
Set Quelle8 = Workbooks("Quelle8.xls")
Set Quelle9 = Workbooks("Quelle9.xls")
Set Quelle10 = Workbooks("Quelle10.xls")
Set Quelle11 = Workbooks("Quelle11.xls")
Set Ziel = Workbooks("Ergebniss.xls")
Set Bereich = Range(ActiveSheet.UsedRange.Address)
Ziel.Sheets("Ergebniss").Activate
Wert = Quelle.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A1").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle1.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A2").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle2.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A3").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle3.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A4").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle4.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A5").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle5.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A6").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle6.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A7").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle7.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A8").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle8.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A9").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle9.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A10").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle10.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A11").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Wert = Quelle11.Sheets("Tabelle1").Range("H20").Value
Ziel.Sheets("Ergebniss").Range("A12").Value = Wert
Quelle.Activate
Application.CutCopyMode = False
Set Quelle = Nothing
Set Ziel = Nothing
Set Bereich = Nothing
End Sub

Mit freundlichen Grüßen
Christian Metzger

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Wert kopieren ohne Tabelle zu öffnen
30.03.2011 16:11:12
Hajo_Zi
Hallo Christian,
mache es mit Formel in der Zelle oder
Option Explicit
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org
' wird durch die HoleDaten aufgerufen
Dim strQuelle       As String
Dim Zeilen          As Long
Dim Spalten         As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range( _
SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from  _
closed Workbook"
GetDataClosedWB = False
End Function
Public Sub HoleDaten()
' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
Dim Pfad            As String
Dim Dateiname       As String
Dim Blatt           As String
Dim Bereich         As String
Dim Ziel            As Range
Pfad = "L:\Eigene Dateien\Hajo\Internet\Test\2009\"
Dateiname = "Beispiel Forum 30.xlsm" ' aus welcher Datei soll er holen?
Blatt = "Tabelle1"  ' von welcher Tabelle soll er holen?
Bereich = "A1:B9"   ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.Range("A1")  ' in welchen Bereich soll er kopieren? Genauer gesagt:  _
Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub

Anzeige
AW: Wert kopieren ohne Tabelle zu öffnen
30.03.2011 16:19:35
Christian
Danke schonmal hierfür aber,
da ich in VB nicht ganz der Held bin frage ich mal.
Muss ich meinen ganzen Code gegen diesen dann austauschen?
Wo müsste ich jetzt die Daten meiner Dateien und die Ranges eintragen?
Ich denke mal der obere Code beschreibt nur die Formel die Daten zu holen.
Die untere gibt an wo zu holen ist.
Ich würde das dann so änder.
Public Sub HoleDaten()
' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
Dim Pfad            As String
Dim Dateiname       As String
Dim Blatt           As String
Dim Bereich         As String
Dim Ziel            As Range
Pfad = "C:\Quellordner\"
Dateiname = "Quelle.xls" ' aus welcher Datei soll er holen?
Blatt = "Tabelle1"  ' von welcher Tabelle soll er holen?
Bereich = "H20"   ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.Range("A1")  ' in welchen Bereich soll er kopieren? Genauer gesagt:   _
_
Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub
Soweit korrekt?
Mit freundlichen Grüßen
Christian Metzger
Anzeige
AW: Wert kopieren ohne Tabelle zu öffnen
30.03.2011 16:30:48
Hajo_Zi
Hallo Christian,
einfach testen. Ich würde sagen, ja es ist korrekt. Die Kommentare von Thomas Ramel waren doch eindeutig.
Gruß Hajo
AW: Wert kopieren ohne Tabelle zu öffnen
30.03.2011 16:39:22
Christian
So bin gerade am testen.
Er holt dich jetzt die Daten aus der geschlossenen Tabelle.
Allerdings öffnet sich immer das "öffnen Fenster" in dem man die Datei wieder händisch auswählen muss.
Gibt es vielleicht eine Möglichkeit das so zu machen, dass er das automatisch holt ohne die Abfrage?
Wie gesagt es sind 11 Dateien und es wäre sehr viel angenehmer wenn er die Werte aus den Dateien automatisch holt und einfügt ohne jede Datei von Hand auszuwählen.
Mit freundlichen Grüßen
Christian Metzger
Anzeige
AW: Wert kopieren ohne Tabelle zu öffnen
30.03.2011 16:47:57
Hajo_Zi
Hallo Christian,
min. eine Angabe (Ordner, Datei, Tabelle) ist falsch.
Gruß Hajo
AW: Wert kopieren ohne Tabelle zu öffnen
31.03.2011 16:27:54
Christian
Hallo nochmal.
Wollte nur bescheid geben, dass es jetzt funktioniert hat.
Viel dank noch für die Hilfe.
Mit freundlichen Grüßen
Christian Metzger

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige