Condividi tramite

Interfacciarsi tramite excel con Solid Edge

Anonimo
2017-01-05T10:54:46+00:00

Salve a tutti, sono nuovo e poco esperto di VBA, mi diletto ogni tanto a realizzare qualche macro per uso interno all'ufficio, ma ora NON riesco a risolvere questo problema che vi sottopongo. 

Giornalmente nel mio lavoro vengono creati decine di file in formato "cad" questi file devono essere salvati, per prassi interna, anche in formato pdf e dxf con identico nome ma con aggiunta di un suffisso tipo "_N1" cioè facendo un esempio: 

il file "pippo"

deve essere salvato anche come 

pippo_N1.pdf 

pippo_N1.dxf 

Ovviamente la procedure standard sarebbe che dal programma cad faccio salva con nome due volte per i due formati (pdf e dxf).

Visto che già ora gestisco l'apertura del file tramite un foglio di excel, la mia idea sarebbe che digitando il nome del file sul foglio di excel , la macro mi apra il programma "cad" (Solid Edge) e realizzi i due salvataggi in automatico senza che io stia li a inserire per due volte il "nome del file" e per due volte fare "salva come"..ecc 

C'è qualcuno di questo forum che mi può dare qualche indicazione in merito? 

GRZ

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2017-06-01T05:27:01+00:00

    Ciao Riccardo,

    Sub main()

           

    Set objApp = GetObject(, "SolidEdge.Application")

        If objApp Is Nothing Then

            msg1 = MsgBox("Solid Edge non è aperto! Aprire Solid Edge.", vbCritical, "Attenzione")

            Exit Sub

        End If

    Set objApp = GetObject(, "SolidEdge.Application")

    Inoltre, per gestire la possibilità che SolidEdge sia chiuso, forse prova il seguente approccio:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Main()

        Set objApp = GetObject("SolidEdge.Application")

        If objApp Is Nothing Then

            Set objApp = CreateObject("SolidEdge.Application")

        End If

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-01-05T17:01:23+00:00

    Ciao Riccardo,

    l'esempio del codice che mi hai segnalato mi è noto anche perché è presente (in altra versione) nel cd di Solid Edge, ma non è proprio quello che cerco anche se non ti nascondo è la mia (attuale) alternativa.

    Infatti con quel programmino, non puoi modificare il nome quindi il "pippo.dft" viene convertito in "pippo.pdf" e non come vorrei io in "pippo_N1.pdf", invece di da il vantaggio di convertire intere cartelle di file...cosa buona e utile. Ma per quanto mi riguarda significa ogni volta rinominare tutti i file.....!!

    Dato le creazione del file pdf, sarebbe banale creare una macro per rinominarlo:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim sOldName As String, sNewName As String

        Const sPercorso As String = "C:\Users\Riccardo"

        sOldName = "Pippo.pdf"

        sNewName = Replace(sOldName, ".pdf", "_N1.pdf")

        Name sOldName As sNewName

    End Sub

    '<<=========

    Se vorresti spiegare come possono essere identificati i file di interesse, adatterò il codice per rinominare tutti i file.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2017-05-31T14:39:21+00:00

    Ciao Norman,

    ti allego come ho risolto..

    _____________________________________________________________________________________________________                 

    Sub main()

        Set objApp = GetObject(, "SolidEdge.Application")

        If objApp Is Nothing Then

            msg1 = MsgBox("Solid Edge non è aperto! Aprire Solid Edge.", vbCritical, "Attenzione")

            Exit Sub

        End If

        Set objApp = GetObject(, "SolidEdge.Application")

        Set objDft = objApp.ActiveDocument                 'Visualizza il tipo di file aperto

        strActEnv = objApp.ActiveEnvironment

        Range("B14").FormulaR1C1 = strActEnv

        revnum = objDft.Properties("ProjectInformation").Item(2).Value 'Revisione N° dalle proprietà personalizzate (custom) del dft

        Range("D9").Select

        Set objDft = objApp.ActiveDocument

        nome = objDft.Name

        nomeDir = (Left(objDft.FullName, Len(objDft.Name)))

        nome1 = (Left(objDft.FullName, Len(objDft.FullName) - 4)) + "_ID" + revnum + ".pdf"

        pathname = (Left(objDft.FullName, Len(objDft.FullName) - Len(objDft.Name)))

        Range("C12").FormulaR1C1 = pathname

        Call objDft.SaveAs(nome1)

        nome2 = (Left(objDft.FullName, Len(objDft.FullName) - 4)) + "_ID" + revnum + ".dxf"

        Call objDft.SaveAs(nome2)

        CloseF = Range("BB11").FormulaR1C1

        If CloseF = True Then

        Call objDft.Close

        End If

        Set objDft = Nothing

        Set objApp = Nothing

    End Sub

    __________________________________________________________________________________________________

    Non è scritto da un esperto ma fa tutto quello che devo, poi ho introdotto altre sub che mi permetto di prelevare info dal dft ...ecc.

    Manca la parte in cui vado a salvare una copia sul una cartella a parte ma penso che sia il meno..GRZ

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-01-05T16:26:30+00:00

    Ciao Norman

    l'esempio del codice che mi hai segnalato mi è noto anche perché è presente (in altra versione) nel cd di Solid Edge, ma non è proprio quello che cerco anche se non ti nascondo è la mia (attuale) alternativa.

    Infatti con quel programmino, non puoi modificare il nome quindi il "pippo.dft" viene convertito in "pippo.pdf" e non come vorrei io in "pippo_N1.pdf", invece di da il vantaggio di convertire intere cartelle di file...cosa buona e utile. Ma per quanto mi riguarda significa ogni volta rinominare tutti i file.....!!

    Per quanto riguarda la community di siemens ... si lo farò sicuramente se non riuscirò a venirne a capo.

    Grz

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-01-05T16:05:55+00:00

    Ciao Riccardo,

    Benvenuto alla Community!

    Salve a tutti, sono nuovo e poco esperto di VBA, mi diletto ogni tanto a realizzare qualche macro per uso interno all'ufficio, ma ora NON riesco a risolvere questo problema che vi sottopongo. 

    Giornalmente nel mio lavoro vengono creati decine di file in formato "cad" questi file devono essere salvati, per prassi interna, anche in formato pdf e dxf con identico nome ma con aggiunta di un suffisso tipo "_N1" cioè facendo un esempio: 

    il file "pippo"

    deve essere salvato anche come 

    pippo_N1.pdf 

    pippo_N1.dxf 

    Ovviamente la procedure standard sarebbe che dal programma cad faccio salva con nome due volte per i due formati (pdf e dxf).

    Visto che già ora gestisco l'apertura del file tramite un foglio di excel, la mia idea sarebbe che digitando il nome del file sul foglio di excel , la macro mi apra il programma "cad" (Solid Edge) e realizzi i due salvataggi in automatico senza che io stia li a inserire per due volte il "nome del file" e per due volte fare "salva come"..ecc 

    C'è qualcuno di questo forum che mi può dare qualche indicazione in merito? 

    So molto poco della programmazione di SolidEdge o dei suoi oggetti, metodi e proprietà e, inoltre, non possiedo una copia di Solid Edge.

    Vorrei quindi fare riferimento alla risorsa offerta dalla documentazione di Microsoft MSDN a:

    https://code.msdn.microsoft.com/Samples-for-solid-edge-790041df

    Visto, però, si può fare quello che vuoi direttamente dalla interfaccia di programmazione di SolidEdge, se fosse per me, vorrei postare la mia domanda nel forum di prgrammazione di SolidEdge;

    https://community.plm.automation.siemens.com/t5/Solid-Edge-Developer-Forum/bd-p/SEDeveloperForum

    Per un esempio del codice per salvare i file in formato pdf da SolidEdge, vedi:

    https://community.plm.automation.siemens.com/t5/Solid-Edge-Forum/Automatically-create-PDF-from-dft/td-p/264361

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento