Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VBA - Autocad] Macro per importazione tabella excel

    Salve a tutti,

    avrei un problemino da risolvere. Il mio obiettivo sarebbe creare un tastino all'interno di una barra degli strumenti in ambiente autocad che mi incolla sul disegno una tabella di excel (di cui conosco il percorso ed il nome).

    L'azione sarebbe un banale copia e incolla da excel ad autocad, ma vorrei evitare di andare tutte le volte ad aprire il foglio excel con la tabella che voglio incollare in autocad (la cui destinazione non è sempre facilmente accessibile).

    Il nome del foglio excel varia di volta in volta a seconda del nome del file dwg. La macro quindi dovrebbe tenere conto di questa cosa quando va a cercare il foglio excel nel direttorio.

    Esiste un modo semplice per fare ciò?

    Spero di essermi spiegato bene,
    grazie mille anticipatamente per le risposte,

    Ciao,

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: [VBA - Autocad] Macro per importazione tabella excel

    Originariamente inviato da sandecker

    Il nome del foglio excel varia di volta in volta a seconda del nome del file dwg.
    Cioè? Spiega meglio perchè è fondamentale .

    Aprendo il file dwg, come lo ricavi il nome del file Excel da aprire?
    Il percorso è uguale per tutti i file Excel di tutti i file dwg?


  3. #3

    Re: Re: [VBA - Autocad] Macro per importazione tabella excel

    Originariamente inviato da gibra
    Cioè? Spiega meglio perchè è fondamentale .

    Aprendo il file dwg, come lo ricavi il nome del file Excel da aprire?
    Il percorso è uguale per tutti i file Excel di tutti i file dwg?

    Innanzitutto grazie per la risposta.

    Il percorso è lo stesso per tutti i file excel.

    Faccio un esempio:

    Il percorso dei file dwg è il seguente :

    "c:\pippo\paperino-1.dwg"
    "c:\pippo\paperino-2.dwg"
    "c:\pippo\paperino-3.dwg"
    ...

    All'interno della directory pippo varia solamente l'indice (paperino è sempre lo stesso), ma la macro dovrebbe funzionare da ogni file dwg da cui viene lanciata.

    Il percorso del file excel corrispondente è sempre: "c:\pippo\pluto\paperino.xls"

    La directory pluto si chiama sempre pluto; quello che varia è pippo.
    Paperino.xls è già stato creato in precedenza nella sottodirectory pluto.

    In altre parole la posizione di paperino.xls è sempre fissa rispetto al file dwg.

    Spero di essermi spiegato,

    Grazie e ciao!

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: Re: Re: [VBA - Autocad] Macro per importazione tabella excel

    Originariamente inviato da sandecker
    Il percorso del file excel corrispondente è sempre: "c:\pippo\pluto\paperino.xls
    Corrispondente a quale file ?
    Ne hai elencati 3, di file dwg...

    Originariamente inviato da sandecker
    La directory pluto si chiama sempre pluto; quello che varia è pippo.
    Quindi come fa a sapere il file DWG dove sta il file XLS?

    Originariamente inviato da sandecker
    Paperino.xls è già stato creato in precedenza nella sottodirectory pluto.


    Originariamente inviato da sandecker
    In altre parole la posizione di paperino.xls è sempre fissa rispetto al file dwg.


    Originariamente inviato da sandecker
    Spero di essermi spiegato,
    Mica tanto...

    Scusa, ma da quello che scrivi sembra che per ogni file Paperino-n.DWG esista UN SOLO file Paperino.XLS per cui ognuno dei 3 file :
    "c:\pippo\paperino-1.dwg"
    "c:\pippo\paperino-2.dwg"
    "c:\pippo\paperino-3.dwg"

    dovrà sempre aprire lo stesso:
    "c:\pippo\pluto\paperino.xls"

    E' così?

    Comunque, rileggendo il tuo primo post, non si capisce come vorresti copiare la tabella visto che non vuoi aprire il file Excel da Autocad, oppure per 'non aprire' intendi che non vuoi aprirlo 'a mano' (sfogliando le cartelle, per intenderci) ma lo vuoi aprire 'da codice'?


  5. #5
    Il file excel è sempre nella sottodirectory pluto rispetto alla posizione del file dwg.

    Ogni file paperino-n.dwg dovrà aprire lo stesso file paperino.xls, questo è corretto!

    L'obiettivo è farlo aprire da codice infatti, evitando di andarlo a cercare a mano.

    Quello che dovrebbe succedere sarebbe questo:

    - Sono in ambiente autocad e ho il file paperino-1.dwg aperto;

    - schiaccio un pulsante da autocad che lancia la macro in questione;

    Queste sono le azioni che dovrebbe fare il codice:

    - si posiziona nella directory del dwg (in autocad sto già lavorando in questa directory);

    - entra nella sottodirectory pluto dove si trova il file paperino.xls (che è già stato creato in precedenza da un altro software);

    - lo apre, copia la tabella, lo chiude;

    - la incolla sul dwg

    A questo punto io devo solo decidere il punto di inserimento in autocad.


    Ciao!

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Queste sono le azioni che dovrebbe fare il codice:
    1 - si posiziona nella directory del dwg (in autocad sto già lavorando in questa directory);
    2 - entra nella sottodirectory pluto dove si trova il file paperino.xls (che è già stato creato in precedenza da un altro software);
    3 - lo apre, copia la tabella, lo chiude;
    4 - la incolla sul dwg
    5 - A questo punto io devo solo decidere il punto di inserimento in autocad.
    OK, così è più chiaro. Non è difficile.

    1 e 2 non servono, nel senso che conosci già il percorso del file quindi è inutile 'navigare' nel FileSystem, è sufficiente:

    A.1 Creare un'istanza nascosta di Excel usando CreateObject(),
    A.2 Caricare il file XLS
    A.3 Selezionare la tabella (usando l'oggetto Range)
    A.4 Copiare la selezione nella Clipboard
    A.5 Incollare dalla Clipboard in AutoCad.

    Di queste azioni, quali non sai fare?



  7. #7
    Originariamente inviato da gibra
    OK, così è più chiaro. Non è difficile.

    1 e 2 non servono, nel senso che conosci già il percorso del file quindi è inutile 'navigare' nel FileSystem, è sufficiente:

    A.1 Creare un'istanza nascosta di Excel usando CreateObject(),
    A.2 Caricare il file XLS
    A.3 Selezionare la tabella (usando l'oggetto Range)
    A.4 Copiare la selezione nella Clipboard
    A.5 Incollare dalla Clipboard in AutoCad.

    Di queste azioni, quali non sai fare?


    Ciao! =)

    Diciamo che potrei avere dei problemi con A.1 e A.5.. Potresti darmi qualche dritta?

    Grazie mille per l'aiuto!

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da sandecker
    Ciao! =)

    Diciamo che potrei avere dei problemi con A.1 e A.5.. Potresti darmi qualche dritta?

    Grazie mille per l'aiuto!
    Intanto partiamo con A1.
    Qui è spiegato molto bene come usare CreateObject() in VBA di Office, che è simile (ma non uguale) al VBA di AutoCAD.
    http://forum.masterdrive.it/vba-tuto...binding-46733/

    Puoi anche leggere questo mio articolo
    http://nuke.vbcorner.net/Articoli/VB...7/Default.aspx
    in cui spiego come poter usare entrambe le modalità Early-binding e Late-binding in un progetto VB6 in modo da poter sfruttare automaticamente la prima dall'IDE, e la seconda dall'EXE.
    Però se stai usando il VBA di AutoCAD forse non puoi utilizzarla (o magari modificando qualcosa).


  9. #9
    Ci sono riuscito!

    Grazie mille per l'aiuto e per la pazienza

    Buona giornata

  10. #10
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da sandecker
    Ci sono riuscito!

    Grazie mille per l'aiuto e per la pazienza
    Prego.

    Però, di solito, si spiega e si mostra il codice che aiuta a capire come si è risolto il problema altrimenti casca lo scopo di un FORUM.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.