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

Forumthread: Werte und Formate einfügen

Werte und Formate einfügen
01.07.2020 11:41:32
börny
Hi Leute,
folgenden Code verwende ich, um Daten von einer Exceldatei in die Zieldatei (Datei, von der ich das Makro starte) zu kopieren.
Ich erhalte aber eine Fehlermeldung "400", der wohl auf die Codezeilen für Werte und Formate einfügen zurückzuführen ist. Welche Lösung gibt es für dieses Problem?
Public Sub Daten_kopieren_Keil()
Dim strPfad As Variant, Quelle As Workbook
Dim ws As Worksheet, boGefunden As Boolean
strPfad = Application.GetOpenFilename
If strPfad  False Then
Set Quelle = Workbooks.Open(strPfad)
Else
MsgBox "Nichts ausgewählt!"
Exit Sub
End If
For Each ws In Quelle.Worksheets
Select Case ws.Name
Case "5.1 GuV_ÜbersichtK"
With ws
boGefunden = True
End With
Exit For
Case Else
End Select
Next ws
If boGefunden Then
ws.Cells.Copy
ThisWorkbook.Worksheets("Keil_GuV").Range("A1").PasteSpecial Paste:=xlValues 'Werte  _
einfuegen
ThisWorkbook.Worksheets("Keil_GuV").Range("A1").PasteSpecial Paste:=xlPasteFormats 'Formate  _
einfuegen
Application.CutCopyMode = False
Else
MsgBox "Blatt nicht gefunden."
End If
Windows(ThisWorkbook.Name).Activate
End Sub
Vielen Dank,
Börny
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte und Formate einfügen
01.07.2020 11:51:15
Regina
Hi Börny,
verwende beim Einfügen nicht Range("A1") sondern wie beim KOpieren "Cells". Damit sollte es klappen.
Gruß Regina
AW: Werte und Formate einfügen
01.07.2020 13:14:41
börny
Hi Regina,
danke für den Tipp. Problem ist, dass damit die Formeln mitkopiert werden. Ich möchte aber nur Werte und Formate kopieren.
Irgend eine Idee, wie ich das integriert bekomme?
Danke,
B
Anzeige
AW: Werte und Formate einfügen
01.07.2020 11:54:57
Rudi
Hallo,
versuchs mal so:
Public Sub Daten_kopieren_Keil()
Dim strPfad As Variant, Quelle As Workbook
Dim ws As Worksheet
strPfad = Application.GetOpenFilename
If strPfad  False Then
Set Quelle = Workbooks.Open(strPfad)
On Error Resume Next
Set ws = Quelle.Worksheets("5.1 GuV_Übersichtk")
On Error GoTo 0
If Not ws Is Nothing Then
ws.Cells.Copy
With ThisWorkbook.Worksheets("Keil_GuV").Range("A1")
.PasteSpecial Paste:=xlValues 'Werte einfuegen
.PasteSpecial Paste:=xlPasteFormats 'Formate einfuegen
End With
Application.CutCopyMode = False
Else
MsgBox "Blatt nicht gefunden."
End If
Else
MsgBox "Nichts ausgewählt!"
End If
ThisWorkbook.Activate
End Sub
Bei der Kopieraktion musst du natürlich sicherstellen, dass du nicht aus dem aktuellen Format (A1:XFD1048576) in eine alte Mappe (A1:IV65536) kopierst.
Gruß
Rudi
Anzeige
AW: Werte und Formate einfügen
01.07.2020 13:32:13
börny
Hi Rudi,
besten Dank hierfür. Ich erhalte aber eine Fehlermeldung 400 wenn ich das Makro ablaufen lasse. Da passt also etwas nicht ganz. Irgend eine Idee?
Das Ziel sollte sein, Werte und Zahlenformate einzufügen. DAs reine Kopieren funktioniert schon.
DAnke,
Börny
AW: Werte und Formate einfügen
01.07.2020 14:01:18
Regina
... wo tritt denn die Fehlermeldung auf? (welche Zeile wird markiert?)
Was soll denn auch das On Error Resume Next? Damit unterdrückst Du ja Fehlermeldungen ...
Gruß Regina
Anzeige
AW: Werte und Formate einfügen
01.07.2020 14:17:32
börny
Also, wenn ich das Makro Schritt für Schritt durchlaufen lasse, erhalte ich für die Zeile
On Error Resume Next
die Meldung "Nicht genug Speicher für eine vollständige Anzeige".
Das Makro läuft aber ertsmal noch weiter und kopiert aus der geöffneten Quelldatei die Daten.
Die Fehlermeldung 400 kommt dann bei Zeile
With ThisWorkbook.Worksheets("Keil_GuV").Range("A1")
Danke,
Börny
Anzeige
AW: Werte und Formate einfügen
01.07.2020 14:38:15
Regina
... dann schmeiß das Om Error ... mal raus, damit der Fehler auch sichtbar wird
Gruß Regina
Dauernd ändern sich die Vorgaben...
01.07.2020 14:13:39
Werner
Hallo,
...da macht Hilfe mal richtig Spaß.
Eigentlich heißt das auch Paste:=xlPasteValues und nicht Paste:=xlValues
Aber mit beiden Versionen habe ich es getestet und konnte den von dir angesprochenen Fehler nicht reproduzieren.
Mit dem Code:
Public Sub Daten_kopieren_Keil()
Dim strPfad As Variant, Quelle As Workbook
Dim ws As Worksheet, boGefunden As Boolean
Application.ScreenUpdating = False
strPfad = Application.GetOpenFilename
If strPfad  False Then
Set Quelle = Workbooks.Open(strPfad)
Else
MsgBox "Nichts ausgewählt!"
Exit Sub
End If
For Each ws In Quelle.Worksheets
Select Case ws.Name
Case "5.1 GuV_Übersicht"
With ws
boGefunden = True
End With
Exit For
Case Else
End Select
Next ws
If boGefunden Then
ws.Cells.Copy
ThisWorkbook.Worksheets("Keil_GuV").Range("A1").PasteSpecial Paste:=xlPasteValues
ThisWorkbook.Worksheets("Keil_GuV").Range("A1").PasteSpecial Paste:=xlPasteFormats
Application.DisplayAlerts = False
Quelle.Close False
Application.CutCopyMode = False
Else
MsgBox "Blatt nicht gefunden."
Quelle.Close False
End If
End Sub
Gruß Werner
Anzeige
AW: Werte und Formate einfügen
01.07.2020 14:16:58
Werner
Hallo Rudi,
der ursprüngliche Code ist von mir.
Und das Select Case hatte durchaus seinen Sinn, da der Blattname nämlich auch in verschiedenen "Sprachversionen" vorliegen kann (so sich die angegebenen Voraussetzungen nicht wieder geändert haben).
Die Kleinigkeit hat dir der Beitragsersteller leider vorenthalten.
Gruß Werner
Anzeige
AW: Werte und Formate einfügen
01.07.2020 17:37:02
börny
Du bist der Beste Werner!
Mit deinem Code habe ich zwar immer noch einen Fehler erhalten, habe ihn aber noch leicht abgeändert und nun funzt das Ding einwandfrei. Ein Hoch auf Werner und Danke aber auch an alle anderen.
Public Sub Daten_kopieren_Keil2()
Dim strPfad As Variant, Quelle As Workbook
Dim ws As Worksheet, boGefunden As Boolean
Application.ScreenUpdating = False
strPfad = Application.GetOpenFilename
If strPfad  False Then
Set Quelle = Workbooks.Open(strPfad)
Else
MsgBox "Nichts ausgewählt!"
Exit Sub
End If
For Each ws In Quelle.Worksheets
Select Case ws.Name
Case "5.1 GuV_ÜbersichtK"
With ws
boGefunden = True
End With
Exit For
Case Else
End Select
Next ws
If boGefunden Then
ws.Cells.Copy
ThisWorkbook.Worksheets("Keil_GuV").Range("A1").PasteSpecial Paste:= _
xlPasteValuesAndNumberFormats
'ThisWorkbook.Worksheets("Keil_GuV").Range("A1").PasteSpecial Paste:=xlPasteFormats
Application.DisplayAlerts = False
Quelle.Close False
Application.CutCopyMode = False
Else
MsgBox "Blatt nicht gefunden."
Quelle.Close False
End If
ThisWorkbook.Worksheets("Cockpit").Activate
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte und Formate in Excel VBA einfügen


