Inhalte von Excel-Tabelle in Listfeld
#1
Ein freundliches Hallo hier ins Forum!

ich versuche gerade ein Listfeld im vba Formular(Corel Draw) über eine Excel Tabelle zu füllen.
Im Prinzip: Excel Datei auslesen und aus Tabellenblatt 1 direkt die Spalte A in ein Listfeld einlesen.

Kann mir hierbei jemand auf die Sprünge helfen?

Danke euch vorab und viele Grüße
Stefan

Betriebssystem / Grafik-Software: Corel Draw
Zitieren
#2
Moin,

"auf die Sprünge" ..... Seriendruck in die Suche eingeben  Wink

Hier ein paar Beispiele:

https://forum.juergens-workshops.de/show...eriendruck

https://forum.juergens-workshops.de/show...eriendruck

https://forum.juergens-workshops.de/show...eriendruck

Betriebssystem / Grafik-Software: Win10 64 bit; Corel Graphics Suite 2019; 64 bit
Zitieren
#3
Hallo Stefan,

Ich habe aus Piets Links eine GMS zusammenkopiert und als ZIP angehängt:

[Bild: xlcdrh8kx9.gif]

Excel muss laufen, sonst klappt es nicht.

Gruß

Koter


Angehängte Dateien
.zip   Excel1.zip (Größe: 9,42 KB / Downloads: 1)
Zitieren
#4
Hallo Stefan,

die Frage aus der PN beantworte lieber hier.
Ich sehe keinen Grund das Thema vertraulich zu behandeln.

Du hast mir diesen Code gesendet und mich gebeten das in ein Excel-Makro zu „übersetzen“.

Code:
Dim ea As Rect
Filter As ExportFilter
Set ea = CreateRect(ActivePage.LeftX, ActivePage.BottomY, ActivePage.SizeWidth, ActivePage.SizeHeight)
sp = "C:\Test\Test"
Set Filter = ActiveDocument.ExportBitmap(sp + ".jpg", cdrJPEG, cdrCurrentPage, cdrRGBColorImage, 1600, 1600, 300, 300, Transparent:=False, ExportArea:=ea)
Filter.Finish

Das Excel-Makro könnte so aussehen:

Code:
Option Explicit

Sub Coreltest()
   Const cdrCurrentPage As Long = 1
   Const cdrRGBColorImage As Long = 4
   Const cdrJPEG As Long = 774
   
   Dim CDraw As Object, CDDoc As Object, CDSeite As Object, CDFilter As Object, se As Object
   Dim sp As String

   Set CDraw = GetObject("", "CorelDraw.Application.17")
   
   If CDraw.Visible Then
       CDraw.InitializeVBA
   Else
       MsgBox "CorelDraw läuft nicht!", vbCritical, "Fehler"
       Exit Sub
   End If
   
   Set CDDoc = CDraw.ActiveDocument
   Set CDSeite = CDraw.ActivePage
   
   sp = "C:\Test\Test"
   
   Set se = CDraw.CreateStructExportOptions
   With se
       .ImageType = cdrRGBColorImage
       .Transparent = False
       .SizeX = 1600
       .SizeY = 1600
       .ResolutionX = 300
       .ResolutionY = 300
       Set .ExportArea = CDraw.CreateRect(CDSeite.LeftX, CDSeite.BottomY, CDSeite.SizeWidth, CDSeite.SizeHeight)
   End With

   Set CDFilter = CDDoc.ExportEx(sp & ".jpg", cdrJPEG, cdrCurrentPage, se, Nothing)
   CDFilter.Finish
   
   Set CDraw = Nothing
End Sub

Bei „GetObject“ musst Du die Nummer Deiner Version eintragen. Die 17 steht für X7.
Die Definition der Konstanten am Anfang des Makros kannst Du auch weglassen und nur die Werte verwenden.
Excel kennt natürlich keine Corel-Konstanten.

Ich rate Dir möglichst viele Programmteile in CorelDraw zu erstellen und in Excel nur das nötigste zu machen.
Wie Du am Codebeispiel sehen kannst ist es aufwändiger, CorelDraw von Excel aus zu programmieren.
Das gilt natürlich auch umgekehrt.

Viel Spaß und viel Erfolg beim Programmieren!

Gruß

Koter

Nachtrag: Wenn Du auf die Frage in der zweiten PN noch eine Antwort brauchst melde Dich bitte hier noch einmal.
Zitieren
#5
Das mit dem Export funktioniert genau so, wie ich es mir vorgestellt habe! Vielen Herzlichen Dank an Koter!

Ich würde mich tierisch über eine solch ähnliche Prozedur auch für den Import von Cdr-Dateien freuen, bitte ebenfalls aus Excel heraus :-)

Betriebssystem / Grafik-Software: Corel Draw
Zitieren
#6
Hallo Stefan,

der Code für den Import könnte so aussehen:

Code:
Sub ImportCDR()
   Dim CDraw As Object, CDFilter As Object
   
   Set CDraw = GetObject("", "CorelDraw.Application.17")
   
   If CDraw.Visible Then
       CDraw.InitializeVBA
   Else
       MsgBox "CorelDraw läuft nicht!", vbCritical, "Fehler"
       Exit Sub
   End If
   
   Set CDFilter = CDraw.ActiveDocument.ActiveLayer.ImportEx("C:\Test\Test.cdr", 0, Nothing)
   CDFilter.Finish
   
   Set CDraw = Nothing
End Sub

Gruß

Koter
Zitieren
#7
Ich habe eben mal den Import ausprobiert, leider kommt ständig der Fehler: '-2147467259 (80004005)

Automatisierungsfehler
Unbekannter Fehler

Ganz komisch... bitte nochmal um Hilfe! Danke Koter!

Betriebssystem / Grafik-Software: Corel Draw
Zitieren
#8
Hallo Stefan,

mit X7 und Excel 2013 klappt es. Deshalb kann ich leider nicht sagen, warum es bei Dir nicht geht.

Du kannst versuchen die Importprozedur in CorelDraw zu schreiben und von Excel starten.

Wenn Du z.B in CorelDraw eine GMS namens „Excel1“ anlegst, dort ein Modul namens „ImportModul“ erstellst und die Prozedur „import1“ einfügst kannst Du diese von Excel starten:

CorelDraw:
Code:
Public Sub import1(Dateiname As String)
   Dim impFilter As ImportFilter
   Set impFilter = ActiveDocument.ActiveLayer.ImportEx(Dateiname, 0)
   impFilter.Finish
End Sub

Excel:
Code:
Sub ImportCDR2()
  Dim CDraw As Object
 
  Set CDraw = GetObject("", "CorelDraw.Application.17")
 
  If CDraw.Visible Then
      CDraw.InitializeVBA
  Else
      MsgBox "CorelDraw läuft nicht!", vbCritical, "Fehler"
      Exit Sub
  End If
 
  Call CDraw.GMSManager.RunMacro("Excel1", "ImportModul.import1", "C:\Test\Test.cdr")
 
  Set CDraw = Nothing
End Sub

Teste zuerst, ob die Prozedur in CorelDraw funktioniert indem Du sie von dort aufrufst.
Ich hoffe es funktioniert auf diesem Wege.

Du solltest vielleicht Deine CorelDraw-Version mit in die Signatur schreiben.
Zitieren
#9
Ich habe es hingekriegt mit dem zuerst mitgeteilten Code, aber ich habe aus ImportEx nur Import gemacht und ich musste ein "On Error Resume Next" drüber schreiben. Jetzt geht es aber wunderbar! Ich benutzt Corel Draw 2018 (Version 20) und Excel 2016.

Vielen herzlichen Dank und bestimmt bis bald :-)

Betriebssystem / Grafik-Software: Corel Draw
Zitieren
#10
Hallo Stefan,

(18.02.2022, 18:19)StefanA1987 schrieb: ...ich musste ein "On Error Resume Next" drüber schreiben...

Wenn Du Import statt ImportEx verwendest brauchst Du den Filter nicht.
Wahrscheinlich löst CDFilter.Finish den Fehler aus.

Ich vermute, dass Du Dir „On Error“ sparen kannst, wenn Du den Befehl so aufrufst:
Code:
Call CDraw.ActiveDocument.ActiveLayer.Import("C:\Test\Test.cdr", 0, Nothing)
Set CDraw = Nothing

Gruß

Koter
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Tabelle ausfüllen? Eichhorn 10 2.565 26.07.2024, 14:01
Letzter Beitrag: peterjaeckel
  Inhalte-Zentrale wird eingestellt OsCor 2 1.212 15.08.2020, 15:22
Letzter Beitrag: OsCor
  Aus Excel angaben Zeichnen? DJMC 7 2.202 22.07.2019, 16:16
Letzter Beitrag: koter
  Für X7 Cliparts und andere Inhalte herunterladen landbastler 5 1.809 10.11.2017, 19:41
Letzter Beitrag: landbastler
  Textfarbe gesamte Tabelle ändern tuco 6 2.193 22.05.2017, 12:23
Letzter Beitrag: norre
  von excel nach coreldraw -> RGB / CMYK view2lord 6 3.114 13.06.2016, 15:10
Letzter Beitrag: mvm
  Export von Koordinaten als Text oder Tabelle Highkey 3 1.729 31.08.2015, 04:37
Letzter Beitrag: koter
  Corel Connect Inhalte Zentrale geht nicht... TottiSB 5 2.389 22.10.2014, 09:41
Letzter Beitrag: TottiSB
  VBA Script erstellen - automatische Tabelle erstellen phs 1 2.922 29.04.2014, 20:00
Letzter Beitrag: koter
  Tabelle erstellen? Tüfftele 4 1.884 24.04.2014, 22:29
Letzter Beitrag: Tüfftele