Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Copy/Paste Spalten in andere Datei

Betrifft: VBA Copy/Paste Spalten in andere Datei von: Sio
Geschrieben am: 23.08.2014 11:23:10

Hallo, lerne gerade VBA und bastel gerade an folgendem Makro:

Ziel des Makros:

-Spalten A:C kopieren
- Datei auswählen wohin es kopiert werden soll
- Einfügen in ein spezielles Worksheet dieser Datei
- Refresh der Datei
- schließen der Datei woraus es kopiert wurde

Das habe ich bisher:

Option Explicit

Sub copy()

'Last cell in column
Dim WS As Worksheet
Dim LastCell As Range
Dim LastCellRowNumber As Long

Set WS = ActiveSheet
With WS
    Set LastCell = .Cells(.Rows.Count, "C").End(xlUp)
    LastCellRowNumber = LastCell.Row + 1
End With

Dim wb As Workbook, wb2 As Workbook
Dim vFile As Variant

'Set source workbook
Set wb = ActiveWorkbook

'Open the target workbook
vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _
    1, "Select One File To Open", , False)

'if the user didn't select a file, exit sub
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile

'Set selectedworkbook
Set wb2 = ActiveWorkbook

'Select cells to copy
wb2.ActiveSheet.Range(Range("A1"), Range("C1").End(xlDown)).copy


'Go back to original workbook you want to paste into
wb.Activate

'Paste starting at the last empty row
wb.Worksheets("Tabelle1").Range("C" & LastCellRowNumber).PasteSpecial Paste:=xlPasteValues,  _
Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True

'Close and save the workbook you copied from
wb2.Save
wb2.Close

End Sub

Funktioniert einigermaßen, nur dass er nicht die komplette Spalte kopiert und teile weglässt und wenn ich z.B. von Spalte A:C kopiere, fügt er in C:E ein, es soll aber in der Spalte A:C bleiben.

Vielen Dank im voraus

  

Betrifft: AW: VBA Copy/Paste Spalten in andere Datei von: Hajo_Zi
Geschrieben am: 23.08.2014 11:39:27

ich hätte den Code ein wenig anders geschrieben.
Die komplette Spalte soll auch nicht kopiert werden laut Code. Das würde auch nicht gehen. Da nach der letzten Zelle in Spalte C nicht mehr eine3 komplette Spalte eingefügt werden kann.

Option Explicit

Sub copy()
    'Last cell in column
    Dim vFile As Variant
    Dim LastCellRowNumber As Long
    Application.ScreenUpdating = False
    LastCellRowNumber = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row,  _
Rows.Count) + 1
    'Open the target workbook
    vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _
        1, "Select One File To Open", , False)
    'if the user didn't select a file, exit sub
    If TypeName(vFile) <> "Boolean" Then
        Workbooks.Open vFile
        ActiveSheet.Range(Range("A1"), Range("C1").End(xlDown)).copy
        'Go back to original workbook you want to paste into
        'wb.Activate
        'Paste starting at the last empty row
        ThisWorkbook.Worksheets("Tabelle1").Range("C" & LastCellRowNumber).PasteSpecial Paste:= _
xlPasteValues
        Application.CutCopyMode = False
    End If
    'Close and save the workbook you copied from
    ActiveWorkbook.Close True
End Sub
GrußformelHomepage


  

Betrifft: AW: VBA Copy/Paste Spalten in andere Datei von: Sio
Geschrieben am: 23.08.2014 12:02:24

Danke für die schnelle Antwort. Habe den selben Fehler.
Ich lade zwei Beispieldateien hoch, damit es deutlicher wird.

Makro Datei(die als erstes ausführen) https://www.herber.de/bbs/user/92246.xlsm
BeispielTabelle die kopiert werden soll (diese mit dem Macro öffnen): https://www.herber.de/bbs/user/92247.xlsx

Wenn ich das Macro ausführe, kopiert er nur eine Zeile aus den 3 Spalten.
Noch ein Fehler der mir aufgefallen ist, wenn ich keine Datei auswählen möchte und das Macro abbrechen möchte, shcließt er das Worksheet im Macro.


  

Betrifft: AW: VBA Copy/Paste Spalten in andere Datei von: Hajo_Zi
Geschrieben am: 23.08.2014 12:07:29

zum testen bist Du da. Teste im Einzelschritt. Vergesse nicht auf die Zeile "If TypeName(vFile) <> "Boolean..." einen Halte punkt zu setzen.

Option Explicit

Sub copy()
    'Last cell in column
    Dim vFile As Variant
    Dim Loletzte As Long
    Dim LastCellRowNumber As Long
    Application.ScreenUpdating = False
    LastCellRowNumber = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row,  _
Rows.Count) + 1
    'Open the target workbook
    vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _
        1, "Select One File To Open", , False)
    'if the user didn't select a file, exit sub
    If TypeName(vFile) <> "Boolean" Then
        Workbooks.Open vFile
        Loletzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows. _
Count) + 1
       ActiveSheet.Range(Range("A1"), Range("C" & Loletzte)).copy
        'Go back to original workbook you want to paste into
        'wb.Activate
        'Paste starting at the last empty row
        ThisWorkbook.Worksheets("Tabelle1").Range("C" & LastCellRowNumber).PasteSpecial Paste:= _
xlPasteValues
        Application.CutCopyMode = False
        'Close and save the workbook you copied from
        ActiveWorkbook.Close True
    End If
End Sub
Gruß Hajo


  

Betrifft: Danke Hajo! Eine Kleinigkeit noch von: Sio
Geschrieben am: 23.08.2014 12:13:07

Vielen Dank, funktioniert super. Jetzt nur noch die Kleinigkeit, dass er die Spalten A:C in C:E kopiert und nicht 1:1 in die andere Datei übernimmt. Das ist leider das wichtigste an der Sache.

Viele Grüße!


  

Betrifft: AW: Danke Hajo! Eine Kleinigkeit noch von: Sio
Geschrieben am: 23.08.2014 12:22:26

Habs selber hinbekommen, DANKE!!


 

Beiträge aus den Excel-Beispielen zum Thema "VBA Copy/Paste Spalten in andere Datei"