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

Forumthread: Spalten in andere Arbeitsmappe kopieren

Spalten in andere Arbeitsmappe kopieren
Olli
Hallo,
Ich bin absolut unerfahren im Umgang mit Excel und VBA. Jetzt steh ich vor einem Problem und komm nicht weiter.
Und zwar will ich über Formeln errechnete Werte durch ein Makro in eine andere Arbeitsmappe übertragen.
Hab im Forum zwar schon einen Ansatz gefunden, ich schaff es aber nicht es auf die gesamte Spalte zu übertragen/ bzw will ich mehrere Spalten (aus einer geschlossenen Mappe) kopieren.
Und wie gesagt VBA ist absolutes Chinesisch für mich....
Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function
Sub Makro()
Dim strSource As String
strSource = "'I:\...\...\[Datei.xlsx]Arbeitsblatt'!R4C4"
Range("D1").Value = xl4Value(strSource)
End Sub

Danke schon mal im vorraus...
Gruss Olli
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Spalten in andere Arbeitsmappe kopieren
02.06.2010 15:58:25
Hajo_Zi
Hallo Olli,
aus einer geschlossenen Mappe ght nicht bzw. ist sehr aufwendig für mehrere Spalten.

AW: Spalten in andere Arbeitsmappe kopieren
03.06.2010 08:42:30
Olli
hmm,
Ich hab es mir schon fast gedacht! Gibt es irgendwelche anderen Möglichkeiten? Alle Arbeitsblätter in eine Mappe zu Kopieren ist zu unübersichtlich und das hab ich auch so weit wie möglich getan.
Ich muss halt irgendwie mit den Werten weiterrechnen können ohne alle Arbeitsmappen zu öffnen, denn dann wird es wieder zu unübersichtlich.
Ich bin für jeden Vorschlag offen.
Grüsse Olli
Anzeige
AW: Spalten in andere Arbeitsmappe kopieren
03.06.2010 09:21:42
Olli
hmm,
Ich hab es mir schon fast gedacht! Gibt es irgendwelche anderen Möglichkeiten? Alle Arbeitsblätter in eine Mappe zu Kopieren ist zu unübersichtlich und das hab ich auch so weit wie möglich getan.
Ich muss halt irgendwie mit den Werten weiterrechnen können ohne alle Arbeitsmappen zu öffnen, denn dann wird es wieder zu unübersichtlich.
Ich bin für jeden Vorschlag offen.
Grüsse Olli
Anzeige
AW: Spalten in andere Arbeitsmappe kopieren
03.06.2010 20:19:53
Josef

Hallo Olli,
eine Möglichkeit per ADO.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub ReadFromFile_ADO()
  Dim objADO As Object
  Dim strFile As String, strSheet As String, strRange As String
  
  strFile = "E:\Forum\Daten.xlsx" 'Datei
  strSheet = "Tabelle1" 'Pfad
  strRange = "A:C" 'Bereich
  
  Set objADO = ExcelTable(strFile, strSheet, strRange)
  
  'Ausgabe in aktiver Tabelle ab A2
  Range("A2").CopyFromRecordset objADO
  
  objADO.Close
End Sub


Public Function ExcelTable(ByRef Path As String, ByRef Table As String, ByRef SourceRange As String, Optional WhereString As String = "") As Object
  Dim SQL As String
  Dim Con As String
  
  SQL = "select * from [" & Table & "$" & SourceRange & "] " & WhereString
  
  If Mid(Path, InStrRev(Path, ".") + 1) = "xls" Then
    Con = "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Extended Properties=Excel 8.0;" _
      & "Data Source=" & Path & ";"
  ElseIf Mid(Path, InStrRev(Path, ".") + 1) Like "xls?" Then
    Con = "Provider=Microsoft.ACE.OLEDB.12.0;" _
      & "Extended Properties=""Excel 12.0;HDR=YES"";" _
      & "Data Source=" & Path & ";"
  Else
    Exit Function
  End If
  Set ExcelTable = CreateObject("ADODB.Recordset")
  ExcelTable.Open SQL, Con, 3, 1
End Function

Gruß Sepp

Anzeige
AW: Spalten in andere Arbeitsmappe kopieren
04.06.2010 08:39:37
Olli
Ich werd es gleich mal testen.
Vielen Dank.
Grüsse
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Spalten in andere Arbeitsmappe kopieren


Schritt-für-Schritt-Anleitung

Um Spalten von einer Excel-Arbeitsmappe in eine andere zu kopieren, kannst Du ein einfaches Makro verwenden. Hier ist, wie Du dabei vorgehst:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub Makro()
       Dim strSource As String
       strSource = "'I:\...\...\[Datei.xlsx]Arbeitsblatt'!R4C4"
       Range("D1").Value = xl4Value(strSource)
    End Sub
  4. Speichere die Datei als Makro-aktivierte Arbeitsmappe (.xlsm).

  5. Führe das Makro aus, um die Werte zu übertragen.

Wenn Du mehrere Spalten kopieren möchtest, kannst Du die Range-Anweisung entsprechend anpassen.


Häufige Fehler und Lösungen

  • Fehler: "Die Datei konnte nicht gefunden werden."

    • Lösung: Überprüfe den Dateipfad und stelle sicher, dass die Datei existiert und der Pfad korrekt ist.
  • Fehler: "Makro kann nicht ausgeführt werden."

    • Lösung: Stelle sicher, dass die Arbeitsmappe im Makro-fähigen Format gespeichert ist (.xlsm) und dass die Makros aktiviert sind.

Alternative Methoden

Wenn Du keine Makros verwenden möchtest, kannst Du auch die ADO-Methode nutzen, um Daten aus geschlossenen Arbeitsmappen zu importieren. Hier ist ein Beispiel:

  1. Füge den folgenden VBA-Code in ein Modul ein:

    Public Sub ReadFromFile_ADO()
       Dim objADO As Object
       Dim strFile As String, strSheet As String, strRange As String
    
       strFile = "E:\Forum\Daten.xlsx" 'Datei
       strSheet = "Tabelle1"           'Pfad
       strRange = "A:C"                'Bereich
    
       Set objADO = ExcelTable(strFile, strSheet, strRange)
       Range("A2").CopyFromRecordset objADO
       objADO.Close
    End Sub
  2. Führe das Makro aus, um die Daten zu importieren.


Praktische Beispiele

Ein häufiges Szenario ist das Kopieren von Werten aus einer geschlossenen Arbeitsmappe, ohne die Mappe zu öffnen. Verwende die ADO-Methode, um bequem auf die Daten zuzugreifen.

Hier ist ein Beispiel, um Daten aus den Spalten A bis C zu kopieren:

Public Function ExcelTable(ByRef Path As String, ByRef Table As String, ByRef SourceRange As String) As Object
    Dim SQL As String
    Dim Con As String

    SQL = "select * from [" & Table & "$" & SourceRange & "] "
    Con = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=YES';Data Source=" & Path & ";"

    Set ExcelTable = CreateObject("ADODB.Recordset")
    ExcelTable.Open SQL, Con, 3, 1
End Function

Tipps für Profis

  • Nutze absolute und relative Referenzen: Achte darauf, ob Du absolute oder relative Zellreferenzen benötigst, um die gewünschten Daten korrekt zu kopieren.
  • Fehlerbehandlung einbauen: Implementiere Fehlerbehandlungsroutinen in Deinem VBA-Code, um unerwartete Situationen zu vermeiden.
  • Automatisiere den Prozess: Kombiniere mehrere Makros, um den Prozess des Kopierens und Einfügens zu automatisieren.

FAQ: Häufige Fragen

1. Kann ich Daten aus mehreren Spalten gleichzeitig kopieren? Ja, Du kannst die Range-Anweisung anpassen, um mehrere Spalten gleichzeitig zu kopieren.

2. Was ist ADO und warum sollte ich es verwenden? ADO steht für ActiveX Data Objects und ermöglicht den Zugriff auf Daten aus verschiedenen Quellen, einschließlich Excel-Dateien, ohne sie zu öffnen. Es ist besonders nützlich für die Arbeit mit großen Datenmengen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige