Thema Datum  Von Nutzer Rating
Antwort
Rot PasteSpecial funktioniert nicht
24.08.2016 20:29:34 rob
NotSolved

Ansicht des Beitrags:
Von:
rob
Datum:
24.08.2016 20:29:34
Views:
1055
Rating: Antwort:
  Ja
Thema:
PasteSpecial funktioniert nicht

Hallo zusammen!

Ich habe ein Problem mit Kopieren von Excel-sheets mithilfe von Makro. Ich möchte ein Paar Excel-Sheets von einem zu anderen Workbook zu kopieren. Komischerweise funktioniert es perfekt für den ersten Sheet, aber bei zweiten nicht. Beim Debugging kann ich sehen, dass der gewünschte Bereich im Ausgangssheet kopiert wird (es wird im Workbook charakteristisch markiert) und dass beim PasteSpecial-Anweisung ein LEERES Bereich ins zweite Sheet eingetragen wird. Dazu, wenn ich xlPasteValues löschen, dann wird die Formatierung von Ausgangsheet kopiert aber ohne Zahlen und Formel.

So sieht das Code aus (die relevante Teil):

 

  ' wkb - the new created workbook
  ' orgWkb - the existing workbook, that performs calculations (not the one that contains the macro, but is already opened)    
        
  relevantSheets = Array("A", "B")
  scenarioList = Array("1", "2", "3")

	' a flag indicating if the SKV-Sheet is already present in the new workbook.
        Dim Bexists As Boolean
        Bexists = False

        For Each Scenario In scenarioList
        
            ' activate the original workbook
             Workbooks(orgWkb.Name).Activate
        
            ' set the scenario and recalculate the workbook to fill in the input values.
            Sheets("SKV").Range("C37") = Val(Scenario)
            Application.CalculateFull
        
            Dim NewSheet As Worksheet
            For Each relevantSheet In relevantSheets
                Workbooks(orgWkb.Name).Activate
                
                If (StrComp(CStr(relevantSheet), "A", vbTextCompare) = 0) And Not Bexists Then
                    Set NewSheet = wkb.Sheets.Add
                    NewSheet.Name = "A"
                    SKVexists = True
		ElseIf (StrComp(CStr(relevantSheet), "B", vbTextCompare) = 0) And Bexists Then
                    GoTo EndLoop
                ElseIf (StrComp(CStr(relevantSheet), "B", vbTextCompare) = 0) Then 
                    Set NewSheet = wkb.Sheets.Add
                    NewSheet.Name = "B_" & CStr(Val(Scenario)
                    End If
                With Worksheets(relevantSheet)
                    .UsedRange.Copy
                    NewSheet.UsedRange.PasteSpecial ' xlPasteValues, _
                       ' Operation:=xlNone, SkipBlanks:=True, Transpose:=False
                End With
EndLoop:
            Next ' end loop over relevant sheets.
	Next ' end loop over scenarios.
        
        ' delete unnecessary sheets of the new file, save and close it.
        wkb.Sheets("Tabelle1").Delete
        wkb.Save
        wkb.Close

End Sub

 

Vielleicht noch zum Aufklärung: zuerst soll der Sheet A kopiert werden und dann die Inhalt von Sheet B für jeder der Scenarien aus der Liste für separate Sheets B_1, B_2, B_3.

Dake für jede Hilfe!


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot PasteSpecial funktioniert nicht
24.08.2016 20:29:34 rob
NotSolved