Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[VBA] Copy and Paste Image
#1
Halli, hallo am grünen Donnerstage....

Ich habe hier (eigentlich in einer Klasse) eine kleine Subroutine. Die macht was sie soll:

Code:
Sub CopyAndPaste(strImageName As String)
    wksData.Activate
    wksData.Shapes.Range(Array(strImageName)).Select
    Selection.Copy
    wksKFZNeu.Activate
    wksKFZNeu.Range("F1:G1").Select
    wksKFZNeu.Paste
End Sub

Meine Frage dazu:
Beim "Debuggen" ist mir aufgefallen das ich:

Das Arbeitsblatt indem sich das zu kopierende Bild befindet, aktivieren (oder auswählen) muss  UND
Dannach auch das Arbeitsblatt indem ich es einfügen möchte.

Ein kurzes knappes:

Code:
wksData.Shapes.Range(Array(strImageName)).Copy

wksCalculation.Range("F1:G1").Paste

genügt nicht.

Als "aufmerksamer" Leser meiner Lieblingsforen, befolge ich den Ratschlag sowenig wie möglich, bzw. gar nicht zu "Selecten".
Und dieses

Code:
wksData.Shapes.Range(Array(strImageName)).Copy

hab ich vom Makrorecorder.
Gibt es für das kpieren auch eine andere Möglichkeit als via .Range(Array(...))?

Danke vorab für eure Antworten
Zitieren
#2
Hallo,

ein Beispiel ohne Select ...

Code:
Sub Test()

' Kopieren...
 
  ThisWorkbook.Worksheets("Tabelle1").Shapes("Grafik 2").Copy
 
' Einfügen...
 
  ThisWorkbook.Worksheets("Tabelle2").Paste
 
' Position...
 
  ThisWorkbook.Worksheets("Tabelle2").Shapes( _
  ThisWorkbook.Worksheets("Tabelle2").Shapes.Count).Left = _
  ThisWorkbook.Worksheets("Tabelle2").Range("D4").Left
 
  ThisWorkbook.Worksheets("Tabelle2").Shapes( _
  ThisWorkbook.Worksheets("Tabelle2").Shapes.Count).Top = _
  ThisWorkbook.Worksheets("Tabelle2").Range("D4").Top
 
End Sub

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2022
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Zitieren
#3
Hallo Maninweb!

Danke für deine Amtwort

gut das mit dem "Array(...) kann man "umschiffen!
Das erste .Select kann man auch weglassen

Für das "Einfügen" (.Paste) scheint ein Select notwendig wenn man es an/in ein er bestimmten zelle einfügen möchte

Code:
Sub CopyAndPaste(strImageName As String)
    wksData.Activate
    wksData.Shapes(strImageName).Copy
    wksKFZNeu.Activate
    With wksKFZNeu
        .Cells(1, 6).Select
        .Paste
    End With
   
End Sub

für das Einfügen funktioniert ein "einfaches"

Code:
wksKFZNeu.Cells(1,6).Paste

nicht. Warum? <- ich möchte es nur verstehen.....
Zitieren
#4
Hallo,

du liest nicht gerne in irgendwelchen Hilfen nach, hab ich recht ? Cool Confused 

Weil nur das Worksheet-Object die Paste-Methode besitzt.
Das Cells-Object hat diese nicht.

Deshalb auch der Positionierungsabschnitt in Mourads Code.

Hast du nicht mal geschrieben, du wärst der Programmierer bei euch in der Firma ?

Sabina
Zitieren
#5
Danke flotter Feger für die Antwort und Hilfe....
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions