| |
|
|
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 |
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
| Klingt aber eher nach ESC-Sequenzen (siehe Hilfe) -
besser Doppelbackslash angeben um den Backslash zu maskieren -
vermutlich liegt das eher daran.
Also statt: KompilierenMarkierenSeparierenVAR Bild$ = "C:\desert.jpg"
eher: KompilierenMarkierenSeparierenVAR 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. |
|
|
| |
|
|