Kopieren und Einfügen via VBA Code

Bild

Betrifft: Kopieren und Einfügen via VBA Code
von: Tommy241
Geschrieben am: 30.07.2015 06:34:30

Hallo
Ich nutze folgenden Code, den Klexy mir erstellt hat.
Dazu erstmal großes Lob und vielen Dank dafür.
Der Code funzt prima, jedoch möchte ich beim kopieren, die Formatierung, bzw.
die Spaltenbreite mit kopieren, sodass das Tabellenblatt 1 zu 1 kopiert wird.
Makros, die auf dem Tabellenblatt liegen, sollen nicht mitkopiert werden.
Was mich ich in folgendem Code ändern, damit das funzt?

Sub Öffnen_auslesen_schließen()
Dim ZielDatei As String, QuellDatei As String
Dim ImportDatei, wks As Worksheet
    ZielDatei = ThisWorkbook.Name
    ImportDatei = Application.GetOpenFilename
If ImportDatei <> False Then
    Set wks = Workbooks.Open(ImportDatei).Sheets("Tabelle1")
Else
    Exit Sub
End If
wks.Select
QuellDatei = ActiveWorkbook.Name
Range("A1:J50").Select
Selection.Copy
Windows(ZielDatei).Activate
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Paste
ActiveWorkbook.Save
Windows(QuellDatei).Activate
ActiveWorkbook.Close SaveChanges:=True
 
End Sub

Bild

Betrifft: AW: Kopieren und Einfügen via VBA Code
von: Nepumuk
Geschrieben am: 30.07.2015 08:08:58
Hallo,
teste mal:

Sub Öffnen_auslesen_schließen()
    
    Dim objWorkbook As Workbook
    Dim objWorksheet As Worksheet
    Dim vntReturn As Variant
    
    vntReturn = Application.GetOpenFilename
    If vntReturn <> False Then
        Set objWorkbook = Workbooks.Open(vntReturn)
    Else
        Exit Sub
    End If
    
    With ThisWorkbook
        Set objWorksheet = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
    End With
    
    objWorkbook.Worksheets("Tabelle1").UsedRange.Copy
    
    With objWorksheet.Cells(1, 1)
        .PasteSpecial Paste:=xlPasteAll
        .PasteSpecial Paste:=xlPasteColumnWidths
    End With
    
    Application.CutCopyMode = False
    
    objWorkbook.Close SaveChanges:=False
    
    ThisWorkbook.Save
    
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Kopieren und Einfügen via VBA Code
von: Tommy241
Geschrieben am: 30.07.2015 10:17:27
Danke schön.
So funzt es.

Bild

Betrifft: AW: Kopieren und Einfügen via VBA Code
von: Tommy241
Geschrieben am: 30.07.2015 10:48:58
Kann man den Code erweitern, sodass auch die Spaltenhöhe mit übernommen wird und
das der eingefügte bereich nicht markiert ist?
Danke.

Bild

Betrifft: AW: Kopieren und Einfügen via VBA Code
von: Nepumuk
Geschrieben am: 30.07.2015 11:00:31
Hallo,
Zeilenhöhe geht nicht so einfach, da müsste man Zeile für Zeile auslesen und in der anderen Tabelle einstellen.
Zelle A1 auswählen kannst du einfach so:

    With objWorksheet.Cells(1, 1)
        .PasteSpecial Paste:=xlPasteAll
        .PasteSpecial Paste:=xlPasteColumnWidths
        .Select 
    End With
Gruß
Nepumuk

Bild

Betrifft: AW: Kopieren und Einfügen via VBA Code
von: Tommy241
Geschrieben am: 30.07.2015 11:38:27
Ok. Ich sehe, das dies ein riesen aufwand ist.
Wie kann ich es denn machen, das der eingefügte Bereich nicht markiert ist?

Bild

Betrifft: AW: Kopieren und Einfügen via VBA Code
von: Tommy241
Geschrieben am: 30.07.2015 12:03:54
Haken vergessen ;-)

Bild

Betrifft: AW: Kopieren und Einfügen via VBA Code
von: Werner
Geschrieben am: 30.07.2015 13:10:04
Hallo Tommy,
das hat Nepumuk dir doch geschrieben. Einfach dadurch, dass er im Paste-Bereich des Makros noch ein .select eingefügt hat. Damit wird A1 ausgewählt.
Gruß Werner

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Kopieren und Einfügen via VBA Code"