Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
508to512
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
508to512
508to512
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Selection.ShapeRange

Selection.ShapeRange
30.10.2004 16:45:30
Stefan
Guten Tag
Ich füge mit VBA (Ctrl + V) eine neue (mit PrintScreen) Grafik ein. Nun möchte ich diese in der Excel-Tabelle noch bearbeiten. Aus Sicherheit, ob Einfügen funktioniert, möchte ich zuerst feststellen, ob überhaupt eine Grafik eingefügt worden ist (es gibt nur diese). Dann soll diese unbenannt werden mit einer Nummer, z.B. 80001 und dannach möchte ich den linken und den rechten Einzug kürzen. Wie könnte ich das geschickt anstellen. Wichtig ist mir die Code-Sicherheit, d.h. wenn keine Grafik in der Tabelle eingefügt worden ist, sollte der Code die Rountine verlassen. Wie könnte ich das machen?
Grüsse
Stefan

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selection.ShapeRange
K.Rola
Hallo,
gibt es außer dieser Grafik noch andere Shapes in dem Blatt, z.B. Schaltflächen?
Gruß K.Rola
AW: Selection.ShapeRange
Stefan
Guten Tag
Verflixt ja, Du hast Recht, noch eine einzige CommandBox, diese heisst cmbDrucken.
Grüsse
Stefan
AW: Selection.ShapeRange
K.Rola
Hallo,
das macht ja nichts, muss nur berücksichtigt werden.
Du kannst also eine ganz eingache Abfrage machen:
If activesheet.shapes.count 2 then exit sub
Btw., das mit dem Einzug habe ich nicht verstanden.
Gruß K.Rola
AW: Selection.ShapeRange
Stefan
Hallo
Wenn ich das per Makro aufzeichnung mache:
Application.CommandBars("Control Toolbox").Visible = True
Range("C6").Select
.Name = 88000 sollte möglich sein
ActiveSheet.Paste
Selection.ShapeRange.IncrementLeft -75.75
Selection.ShapeRange.IncrementTop -36.75
Selection.ShapeRange.PictureFormat.Brightness = 0.5
Selection.ShapeRange.PictureFormat.Contrast = 0.5
Selection.ShapeRange.PictureFormat.ColorType = msoPictureAutomatic
Selection.ShapeRange.PictureFormat.CropLeft = 144.01
Selection.ShapeRange.PictureFormat.CropRight = 144.01
Selection.ShapeRange.PictureFormat.CropTop = 144#
Selection.ShapeRange.PictureFormat.CropBottom = 144#
Application.CommandBars("Control Toolbox").Visible = False
Anzeige
AW: Selection.ShapeRange
K.Rola
Hallo,
leicht verwirrt, was hat die toolbox damit zu tun?
Gruß K.Rola
AW: Selection.ShapeRange
Stefan
Guten Abend
Tja, die habe ich versehentlich aktiviert. Ist nicht zu beachten (Werkzeugsammlung)
Grüsse
Stefan
AW: Selection.ShapeRange
K.Rola
Hallo,
nun nochmal zum Verständnis, du erstellst mit der Taste Druck/print einen screenshot
und willst diesen dann mit VBA in die Tabelle einfügen und formatieren, soweit richtig?
Ggf. muss ich noch weiter nachbohren.
Mit Increment platzierst du das teil ja relativ zur Einfügeposition. ist das so gewollt, oder soll die Position absolut bestimmt werden und falls ja, wie?
Gruß K.Rola
Anzeige
AW: Selection.ShapeRange
Stefan
Guten Abend
Ich habe auch ein bischen getüfftelt. Und folgendes geht. Ich bin mir aber nicht sicher, ob das nicht noch besser gemacht werden könnte. Eigentlich mag ich .Activate und .select nicht besonders. Könnte man das noch direkter und raffinierter machen als mein ziemlich plumper Code. Aber für das Verständnis hilfts.
Ich bin für jeden Hinweis dankbar. Das hilft auch zum mich zu verbessern.
Besten Dank.
Grüsse
Stefan
With Workbooks(CONvorlage).Worksheets("Daten")
.Activate
.Range("C5").Select
SendKeys "^v", True
.Range("D48").Value = Application.UserName
If .Pictures.Count = 1 Then
.Pictures(1).ShapeRange.Name = txtName.text
With .Shapes(txtName.text)
.PictureFormat.CropLeft = 11#
.PictureFormat.CropRight = 27#
.PictureFormat.CropTop = 22#
.PictureFormat.CropBottom = 9#
.Width = 500
.LockAspectRatio = msoTrue
End With
Else
MsgBox "Das 'Bild' konnte leider nicht erfolgreich" & Chr(13) & _
"eingefügt werden. Bitte versuche die" & Chr(13) & _
"Erstellung noch einmal. Besten Dank.", vbInformation, _
"Administrator"
Exit Sub
End If
end with
Anzeige
AW: Selection.ShapeRange
K.Rola
Hallo,
ja, das geht auch ohne select ect., nur weiß ich noch immer nicht, wo das Bild herkommt?
Deshalb hatte ich zuvor gefragt, ob du manuell einen screenshot machst?
Gruß K.Rola
AW: Selection.ShapeRange
Stefan
Guten Abend
Eigentlich ist das so, ich starte aufgrund eines CommandButton-Ereignis aus einer UserForm heraus ein PrintScreen von der UserForm. Darauf startet eine Excel-Mappen-Vorlage und dort soll dann auf "C5" das geknipste Bild eingefügt und formatiert werden. Das Problem ist, dass ich einerseits für den PrintScreen den Fokus auf der Userform haben muss (diesen Code habe ich) und darauf den Fokus auf die Tabelle wechseln muss (geht anscheinend nur mit minimieren und maximieren der Excel-Application). Nur Wenn der Fokus (Aktives Windows) gesichert auf der Tabelle steht, kann ein Einfügen bei gleichzeitig offener UserForm gemacht werden (da hilft auch Modeless nichts). Deshalb meine fast ängstlichen bemühungen mit zusätzlichem .select und .activate. Aber ich habe keine Ahnung, ob das helfen würde. Hast Du eine Idee für die Vereinfachung?
Grüsse
Stefan
Anzeige
AW: Selection.ShapeRange
K.Rola
Hallo,
warum verklausulierst du deine Frage eigentlich so? Du willst also einen Sreenshot
von deinem userform in eine Tabelle einfügen, richtig?
Gruß K.Rola
AW: Selection.ShapeRange
Stefan
Hallo,
Genau so. Verklausulieren? Das derzeitige Problem bestand nicht beim PrintScreen und auch nicht auf dem Fokus der UserForm, auch nicht beim Oeffnen einer Arbeitsmappe, noch beim Einfügen. Sondern eben beim sicheren Ansprechen des 'pictures' und Formatieren derselben. Da interessiert mich, was es für Möglichkeiten gibt.
Grüsse
Stefan
AW: Selection.ShapeRange
K.Rola
Hallo,
na gut, lassen wir es mal dabei. Wie du ein vorhandenes Bild formatierst, bekommst du mithilfe des Makrorekorders heraus.
Gruß K.Rola
Anzeige
AW: Selection.ShapeRange
Stefan
Hallo
Ok. Ich verstehe zwischen den Zeilen, dass Du an einer besseren Lösung als via SendKey und PrintScreen gedacht hast und meinen Weg als ziemlich umständlich siehst. Natürlich wäre ein Hinzufügen eines Bildes mit gleichzeitigem Namensgebung möglich, jedoch kaum via SendKey-Tastenkombination. Das sehe ich ein. Doch das ist vom Ablauf hergesehen nicht anders möglich. Das Ganze bleibt eine, sagen wir mal, Krücke. Aber es ist leider derzeit nicht anders möglich als von einem in eine UserForm integriertem WebBrowser eine 1:1 Abbildung in eine Datei zu kriegen als via PrintScreen oder via "Snagit". Einen Ausdruck schon, dafür gibt es einen sensationellen Code, der die Druckeinstellung öffnet.
Trotzdem vielen Dank für Deine Bemühungen und noch einen schönen Rest des Wochenendes.
Grüsse
Stefan
Anzeige
AW: Selection.ShapeRange
K.Rola
Hallo,
das Problem ist, dass du nur in den Kathegorien denkst, die dir bekannt sind und nun
damit eine Lösung "basteln" willst. Das versperrt den Blick auf Alternativen, die du halt nicht kennst.
Gruß K.Rola
AW: Selection.ShapeRange
Stefan
Hallo,
Klare Worte und sie sind wahr. Jetzt bin ich zerknirscht. Sag jetzt bloss, dass es eine Alternative gibt, dann bin ich auch noch Paff. Denn ich suche schon lange und habe einiges ausprobiert.
Grüsse
Stefan

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige