Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Grafik von Excel in die Wordtabelle (https://www.delphipraxis.net/198091-grafik-von-excel-die-wordtabelle.html)

Nimmersatt 3. Okt 2018 12:27

Grafik von Excel in die Wordtabelle
 
Hallo,

Ich will eine Grafik, die in einer Excel-Zelle hinterlegt ist, in eine Wordtabelle kopieren. Klappt nicht.

Ist statt einer Grafik ein Text hinterlegt, funktioniert es. Der Befehl lautet:

Delphi-Quellcode:
WordTabelle.Cell(1,1).Range.Text :=excel.cells[1,1].value;


Wie muß ich diese Befehlszeile entsprechend abändern, um die in der Excel-Zelle hinterlegte Grafik sichtbar u machen ?


mfg Nimmersatt

zeras 3. Okt 2018 12:55

AW: Grafik von Excel in die Wordtabelle
 
Ich meine, dass eine Grafik nicht in einer Zelle hängt, sondern nur dort platziert wird. Das würde das Problem erklären. Wie man aber aber die Grafik kommt, weiß ich nicht.

Delphi.Narium 3. Okt 2018 12:58

AW: Grafik von Excel in die Wordtabelle
 
Keine Ahnung, mein erster Versuch wäre:
Delphi-Quellcode:
WordTabelle.Cell(1,1).Range.value :=excel.cells[1,1].value;
Wenn ich in Excel mit Value ein Bild lesen kann, warum sollte ich das in Word als Text schreiben? Für mich wäre da beim Schreiben Value näherliegend.

Ob's geht? weiß nicht.

Nimmersatt 3. Okt 2018 13:48

AW: Grafik von Excel in die Wordtabelle
 
@delphi.Narium

Funktioniert nicht.

Ich versuche jetzt alle möglichen Shapes-Varianten auszuprobieren.



mfg Nimmersatt

Nimmersatt 3. Okt 2018 18:46

AW: Grafik von Excel in die Wordtabelle
 
Eine Grafik aus einem Verzeichnis einzulesen funktioniert, siehe hier

Delphi-Quellcode:
WordTabelle.Cell(1,1).range.InlineShapes.AddPicture('C:\eigene dateien\grafik 1.bmp',false,true);


Hat jetzt jemand eine Idee, wie die Grafik einer Excel-Zelle eingelesen werden kann ?


mfg Nimmersatt

zeras 3. Okt 2018 18:55

AW: Grafik von Excel in die Wordtabelle
 
Zitat:

Zitat von Nimmersatt (Beitrag 1414805)

Hat jetzt jemand eine Idee, wie die Grafik einer Excel-Zelle eingelesen werden kann ?

mfg Nimmersatt

Wie bekommst du eine Grafik in eine Excelzelle? Wenn ich aus der Zwischenablage importiere, dann liegt das Bild nicht in einer Zelle.
Hast du ein Beispiel?

KodeZwerg 3. Okt 2018 18:58

AW: Grafik von Excel in die Wordtabelle
 
Delphi-Quellcode:
Set p = ActiveSheet.Shapes.AddPicture(FileName:=PictureFileName,_
   linktofile:=msoFalse, savewithdocument:=msoCTrue, _ 
   left:=TargetCell.Left, Top:=TargetCell.Top, Width:=-1,_
   Height:=TargetCell.Height)
Gefunden hier. Hilft Dir das?

Nimmersatt 3. Okt 2018 19:10

AW: Grafik von Excel in die Wordtabelle
 
@Zeras

Na Grafik kopieren und bei der Excel-Zelle Inhalte einfügen.
Es gibt da keine Probleme Grafiken in Excel abzulegen.

Ich habe den Sinn deiner Frage nicht verstanden.


@Kodezwerg

Eine ähnliche Lösung habe ich schon gefunden, siehe hier

Delphi-Quellcode:
WordTabelle.Cell(1,1).range.InlineShapes.AddPicture('C:\eigene dateien\grafik 1.bmp',false,true);


Ich möchte aber die Grafik aus einer Excel-Zelle ablesen, die ich dort hinterlegt habe. Wo Excel genau diese Grafik abspeichert, weiss ich nicht.


mfg Nimmersatt

zeras 3. Okt 2018 19:16

AW: Grafik von Excel in die Wordtabelle
 
Zitat:

Zitat von Nimmersatt (Beitrag 1414809)
@Zeras

Na Grafik kopieren und bei der Excel-Zelle Inhalte einfügen.
Es gibt da keine Probleme Grafiken in Excel abzulegen.

Ich habe den Sinn deiner Frage nicht verstanden.

Ich bin nachwievor der Meinung, dass du zwar ein Bild in eine Zelle platzieren kannst, dieses aber nicht zur Zelle gehört, sondern nur durch die Position dort steht. Das Suchen des Bildes muss dann bestimmt nicht über die Zellinformation, sondern anderweitig passieren.

Unter hier steht etwas, wie man Bilder per VBA findet. Das kann man dann bestimmt auch im Excel implementieren.

KodeZwerg 3. Okt 2018 19:45

AW: Grafik von Excel in die Wordtabelle
 
Ich habe mir mal ein Kaufprodukt und dessen Features angeschaut, ich habe ja noch nie versucht ein Bild aus einer Excel Datei zu holen, aber bei denen stehts als not supported.

Du kannst Dir ja hier mal ein paar Macro Beispiele anschauen, mit genug Geduld und Com/Ole sollte dies auch mit Delphi möglich sein, mir fehlt momentan ersteres ;)

p80286 3. Okt 2018 21:20

AW: Grafik von Excel in die Wordtabelle
 
in #7 hat codezwerg gezeigt o in Excel eine Grafik abgelegt sein könnte!

Gruß
K-H

KodeZwerg 3. Okt 2018 21:48

AW: Grafik von Excel in die Wordtabelle
 
Ja und nein, das sagt Excel das eine embedded Datei an Koordinaten x,y hin soll, aber cell hat meines Wissens dadurch kein Objekt.
Ich bräuchte mal eine Test Excel Datei, hab sowas nicht, aber ich glaube mich erinnern zu können das man mit zip dekompression an embedded inhalte rankommt.
Falls TE mal ne Datei bereitstellt kann ich was testen.

Nimmersatt 3. Okt 2018 22:27

AW: Grafik von Excel in die Wordtabelle
 
aus

http://www.office-loesung.de/ftopic292832_0_0_asc.php


Bilder werden alle in Blatt "Bildersammlung" kopiert und
angeordnet. Gegebenenfalls Anpassen

Delphi-Quellcode:
Sub BilderSammeln()
Dim s As Shape
Dim wks As Worksheet
Dim wksZ As Worksheet
Dim dblTop As Double
Dim dblLeft As Double

Application.ScreenUpdating = False
Set wksZ = Worksheets("Bildersammlung") 'Anpassen

'Kopieren
For Each wks In ThisWorkbook.Worksheets
    If wks.Name <> wksZ.Name Then
        For Each s In wks.Shapes
            If s.Name Like "*Grafik*" Or _
               s.Name Like "*Bild*" Then
                s.Copy
                wksZ.Paste
            End If
        Next
    End If
Next

'Anordnung Untereinander
For Each s In wksZ.Shapes
    s.Top = dblTop
    s.Left = dblLeft
    dblTop = dblTop + s.Height
    dblLeft = 0
Next
Application.ScreenUpdating = False
End Sub

Kann das mal jemand in Delphi übersetzen ?

In meiner Exceldatei existiert kein "sichtbares" Blatt "Bildersammlung", wo angeblich alle Bilder kopiert und angeordnet sein sollen.



mfg Nimmersatt

p80286 4. Okt 2018 08:06

AW: Grafik von Excel in die Wordtabelle
 
Zitat:

Zitat von Nimmersatt (Beitrag 1414820)
In meiner Exceldatei existiert kein "sichtbares" Blatt "Bildersammlung", wo angeblich alle Bilder kopiert und angeordnet sein sollen.

Dann leg es doch an!?

Gruß
K-H

HolgerX 4. Okt 2018 08:21

AW: Grafik von Excel in die Wordtabelle
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm..

Wieso die Excel-Bilder nicht per Zwischenablage extrahieren (geht auch ohne Blatt "Bildersammlung") und dann per Paste in Word einfügen?

