Deutsch
Forum

Bitmap in Excel einfügen

 

Stephan
Sonneborn
Hallo zusammen,

weiß jemand, wie man ein mit Profan erzeugtes Bitmap (Memorybitmap) nach Excel importiert?

Hintergrund:
In einem Berechnungsprogramm wird u.a. ein Querschnitt erzeugt und dieser dann berechnet. Um die Ergebnisse der Berechnung sauber auszugeben (ohne großen Programmieraufwand zu treiben) sollen die Ergebnisse über OXC nach Excel geschoben werden. Excel dient also nur als Ausgabemedium.
Um die eine oder andere Berechnung zu verdeutlichen und um den erzeugten Querschnitt abzubilden, soll ein Bild in Excel importiert werden, was von Profan erzeugt wurde.
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
19.01.2012  
 




Sascha
Haak
Hallo Stephan,

hab ähnliches schon mal gemacht. Vielleicht geht es besser, aber ich bin wie folgt vorgegangen.
Bild in Zwischenablage kopiert, Exceltabelle aufgerufen und in VBA das Bild aus der Zwischenablage geholt. (In der Regel gehts mit "ActiveSheet.paste") so klappts
bei mir Excel XP.

Gruß
Sascha
 
XProfan 11
Alles wird gut!
19.01.2012  
 




Stephan
Sonneborn
Hallo Sascha,

vielen Dank für Deinen Tip. Jetzt habe ich zumindest die Bitmap in die Excel-Tabelle kopieren können. Wenn ich jetzt noch die Position und Größe bestimmen könnte, wärs geschafft...

Ich hab Pascals Quellcode etwas angepasst:
KompilierenMarkierenSeparieren
'****************** ocxPackage2-Demo: Excel 1
'****************** XProfan 10 / Windows XP / Office 2003
'****************** © by TCS (Uwe "Pascal" Niemeier) 04'2007
'--Alle Angaben ohne Gewähr!
'--Nutzung auf eigene Gefahr!
'--Funktion:
'--Es wird eine Instanz von Excel gestartet und sichtbar gemacht.
'--Danach wird eine neue Arbeitsmappe angelegt, das erste Blatt davon
'--beschriftet und einige Zellen mit Text gefüllt.
'--Danach wird das Gespeichert-Flag gesetzt, um eine Rückfrage beim Beenden zu verhindern.
window 100,10-500,500
usermessages 16
 $H Windows.ph
 $H ocx3a.ph
 $I ocx3a.inc
ocxInit()
var Excel&=ocxCreate("Excel.Application")
var WorkBooks&=ocxGet(Excel&,"WorkBooks")
var NewBook&=ocxMethod(WorkBooks&,"Add")
var Sheet&=ocxGet(NewBook&,"ActiveSheet")
var Range&=ocxGet(Sheet&,"Range","B2:C3")
ocxPut(Excel&,"Visible",1)
ocxPut(Sheet&,"Name","Made by Profan")
ocxPut(Range&,"Value","Test")
ocxMethod(Range&, "select")
ocxMethod(Sheet&, "Paste")
ocxPut(NewBook&,"Saved",1)
ocxRelease(Range&,Sheet&,NewBook&,WorkBooks&,Excel&)
ocxDeInit()

Damit wird ein Bild in der Zwischenablage im markierten Bereich (links oben) eingefügt. Wie kann ich nun noch die Größe (Abmessungen) des Bildes beeinflussen?
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
19.01.2012  
 




E.T.
...mal so ganz simpel betrachtet: Wenn bekannt ist, in welcher Größe das Bild eingefügt werden soll, warum dann nicht gleich das (Memorybitmap)  in der passenden Größe erstellen ??

