Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

esportare testo da macro di Corel Draw

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

esportare testo da macro di Corel Draw

Postdi wallace&gromit » 19/05/22 07:26

Ciao, so che non è prevista la consulenza per Corel Draw, ma forse potete darmi uno spunto per come chiudere questa macro, che è scritta con vba, analogamente ad office.

La struttura l'ho già elaborata e mi permette di rilevare le coordinate di ogni nodo di una polilinea.
Riesco per esempio a scrivere tutti questi dati in una variabile e a visualizzarli in un messaggio.
Poi però non riesco ad esportarli in un file txt (o meglio direttamente excel).
La macro è questa (l'ultima istruzione non funziona, l'ho lasciata per mostrare il tentativo che ho fatto):
Codice: Seleziona tutto
Sub Nodi()
     Dim t As Variant

     ActiveDocument.Unit = cdrMillimeter
 
    MsgBox ("nessun oggetto, seleziona una figura")
    Exit Sub
    End If
   
    If ActiveSelection.Shapes.Count > 1 Then
    MsgBox ("troppi oggetti, seleziona una sola figura")
    Exit Sub
    End If
   
    If ActiveShape.Type <> 3 Then
    MsgBox ("l'oggetto deve essere una polilinea (non rettangolo o ellisse)")
    Exit Sub
    End If

    QuantiNodi = ActiveDocument.ActiveShape.Curve.Nodes.Count
    For i = 1 To 5 'QuantiNodi
    CoordX = ActiveDocument.ActiveShape.Curve.Nodes.Range(i).PositionX
    CoordY = ActiveDocument.ActiveShape.Curve.Nodes.Range(i).PositionY
    t = t & CoordX & "|" & CoordY & vbCr
   
    Next i
    MsgBox (t)
   
't.ExportToFile "C:\Users\marco\Desktop\corelobjects.txt"

End Sub
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2089
Iscritto il: 16/01/12 14:21

Sponsor
 

Re: esportare testo da macro di Corel Draw

Postdi Anthony47 » 19/05/22 09:00

Vedi se questo codice e' utilizzabile nel tuo caso:
Codice: Seleziona tutto
'Dichiarazioni nuove:
Dim XLApp As Object
Dim xWB As Object
Dim wArr()



'Parte modificata (raccolta delle coordinate):
QuantiNodi = ActiveDocument.ActiveShape.Curve.Nodes.Count
ReDim wArr(1 To QuantiNodi, 1 To 2)

For I = 1 To 5 'QuantiNodi
    wArr(I, 1) = ActiveDocument.ActiveShape.Curve.Nodes.Range(I).PositionX
    wArr(I, 2) = ActiveDocument.ActiveShape.Curve.Nodes.Range(I).PositionY
    Debug.Print t & CoordX & "|" & CoordY          '????
Next I
   
'Parte finale
Set XLApp = CreateObject("Excel.Application")

Set xWB = XLApp.Workbooks.Add
XLApp.Visible = True
Stop
xWB.Sheets(1).Range("A2").Resize(QuantiNodi, 2).Value = wArr
xWB.SaveAs "C:\Directory\PippoNodi.xlsx"        '<<<
Stop
xWB.Close False
XLApp.Quit
Set XLApp = Nothing
MsgBox ("Creato file PippoNodi.xlsx")

End Sub

