37414
Goto Top

Position von Grafik ändert sich nach Blattschutz

Hallo,

ich habe in einem anderen Thread eine Grafik (Foto) per Makro in eine bestimmte Zelle eines Tabellenblattes eingefügt.
Das funktioniert grundsätzlich gut. Jetzt funktioniert es auch, diese Grafik in einem anderen Tabellenblatt einzufügen.

Vorher war es ein Problem, die Grafik genau in die Zelle B34 im zweiten Tabellenblatt einzufügen.
Das funktioniert mit dem unten einkopierten Code aber nun grundsätzlich einwandfrei.

ABER...
Seitdem ich das Blatt geschützt habe, wird die Grafik zwar im zweiten Tabellenblatt eingefügt... aber viel zu weit oben und zu weit links.
Habe ich den Blattschutz nicht aktiviert, wird es an der richtigen Stelle eingesetzt.

Hat jemand von Euch da ne Idee?

Danke & Gruß,
imebro

Hier der grundsätzlich funktionierende Code:

Sub BilderImport()
  
 '** Dimensionierung der Variablen  
 Dim strVerzeichnis$, strDatei$
 Dim pct As Picture
 Dim lngZeile As Long 'Zeile zum Eintragen der Bilder  
 Dim lngSpalte As Long 'Spalte zum Eintragen der Bilder  
 Dim varBreite As Variant 'Spaltenbreite  
 Dim varHoehe As Variant
  
 '** Verzeichnis und Dateinamen definieren und auslesen  
 '** Hier wird automatisch der Desktop des angemeldeten Users genommen!!  
 strVerzeichnis = CreateObject("WScript.Shell").SpecialFolders("Desktop")  
 strDatei = Dir(strVerzeichnis & "\Unterschrift_test.jpg")  
 
 '** Tabellenblatt und Zelle angeben, wo das Bild eingefügt werden soll  
 Sheets("U-Antrag").Select  
 Range("B34").Select  
  
 '** Startzeile + Spalte festelegen  
 lngZeile = 34
 lngSpalte = 2
   
 '** Ermittlung der Spaltenbreite  
 varBreite = Columns("B:B").Width  
  
 Cells(lngZeile, lngSpalte).Select
 Cells(lngZeile, lngSpalte + 1) = strDatei  ' schreiben Dateinamen  
 Set pct = ActiveSheet.Pictures.Insert(strVerzeichnis & "\" & strDatei)  
     
 With ActiveSheet.Shapes(1)
   '** Auslesen der Breite  
   ActiveSheet.Shapes(1).Select
   Selection.ShapeRange.LockAspectRatio = msoTrue
   
   '** Bild etwas höher schieben  
   ActiveSheet. _
        Select
    ' Selection.ShapeRange.IncrementLeft 15  
    Selection.ShapeRange.IncrementTop -5
    
   '** Das Bild verankern  
    Selection.Placement = xlMoveAndSize
    Application.CommandBars("Format Object").Visible = False  
    
   '** Bild auf aktuelle Spaltenbreite skalieren  
   ' Selection.ShapeRange.Width = varBreite  
    
   '** Zeilenhöhe festlegen  
   varHoehe = ActiveSheet.Shapes(1).Height
   ' Rows(lngZeile).RowHeight = varHoehe  
  End With
        
 End Sub

Content-Key: 615634

Url: https://administrator.de/contentid/615634

Printed on: April 20, 2024 at 03:04 o'clock

Mitglied: 37414
37414 Oct 27, 2020 updated at 13:40:51 (UTC)
Goto Top
zwar hatte noch Niemand einen Kommentar zu meiner Frage erstellt.
Aber ich möchte Euch mitteilen, dass ich das Problem relativ pragmatisch gelöst habe face-wink

Habe einfach manuell per "Makro aufzeichnen" mal die kompletten Schritte erfaßt und jetzt klappt es - egal ob das Blatt geschützt ist oder nicht.

Hier mal der funktionierende Code (für die von Euch, die´s vielleicht interessiert):

Sub Bildimport()
'  
    Sheets("U-Antrag").Select  
    Range("B34:D34").Select  
    ActiveSheet.Pictures.Insert( _
        "C:\Users\Mein-Name\Desktop\Foto.jpg").Select  
    Selection.ShapeRange.IncrementLeft 108.75
    Selection.ShapeRange.IncrementTop 261.75
End Sub

Der Code ist ja nun erheblich kleiner und unkomplizierter. Tja, das kommt davon, wenn man zu dolle im Web sucht und dann irgendwelche Tipps kopiert face-smile

ERGEBNIS:
Bei dem Ganzen handelt es sich um einen völlig digitalen Urlaubsantrag.

Die Vorteile sind:
1) dass die Feiertage automatisch berechnet werden und natürlich auch Wochenenden. Beides (FT+WE) werden dann beim Eintrag des gewünschten Urlaubes nicht berücksichtigt.

2) man muss in jedem neuen Jahr einfach nur in einer einzigen Zelle das neue Jahr eintragen... die Feiertage inkl. WE errechnen sich dann automatisch (über das Tabellenblatt "Feiertage").

3) der Antrag kann in 2 Stufen freigeschaltet werden. Zunächst z.B. vom Abt.Leiter mit einem hinterlegten Code und danach erfolgt die endgültige Genehmigung durch die/den GF... ebenfalls durch einen hinterlegten Code.
Hat der Abt.Leiter sein OK gegeben, erscheint in der entspr. Zelle ein "OK" und der Hintergrund wird gelb. Nach der endgültigen Genehmigung durch die GF erscheint ein "genehmigt" und der Hintergrund wird grün.

4) der Antrag kann digital per Klick auf einen Button unterschrieben werden. Dies erfolgt über eine JPG-Datei, die nur auf dem jeweiligen Desktop des gerade nutzenden Users liegt.

5) Alle Urlaube des Jahres stehen in einem Urlaubsantrag erfaßt und die/der Mitarbeiter/-in kann sofort sehen, wieviel Urlaub bereits verbraten wurde und wieviel noch da ist face-smile

Ich bin sehr happy mit dieser Lösung und unser Buchhalter hat eben einen Luftsprung gemacht, nachdem ich ihm alles vorgeführt habe...

Schöne Grüße,
imebro