MasterDrive.it   
Vai indietro   MasterDrive.it > Software Development > MS Office, Access, VBA



Rispondi
 
Strumenti della discussione Modalità di visualizzazione
Vecchio 18-04-2006, 14:30   #1 (permalink)
Nuovo della community

 
1 Messaggi

emoj novizio della comunita' ( + 10 )
Talking Copia/incolla in background da word a word

Salve a tutti,
da un pò di tempo sto cercando da fare un applicativo in VBA che in pratica dovrebbe risolvere un problemino abbastanza "tosto" che hanno i miei colleghi nel fare delle offerte in word partendo da tanti fogli word (configurazioni+opzioni) che aprono, copiano il contenuto, aprono il foglio word "master" dell'offerta ed incollano i vari contenuti in cascata.
I volevo conoscere se esiste la possibilità di, da codice VBA, copiare da una serie di fogli word ed incollare, in base ad una priorità in configurazione, tutto il contenuto su di un unico foglio master (OFFER) e salvarlo.
Io, ad esempio, uso questo codice VBA:

Sub Crea Offerta_Click(Source As Button)

If Dir("c:\masterDOC.doc")<>"" Then Kill "c:\masterDOC.doc"

'documento primo da incollare
Set ex=createobject("Word.Application")
ex.visible=False
Call ex.documents.open("c:\nomeDOC1.doc")
ex.visible=False
ex.Selection.WholeStory
ex.Selection.Copy
ex.Documents.Add
ex.Selection.PasteSpecial
ex.ActiveDocument.SaveAs ("c:\masterDOC.doc")
ex.visible=False
ex.Quit
Set ex = Nothing

Set ex=createobject("Word.Application")
ex.visible=False
Call ex.documents.open("c:\nomeDOC2.doc")
ex.visible=False
ex.Selection.WholeStory
ex.Selection.Copy

Call ex.documents.open("c:\masterDOC.doc")

ex.Selection.PasteSpecial
ex.ActiveDocument.SaveAs ("c:\masterDOC.doc")
ex.Quit
Set ex = Nothing

'documenti ulteriori da incollare
'...


'ultimo documento da incollare
Set ex=createobject("Word.Application")
ex.visible=False
Call ex.documents.open("c:\nomeDOCn.doc")
ex.visible=False
ex.Selection.WholeStory
ex.Selection.Copy

Call ex.documents.open("c:\masterDOC.doc")

ex.Selection.PasteSpecial
ex.ActiveDocument.SaveAs ("c:\masterDOC.doc")
ex.Quit
Set ex = Nothing

Msgbox "Elaborazione completata."

End Sub


...con questo codice, però, noto che, avendo un PC pentium 4 2.2 GHz con 1024 MB RAM, quando lancio l'operazione sopra descritta, la CPU va al 100 % di attività ed il tempo di esecuzione sale in base al numero di fogli word utilizzati (ogni file word "pesa" circa 80-90 KB!), quindi tenete presente che la mia elaborazione può salire fino a 20-30 files word da copiare ed incollare, quindi mi occorrono + di 30 min. per eseguirla!!!.
Se qualcuno comunque avesse un'idea migliore ben venga!

Grazie per la vostra immensa attenzione e pazienza!
A presto

Emiliano

emoj non è in linea   Bookmark and Share Rispondi quotando
Vecchio 19-04-2006, 18:31   #2 (permalink)
Moderatore Globale

 L'avatar di dragone bianco

 
6,430 Messaggi

dragone bianco e' un tipo da prendere in considerazione ( + 650 )dragone bianco e' un tipo da prendere in considerazione ( + 650 )dragone bianco e' un tipo da prendere in considerazione ( + 650 )dragone bianco e' un tipo da prendere in considerazione ( + 650 )dragone bianco e' un tipo da prendere in considerazione ( + 650 )dragone bianco e' un tipo da prendere in considerazione ( + 650 )
Primo devi semplificare il codice utilizzando un Loop del seguente codice

codice:
If Dir("c:\masterDOC.doc")<>"" Then Kill "c:\masterDOC.doc"

'documento primo da incollare
Set ex=createobject("Word.Application")
ex.visible=False
Call ex.documents.open("c:\nomeDOC1.doc")
ex.visible=False
ex.Selection.WholeStory
ex.Selection.Copy
ex.Documents.Add
ex.Selection.PasteSpecial
ex.ActiveDocument.SaveAs ("c:\masterDOC.doc")
ex.visible=False
ex.Quit
Set ex = Nothing
In vba è possibile avere un elenco dei file contenuti in una cartella.
Il loop eseguirà il codice da te scritto, cambiando di volta in volta il codice.

Es:
codice:
With Application.FileSearch
    .FileName = "99*.*"
    .LookIn = "C:\My Documents"
    .Execute
    For I = 1 to .FoundFiles.Count
        MsgBox .FoundFiles(I)
    Next I
End With
Questo esempio elenca tutti i file che iniziano con 99 e si trovano nella cartella C:\My Documents
Per ogni file appare un messaggio.

Ciao
__________________
Dragone Bianco


-Se non l'hai ancora fatto, Leggi il Regolamento.
-Hai ricevuto un aiuto, commenta l'intervento utilizzando il pulsante
-Ti sono stato d'aiuto, fai una Donazione.
dragone bianco non è in linea   Bookmark and Share Rispondi quotando
Rispondi

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are disattivato

Salto del forum

Discussioni simili
Discussione Ha iniziato questa discussione Forum Risposte Ultimo messaggio
Stampare da Access a Word fabium75q MS Office, Access, VBA 5 03-10-2006 17:44
Come Svuotare Memoria Di Word marcospa MS Office, Access, VBA 6 14-09-2006 11:28
word e la sua "Esecuzione Automatica" ... raf1971 Visual Basic 6 6 11-03-2006 17:32
Evento change in Word Orso 33 MS Office, Access, VBA 3 23-01-2006 20:30


Tutti gli orari sono GMT +2. Attualmente sono le 09:46.


Powered by vBulletin versione 3.8.0
Copyright © 2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Valid XHTML 1.0 Transitional  Creative Commons License

Eccetto dove diversamente specificato, i contenuti pubblicati in questa comunità sono rilasciati sotto Licenza
Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
La comunita' di MasterDrive.it non e' responsabile di eventuali imprecisioni presenti nelle pagine.