Come vedi propongo di memorizzare le coordinate in una matrice; alla fine creiamo una sessione Excel con un workbook e "stampiamo" la matrice su Foglio1; salviamo con un nome fisso e chiudiamo tutto.
Altre opzioni sono teoricamente possibili (es lavorare con una sessione gia' aperta di Excel, o direttamente sul file dove vorresti avere le coordinate; ma questo porrebbe qualche problema in piu' sull'indirizzamento degli oggetti CorelDraw che non saprei gestire.
Non so se il tuo vba dispone dell'istruzione Debug.Print, che uso per creare nella "finestra Immediata" un log delle coordinate, per confrontarlo con quanto registrato sul file. Se Debug.Print va in errore basta eliminare la riga.
Un paio di Stop fermano la macro per verificare cosa sta succedendo; ovviamente andrebbero poi eliminati.

Se non tutto fila liscio, allora...
Avatar utente
Anthony47
Moderatore
 
Post: 18264
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: esportare testo da macro di Corel Draw

Postdi wallace&gromit » 19/05/22 09:58

Ottimo!
Lo so che le matrici sono ancora uno dei miei vari punti deboli, dovrei esercitarmi di più (così come con il debug print).

Ho tolto le ultime istruzioni in modo da tenere aperto il file PippoNodi, da cui estraggo i valori che riporto poi nel file di elaborazione.

Ho notato che se il file PippoNodi.xls esiste già mi si ferma su un nuovo file di lavoro exel con già tutto ciò che mi serve. Quando poi chiudo trovo l'errore in corel che mi dice che voleva creare il file PippoNodi ma non c'è riuscito. In fondo a me basterebbe fermarmi prima, con la cartella nuova.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2089
Iscritto il: 16/01/12 14:21

Re: esportare testo da macro di Corel Draw

Postdi wallace&gromit » 19/05/22 10:15

Edit: ora funziona anche cancellando l'istruzione in cui si crea il file PippoNodi.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2089
Iscritto il: 16/01/12 14:21

Re: esportare testo da macro di Corel Draw

Postdi Anthony47 » 19/05/22 10:54

Se funziona, quasi al primo colpo, abbiamo esaurito la nostra dose quotidiana di cu** pardon, di fortuna.

Se hai cancellato le ultime istruzioni, e avevi gia' Excel apero, allora tieni presente che sei rimasto con due sessioni Excel attive ma non comunicanti tra loro.
Io preferirei una soluzione piu' pulita, dove quanto creato dalla macro CorelDraw venga eliminato; suggerisco quindi di killare il file di output a inizio macro, in modo da non aver intoppi a salvarlo alla fine
Poi nel tuo file principale potresti mettere un "collegamento" a PippoNodi, usando Menu /Dati /Recupera dat; da File.

Corrisponde a questa versione:
Codice: Seleziona tutto
'Dichiarazioni nuove:
Dim XLApp As Object
Dim xWB As Object
Dim wArr()



'Parte modificata (raccolta delle coordinate):
QuantiNodi = ActiveDocument.ActiveShape.Curve.Nodes.Count
ReDim wArr(1 To QuantiNodi, 1 To 2)
On Error Resume Next                                    ' KILL del file da ricreare
    Kill "C:\Directory\PippoNodi.xlsx"
On Error GoTo 0


For I = 1 To 5 'QuantiNodi
    wArr(I, 1) = ActiveDocument.ActiveShape.Curve.Nodes.Range(I).PositionX
    wArr(I, 2) = ActiveDocument.ActiveShape.Curve.Nodes.Range(I).PositionY
    Debug.Print t & CoordX & "|" & CoordY          '????
Next I
   
'Parte finale
Set XLApp = CreateObject("Excel.Application")

Set xWB = XLApp.Workbooks.Add
XLApp.Visible = True
Stop
xWB.Sheets(1).Range("A2").Resize(QuantiNodi, 2).Value = wArr
xWB.SaveAs "C:\Directory\PippoNodi.xlsx"
Stop
xWB.Close False
XLApp.Quit
Set XLApp = Nothing
MsgBox ("Creato file PippoNodi.xlsx")

End Sub

Comunque l'utente sei tu; insomma fai come ti viene meglio!
Avatar utente
Anthony47
Moderatore
 
Post: 18264
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: esportare testo da macro di Corel Draw

Postdi wallace&gromit » 19/05/22 16:54

Sono per la non violenza e "simpatizzante vegano", quindi non killo nulla :lol:
Nessun problema ad avere due o più sessioni, il file di base è già tutto bello strutturato per ospitare i nuovi dati, che preferisco copiare ed incollare di volta in volta dai file creati con la macro.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2089
Iscritto il: 16/01/12 14:21


Torna a Applicazioni Office Windows


Topic correlati a "esportare testo da macro di Corel Draw":


Chi c’è in linea

Visitano il forum: Nessuno e 19 ospiti