eine kleine VBA Routine erledigt bei mir das Anlegen einer Kopie des
ActiveWorkbooks. Danach geht die Routine in der Kopie durch alle Sheets und
macht eine "Copy-Paste Values" um die Formeln in Werte umzuwandeln.
Workbooks(TargetFileName).Sheets(i).Cells.Copy
Workbooks(TargetFileName).Sheets(i).Cells.PasteSpecial Paste:=xlValues
Dabei gibt es ein Problem: sobald auf einem der Sheets (im ActiveWorkbook
und damit dann auch in der Kopie) der Cursor/Selektion auf einem Chart
steht, funktioniert das "Copy-Paste Values" nicht mehr auf diesem Sheet. Die
Formeln bleiben. Da ich in dem "Copy-Paste Values" Teil keine Lösung kenne,
möchte ich gerne die "Ursache" testen - sprich vor dem Kopieren feststellen
ob in einem der Sheets im ActiveWorkbook ein Diagramm selektiert ist. Wenn
das der Fall ist würde ich das Kopieren garnicht erst starten.
Danke für jeden Hinweis !
Viele Grüße
Thomas Schulze
XL2000 / WIN2000
"Thomas Schulze" schrieb:
Wenn ein Tabellenblatt, bzw. eine Zelle/Zellbereich markiert ist,
wird die Arbeitsblattmenüleiste angezeigt.
Bei einem Diagrammblatt, bzw. markiertem Diagramm in einem
Tabellenblatt die Diagrammmenüleiste.
Anhand dieser Information kannst überprüfen, ob ein Diagramm markiert ist.
Sub TesteDiagramm()
If ActiveMenuBar.Caption = "Chart" Then
MsgBox "Diagramm oder Diagrammblatt ist aktiviert"
End If
End Sub
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
#Excel-Auftragsprogrammierung#
E-Mail: Melanie...@mvps.org
Thomas Schulze schrieb:
>
> eine kleine VBA Routine erledigt bei mir das Anlegen einer Kopie des
> ActiveWorkbooks. Danach geht die Routine in der Kopie durch alle Sheets und
> macht eine "Copy-Paste Values" um die Formeln in Werte umzuwandeln.
>
> Workbooks(TargetFileName).Sheets(i).Cells.Copy
> Workbooks(TargetFileName).Sheets(i).Cells.PasteSpecial Paste:=xlValues
>
> Dabei gibt es ein Problem: sobald auf einem der Sheets (im ActiveWorkbook
> und damit dann auch in der Kopie) der Cursor/Selektion auf einem Chart
> steht, funktioniert das "Copy-Paste Values" nicht mehr auf diesem Sheet.
Hmmm, wenn ein eigebettetes Diagramm auf einem nicht aktiven Tabellenblatt
selektiert ist, tangiert dies die Copy/Paste-Methode nicht; die Werte
werden trotzdem übertragen.
Wenn allerdings eines der Tabellenblätter ein Diagrammblatt ist, könntest
Du dieses wie folgt ausnehmen:
Workbooks(TargetFileName).Worksheets(i).Cells.Copy
Workbooks(TargetFileName).Worksheets(i).Cells.PasteSpecial Paste:=xlValues
Und um die Selektion auf dem aktiven Tabellenblatt zu prüfen, könntest Du
etwa folgendes einsetzen:
If TypeName(Selection) <> "Range" Then
MsgBox "Es ist keine Zelle selektiert"
End If
Kommst Du damit weiter?
--
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -
[Win 2000Pro SP-4 / xl2000 SP-3]
clevere Lösung ... ! Getested und tut prima ... !
Warum das Copy_paste_values nicht funktioniert weisst du nicht zufällig?
Danke & Gruss
Thomas Schulze
"Melanie Breden" <Melanie.Br...@mvps.org> wrote in message
news:brusf1$7qvm2$1...@ID-200118.news.uni-berlin.de...
danke für die Hinweise !
Das Coding werd ich ausprobieren um die Situation abzufangen.
Für den anderen Hinweis weiss ich nicht ob ich dich verstanden habe.
Das Copy_paste_value problem tritt bei mir auf, wenn ich auf dem AKTIVEN
Tabellenblatt ein eingebettes Diagramm habe und dieses selektiert ist
... und ich dann versuche das Sheet mit
... Cells.Copy
... Cells.PasteSpecial Paste:=xlValues
mit den Werten zu füllen.
Manuell funktioniert das ... allerdings nicht mit diesem VBA Teil ...
For i = 1 To ActiveWorkbook.Sheets.Count
Workbooks(TargetFileName).Sheets(i).Activate
Workbooks(TargetFileName).Sheets(i).Cells.Copy
Workbooks(TargetFileName).Sheets(i).Cells.PasteSpecial Paste:=xlValues
'copy mode off and Cursor position to Cell A1
Application.CutCopyMode = False
Cells(1, 1).Select
Next i
Vielleicht hast du ja noch eine Idee was mit dem Copy-paste-values falsch
sein könnte.
Danke & Gruss
Thomas Schulze
"Thomas Ramel" <t.r...@MVPs.org> wrote in message
news:3FE2FAEE...@MVPs.org...
Thomas Schulze schrieb:
>
> Für den anderen Hinweis weiss ich nicht ob ich dich verstanden habe.
> Das Copy_paste_value problem tritt bei mir auf, wenn ich auf dem AKTIVEN
> Tabellenblatt ein eingebettes Diagramm habe und dieses selektiert ist
> ... und ich dann versuche das Sheet mit
> ... Cells.Copy
> ... Cells.PasteSpecial Paste:=xlValues
> mit den Werten zu füllen.
Ja, das stimmt - ich hatte dies aus dem Code nicht geshlossen, sondern
angenommen, Du meintest ein nicht aktives Blatt
Füge die folgende Zeile hinzu, dann müsste es ebenfalls klappen:
> Manuell funktioniert das ... allerdings nicht mit diesem VBA Teil ...
>
> For i = 1 To ActiveWorkbook.Sheets.Count
> Workbooks(TargetFileName).Sheets(i).Activate
If TypeName(Selection) <> "Range" Then Range("A1").Select
> Workbooks(TargetFileName).Sheets(i).Cells.Copy
> Workbooks(TargetFileName).Sheets(i).Cells.PasteSpecial Paste:=xlValues
>
> 'copy mode off and Cursor position to Cell A1
> Application.CutCopyMode = False
> Cells(1, 1).Select
> Next i
BTW: Weshalb aktivierst Du die Tabellenblätter jeweils?
> If TypeName(Selection) <> "Range" Then Range("A1").Select
jetzt hab ich's geschnallt (mit der MsgBox Lösung war ich irgendwie
verwirrt) ... und wieder dazugelernt ...
> BTW: Weshalb aktivierst Du die Tabellenblätter jeweils?
Gute Frage .. ! Das müssen Überreste aus meiner Selektiererzeit sein .. ;-)
Danke für die Hilfe !
Schönes WE
Thomas Schulze
Thomas Ramel schrieb:
Thomas Schulze schrieb:
>
> > If TypeName(Selection) <> "Range" Then Range("A1").Select
> jetzt hab ich's geschnallt (mit der MsgBox Lösung war ich irgendwie
> verwirrt) ... und wieder dazugelernt ...
Fein, das freut mich :-)
> > BTW: Weshalb aktivierst Du die Tabellenblätter jeweils?
> Gute Frage .. ! Das müssen Überreste aus meiner Selektiererzeit sein ..
> ;-)
Dann ist es ja gut, sind diese nun vorbei ;-)