Schritt-für-Schritt-Anleitung

  1. Code vorbereiten: Öffne den Visual Basic for Applications (VBA) Editor in Excel. Erstelle ein neues Modul und füge den folgenden Code ein:

    Public Sub Daten_kopieren_Keil()
       Dim strPfad As Variant, Quelle As Workbook
       Dim ws As Worksheet, boGefunden As Boolean
       strPfad = Application.GetOpenFilename
       If strPfad <> False Then
           Set Quelle = Workbooks.Open(strPfad)
       Else
           MsgBox "Nichts ausgewählt!"
           Exit Sub
       End If
       For Each ws In Quelle.Worksheets
           If ws.Name = "5.1 GuV_ÜbersichtK" Then
               boGefunden = True
               Exit For
           End If
       Next ws
       If boGefunden Then
           ws.Cells.Copy
           ThisWorkbook.Worksheets("Keil_GuV").Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
           Application.CutCopyMode = False
       Else
           MsgBox "Blatt nicht gefunden."
       End If
       Quelle.Close False
    End Sub
  2. Code anpassen: Stelle sicher, dass der Blattname und der Zielbereich korrekt sind.

  3. Makro ausführen: Starte das Makro, um die Werte und Formate einzufügen.


Häufige Fehler und Lösungen

  • Fehler 400: Diese Fehlermeldung kann auftreten, wenn der Zielbereich nicht korrekt angegeben ist oder wenn das Zielblatt nicht existiert. Überprüfe den Namen des Zielblatts und die Range-Referenz.

  • "Nicht genug Speicher für eine vollständige Anzeige": Dies kann passieren, wenn du den Fehlerbehandlungsbefehl On Error Resume Next verwendest. Entferne diesen Befehl, um den eigentlichen Fehler zu sehen.

  • Formeln werden mitkopiert: Achte darauf, dass du die richtige PasteSpecial-Option verwendest. Nutze xlPasteValuesAndNumberFormats, um nur Werte und Zahlenformate einzufügen.


