Bildgrösse beim Übertrag ändern. VB->Excel

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Otti.

    Bildgrösse beim Übertrag ändern. VB->Excel

    Hallo Ihr lieben.

    Habe folgendes Problem, wo ich mal wieder nicht auf die Lösung komme.

    - Ich übertrage ein Bild nach Excel
    - Das Ursprungsbild ist 800 x 400

    Wie kann ich die Grösse des Bildes beim Übertrag verkleinern ???

    Code klappt soweit, ausser das das Bild in Excel zu gros ist.
    Hatte es so Verucht, aber klappt leider nicht.

    Quellcode

    1. Dim Logo As Image = Image.FromFile("mieter.bmp")
    2. Clipboard.SetDataObject(Logo)
    3. xls_ActiveSheet.Cells(51, 8).Select()
    4. xls_ActiveSheet.Paste(Width = 200, Height = 100)
    5. Clipboard.Clear()


    Wäre um Ideen oder Lösung glücklich

    Danke Euch im vorraus.
    wie wäre es das Bild vor dem ToClipboard schon zu vergrößern und verkleinern bzw. erst zu Pasten und danach das Bild neu zu skalieren?
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Vielleicht hilft dir das weiter. :)
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Was bekommst für eine Meldung?

    In einem With Block musst du mit .<Property> auf die heweilige Eigenschaft zugreifen.

    Visual Basic-Quellcode

    1. ​With Logo
    2. .Width = 200
    3. .Heigth = 100
    4. End With
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    ja was passiert da:
    du holst dir ein bild -> das ins clipboard ->das Objekt aus Clipboard wird gepastet. und dann änderst du das logo, was du weder im Clipboard noch gepastet hast. du musst iwie auf die eingefügte Instanz deines Bildes zugreifen.

    ber wie hab ich k.a. sry. :/
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    statt Activeworksheet.paste, nimmst du das Objekt aus deinem Clipboard, erstellst davon ein Image, das Resized zu und fügst es deinem Worksheet hinzu.
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Guten Morgen zusammen

    Bin nun ein bisschen weiter gekommen, allerdings noch ein dummer Fehler vermute ich.
    Hab es nun das ich die Position und Grösse des übertragenden Bildes angeben kann.
    Hier der Code mit Quelle von c:\

    Quellcode

    1. xls_ActiveSheet.Shapes.AddPicture("c:\mieter.bmp", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 343, 689, 130, 80)


    Nun zum Problem
    Wieso kann ich das Bild nicht aus meinem Projekt Ordner herraus hinzufügen?

    Quellcode

    1. xls_ActiveSheet.Shapes.AddPicture("mieter.bmp", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 343, 689, 130, 80)


    Wäre schön wenn er eine Lösung hätte, bin seid mehreren Tagen am verzweifeln. ;(
    Danke im Vorraus
    ich denke mal ein Bild im Projekt hat ähnlich wie Ressourcen einen gewissen Ordner und somit auch einen anderen Pfad als nur den Bildnamen.
    Oder Liegt das Bild direkt neben deinem skript?
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Offensichtlich nimmt deine AddPicture-Funktion nur absolute Pfade an. Leider doof.

    Was genau soll es denn im Endeffekt machen? Bilder aus dem Clipboard ins Sheet? Da könntest du das Problem haben, das ja keine Datei auf deinem Rechner vorhanden ist. Da müsstest du das Bild aus dem Clipboard als File abspeichern, dann ins Excel laden und nachfolgend die erstellte Datei wieder löschen. -> Schön ist anders.

    Oder willst du nur lokale Ressourcen in das Worksheet laden.?


    EDIT: @Otti

    Visual Basic-Quellcode

    1. ​Public Sub worksheet_activate()
    2. Dim p As Picture
    3. With Selection
    4. Set p = .Parent.Pictures.Paste
    5. p.Top = .Top
    6. p.Left = .Left
    7. p.Width = .Width
    8. p.Height = .Height
    9. End With
    10. End Sub


    hab da was gefunden, läuft ganz gut wie ich finde, nimmt das Bild aus dem Clipboard und pastet es dort hin wo du willst mit der Größe die du willst. siehe hier
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Acr0most“ ()

    @Acr0most

    Hey. Frohe Ostern gehabt zu haben.

    Ja so wollte ich es eigentlich machen, das Bild speichern, und anschließend löschen.

    So mache ich es bis jetzt, bis auf das dass gespeicherte Bild nicht gefunden wird. Oder mach ich grundsätzlich was falsch mit meinem Code ???

    Quellcode

    1. Dim unterschrift1 As New Bitmap(New Bitmap(800, 400))
    2. Dim graph1 As Graphics = Graphics.FromImage(unterschrift1)

    Quellcode

    1. Private Sub weiter1_Click......
    2. unterschrift1.Save("mieter.bmp", System.Drawing.Imaging.ImageFormat.Bmp)
    3. xls_ActiveSheet.Shapes.AddPicture("c:\mieter.bmp", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 343, 689, 130, 80)


    Wenn ich mir die Datei Mieter.bmp unter C: manuell speicher wird er auch gefunden, aber nicht aus meinen Projekt Ordner ?!?!? Obwohl sie vorhanden ist....
    Sprich...das geht nicht ->

    Quellcode

    1. Private Sub weiter1_Click......
    2. unterschrift1.Save("mieter.bmp", System.Drawing.Imaging.ImageFormat.Bmp)
    3. xls_ActiveSheet.Shapes.AddPicture("mieter.bmp", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 343, 689, 130, 80)
    Heyho,

    ich hoffe der Osterhase war fleißig :thumbsup:

    Aus meiner Sicht sollte so etwas in der Art des Rätsels Lösung sein:


    Du speicherst das Bild. Aber wohin? die Syntax

    Quellcode

    1. C:\bild.bmp
    ruft ja das bild unter C auf. also ruft dann

    Quellcode

    1. ​bild.bmp
    ein nicht vorhandenes Verzeichnis auf.
    Aus meiner Sicht muss auch das

    Quellcode

    1. ​unterschrift1.save
    an einen gewissen Pfad speichern. Den gilt es herauszufinden.

    Was ich so im Netz gesehen habe, wäre möglicherweise

    Quellcode

    1. ​Application.ActiveWorkbook.Path
    oder sowas der Pfad zu deinem zuvor gespeicherten Bild.



    LG Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    @Acr0most
    Hey Danke für deine schnelle Reaktion.
    Das Bild wird im "Debug" Ordner gespeichert, was ja auch klappt. Das Problem ist das es nicht aufgerufen wird.
    Deshalb habe ich mal testweise das bild auf c: kopiert, und da läd mein prog das.


    Alles zurück klappt doch nicht :cursing:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Otti“ ()