... oder das erzeugte Bild per @Create("hSizedPic", 0, &MEMBMP,...  anpassen und dann verwenden
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
20.01.2012  
 




Sascha
Haak
In Excel geht es so weiter:
Nach dem Paste ist das Bild noch aktive dann

Selection.ShapeRange.ScaleWidth 0.4, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.4, msoFalse, msoScaleFromTopLeft


Mit den Werten 0.4 musste Du rumspielen bis die Größe passt

Selection.ShapeRange.IncrementLeft 20
Selection.ShapeRange.IncrementTop 20


Hier setzt DU das Bild von Links und Oben an die Position.
 
XProfan 11
Alles wird gut!
20.01.2012  
 




Stephan
Sonneborn
Danke für Eure Vorschläge!

In einem Excel-Forum habe ich diesen Quellcode für VBA gefunden:
KompilierenMarkierenSeparieren
' Einfügen ohne Select von  Bert Körn
' Ausdruck.AddPicture(FileName, Verknüpfung, in Mappe speichern,
' Pos. Links, Pos. Oben, Breite, Höhe)
' erstes Offset Pos. Links 0 Zeilen und eine Spalte nach rechts
' zweites Offset Pos. Oben 0 Zeilen tiefer und 0 Spalten nach rechts

With ActiveSheet.Shapes.AddPicture(StBild, True, True,

    Target.Offset(0, 1).Left, Target.Offset(0, 0).Top, DoBreite * DoBildhoehe / DoHohe, DoBildhoehe)
    End With

Kann das jemand in OCX übersetzen?
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
20.01.2012  
 




Stephan
Sonneborn
Manchmal sollte man sich einfach mal etwas länger mit der supertollen Hilfedatei von Pascal beschäftigen.
So kommt das Bild nach Excel:
KompilierenMarkierenSeparieren
'****************** ocxPackage2-Demo: Excel 1
'****************** XProfan 10 / Windows XP / Office 2003
'****************** © by TCS (Uwe "Pascal" Niemeier) 04'2007
'****************** erweitert um das Einfügen eines Bildes/21.01.2012/Stephan Sonneborn
'--Alle Angaben ohne Gewähr!
'--Nutzung auf eigene Gefahr!
'--Funktion:
'--Es wird eine Instanz von Excel gestartet und sichtbar gemacht.
'--Danach wird eine neue Arbeitsmappe angelegt, das erste Blatt davon
'--beschriftet und einige Zellen mit Text gefüllt.
'--Danach wird das Gespeichert-Flag gesetzt, um eine Rückfrage beim Beenden zu verhindern.
'--Danach wird ein Bild nach Excel kopiert.'
window 100,10-500,500
usermessages 16
 $H Windows.ph
 $H ocx3a.ph
 $I ocx3a.inc
 $I ocxInfo3a.inc
ocxInit()
var Excel&=ocxCreate("Excel.Application")
var WorkBooks&=ocxGet(Excel&,"WorkBooks")
var NewBook&=ocxMethod(WorkBooks&,"Add")
var Sheet&=ocxGet(NewBook&,"ActiveSheet")
var Range&=ocxGet(Sheet&,"Range","A1;B2;C3")
ocxPut(Excel&,"Visible",1)
ocxPut(Sheet&,"Name","Made by Profan")
ocxPut(Range&,"Value","Test")
ocxPut(NewBook&,"Saved",1)
'Bild Einfügen:
VAR True& = 1
VAR x1& = 10
VAR y1& = 10
VAR dx& = 100
VAR dy& = 100
VAR Bild$ = "C:\desert.jpg"
VAR Shapes& = ocxGET(Sheet&, "Shapes")
'ocxBROWSE(Shapes&)
VAR AddPic& = ocxMETHOD(Shapes&, "AddPicture", Bild$, True&, True&, x1&, y1&, dx&, dy&)
ocxRelease(Range&,Sheet&,NewBook&,WorkBooks&,Excel&)
ocxDeInit()
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
21.01.2012  
 




Andreas
Koch
Hallo zusammen,

zu dem Thema noch eine kurze Anmerkung. Excel scheint keine Dateinamen zu akzeptieren, die mit a,b,f,n,q,r,t oder z beginnen.

Schönen Gruß

Andreas
 
19.07.2012  
 



Klingt aber eher nach ESC-Sequenzen (siehe Hilfe) -

besser Doppelbackslash angeben um den Backslash zu maskieren -

vermutlich liegt das eher daran.

Also statt:
KompilierenMarkierenSeparieren
VAR Bild$ = "C:\desert.jpg"
eher:
KompilierenMarkierenSeparieren
VAR Bild$ = "C:\\desert.jpg"

angeben da es sonst ja mit den Buchstaben a,b,f,n,q,r,t oder z scheitern muss

bzw. ja garnicht funktionieren kann.
 
19.07.2012  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

11.142 Betrachtungen

Unbenanntvor 0 min.
Andreas Koch16.01.2019
Uwe Lang22.07.2016
RudiB.04.02.2016
Christof Neuß12.12.2014
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie