23.12.2016, 22:05
Hallo,
Ja, das geht auch:
![[Bild: excelbsplinehzxiq.gif]](http://abload.de/img/excelbsplinehzxiq.gif)
Das Makro ist in der angehängten Excel-Datei enthalten.
Excel und CorelDraw müssen laufen.
In CorelDraw muss eine Datei geöffnet sein.
Im VBA-Code muss die CorelDraw-Version angepasst werden:
Für X6 müsste also Version = "16" stehen.
(Getestet mit Excel 2013 und CorelDraw X6/X7)
Falls es jemand lieber per Hand nachbauen möchte:
Die Formel in Zelle B2 ist: =SIN(A2)*5+(29,7/2)
(Neuerdings treiben ja die längst tot geglaubten Makro-Viren wieder ihr Unwesen)
Gruß
Koter
norre schrieb:...vielleicht geht das auch anderstrum?
Ja, das geht auch:
![[Bild: excelbsplinehzxiq.gif]](http://abload.de/img/excelbsplinehzxiq.gif)
Das Makro ist in der angehängten Excel-Datei enthalten.
Excel und CorelDraw müssen laufen.
In CorelDraw muss eine Datei geöffnet sein.
Im VBA-Code muss die CorelDraw-Version angepasst werden:
Code:
Sub bspl()
Dim CDraw
Dim Erster As Integer, Letzter As Integer, z As Integer
Dim H As Double
Dim Version As String
Dim wert As Boolean
[color=#B22222]Version = "17"[/color]
H = 29.7 / 2
Erster = 1
wert = True
z = 1
Do While wert
z = z + 1
If Cells(z, 1).Value > 0 Then Letzter = Cells(z, 1).Value
wert = Cells(z, 1).Value > 0
Loop
Letzter = 20
Set CDraw = GetObject("", "CorelDraw.Application." & Version)
With CDraw
.ActiveDocument.Unit = 4
Set bs = .ActiveDocument.CreateBSpline(Letzter, False)
For i = Erster To Letzter
If i = Erster Or i = Letzter Then
bs.ControlPoints(i).SetProperties Cells(i + 1, 1).Value, Cells(i + 1, 2).Value, True
Else
bs.ControlPoints(i).SetProperties Cells(i + 1, 1).Value, Cells(i + 1, 2).Value, False
End If
Next i
.ActiveLayer.CreateBSpline bs
End With
Set CDraw = Nothing
End Sub
Für X6 müsste also Version = "16" stehen.
(Getestet mit Excel 2013 und CorelDraw X6/X7)
Falls es jemand lieber per Hand nachbauen möchte:
Die Formel in Zelle B2 ist: =SIN(A2)*5+(29,7/2)
(Neuerdings treiben ja die längst tot geglaubten Makro-Viren wieder ihr Unwesen)
Gruß
Koter