Alternative Methoden

Eine alternative Methode, um Werte und Formate in Excel VBA einzufügen, ist die Verwendung von Range.Value und Range.NumberFormat. Hier ein Beispiel:

ThisWorkbook.Worksheets("Keil_GuV").Range("A1").Value = ws.Cells.Value
ThisWorkbook.Worksheets("Keil_GuV").Range("A1").NumberFormat = ws.Cells.NumberFormat

Auf diese Weise kannst du gezielt Werte und Formate ohne die Verwendung von PasteSpecial einfügen.


Praktische Beispiele

Hier ist ein Beispielcode, der Werte und Formate aus einem Arbeitsblatt in ein anderes kopiert:

Public Sub Beispiel_Daten_kopieren()
    Dim quelleWs As Worksheet, zielWs As Worksheet
    Set quelleWs = ThisWorkbook.Worksheets("Quelle")
    Set zielWs = ThisWorkbook.Worksheets("Ziel")

    quelleWs.Cells.Copy
    With zielWs.Range("A1")
        .PasteSpecial Paste:=xlPasteValues
        .PasteSpecial Paste:=xlPasteFormats
    End With
    Application.CutCopyMode = False
End Sub

Dieser Code kopiert die Werte und Formate von einem Arbeitsblatt namens "Quelle" in ein Arbeitsblatt namens "Ziel".


Tipps für Profis

  • Verwendung von xlPasteValuesAndNumberFormats: Diese Option ist besonders nützlich, wenn du sicherstellen möchtest, dass sowohl die Werte als auch die Zahlenformate korrekt übertragen werden.

  • Optimierung der Performance: Deaktiviere die Bildschirmaktualisierung mit Application.ScreenUpdating = False, um die Ausführungsgeschwindigkeit deines Makros zu verbessern.

  • Fehlerbehandlung: Implementiere eine robustere Fehlerbehandlung, um sicherzustellen, dass dein Makro auch bei unerwarteten Problemen zuverlässig funktioniert.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur Werte und Formate ohne Formeln kopiert werden? Verwende PasteSpecial mit den Optionen xlPasteValues und xlPasteFormats.

2. Was bedeutet der Fehler "Blatt nicht gefunden"? Dieser Fehler tritt auf, wenn der angegebene Blattname nicht in der Quelldatei existiert. Überprüfe den Blattnamen auf Schreibfehler oder Abweichungen.

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