Im Anhang ist ein kleines Test-Tool, welches die Bilder in die Zwischenablage packt und dann in ein neues Word-Dokument, incl. der Row und Column Information.
(Erstellt mit D6 und Office 2013)

Hier brauchst Du dir nur die Positionierung für dein Word-Dokument anzupassen.

ghubi01 4. Okt 2018 21:32

AW: Grafik von Excel in die Wordtabelle
 
Hallo Nimmersatt,

hier ein Beispiel:

Delphi-Quellcode:
procedure BildvonExcelnachWord;
var
  WordApp,
  ExcelApp,
  NewWord,
  NewExcel: OleVariant;
  count: integer;
begin
  try
    ExcelApp:=CreateOleObject('Excel.Application');
  except
    exit;
  end;
  ExcelApp.Visible:=True;
  NewExcel:=ExcelApp.WorkBooks.Add;

  // Zwei Bilder untereinander laden
  ExcelApp.ActiveSheet.Pictures.Insert('C:\Users\...\Pictures\Bild1.JPG');
  // Meine Bilder belegen nur 26 Zeilen, also das 2. Bild ab Zeile 28 laden
  ExcelApp.Cells[28,1].Select;
  ExcelApp.ActiveSheet.Pictures.Insert('C:\Users\...\Pictures\Bild2.JPG');

  // gibt die Anzahl der vorhandenen Bilder zurück.
  count:=ExcelApp.ActiveSheet.Pictures.Count;

  // Wichtig alle oder mindestens ein Bild selektieren ( ...Pictures[1].Select;)
  ExcelApp.ActiveSheet.Pictures.Select;
  // Hier das 2. Bild in die Zwischenablage kopieren
  ExcelApp.ActiveSheet.Pictures[2].Copy;

  try
    WordApp:=CreateOleObject('Word.Application');
  except
    exit;
  end;
  WordApp.Visible:=True;
  NewWord:=WordApp.Documents.Add;
  WordApp.Selection.Paste;
end;
Skalierungen und Positionierungen sind jetzt nicht dabei berücksichtigt.
Vielleicht hilft Dir dieses Beispiel weiter.

Nimmersatt 5. Okt 2018 00:21

AW: Grafik von Excel in die Wordtabelle
 
Hallo Ghubi01,

Delphi-Quellcode:
  count:=ExcelApp.ActiveSheet.Pictures.Count;
  ExcelApp.ActiveSheet.Pictures.Select;
  ExcelApp.ActiveSheet.Pictures[1].Copy;
  WordApp.Selection.Paste;

Als ich einen Teil deines Codes in meinem Programm testete, gab es Fehlermeldungen.
Als ich dein ganzes Programm testete, funktionierte es reibungslos.:thumb:

Könnten Positionsdaten der Bilder mitgeliefert werden, damit ich weiß, welches Bild das Richtige ist ?


Kann gar nicht glauben, dass nach all dem Ärger heute das Problem gelöst sein soll.


mfg Nimmersatt

Nimmersatt 5. Okt 2018 00:43

AW: Grafik von Excel in die Wordtabelle
 
Dank auch an HolgerX, da kann ich vieles lernen.:thumb:

ghubi01 5. Okt 2018 10:26

AW: Grafik von Excel in die Wordtabelle
 
Hallo Nimmersatt,

ich weis nicht, ob es so sinnvoll ist die Bilder über ihre Position zu identifizieren.

Du kannst aber jedem Bild schon beim Laden in die Excel-Datei einen eindeutigen Namen mitgeben und darüber das gewünschte Bild Dir holen.
Delphi-Quellcode:
...
  ExcelApp.ActiveSheet.Pictures.Insert('C:\Users\...\Pictures\Bild1.JPG').Name:='MyBild1';

  ExcelApp.Cells[28,1].Select;
  ExcelApp.ActiveSheet.Pictures.Insert('C:\Users\...\Pictures\Bild2.JPG').Name:='MyBild2';

  ExcelApp.ActiveSheet.Pictures.Select;

  ExcelApp.ActiveSheet.Pictures('MyBild2').Copy;
...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz