|
||||
|
|
#1 (permalink) |
|
Nuovo della community ![]()
1 Messaggi
![]() |
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 |
|
|
|
|
|
#2 (permalink) |
|
Moderatore Globale ![]() ![]()
6,430 Messaggi
![]() ![]() ![]() ![]() ![]() ![]() |
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
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
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.
|
|
|
|
![]() |
| Strumenti della discussione | |
| Modalità di visualizzazione | |
|
|
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.












Modalità lineare


