+ Rispondi
Risultati da 1 a 2 di 2

Discussione: Copia/incolla in background da word a word

  1. #1
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    1

    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

  2. #2
    Moderatore Globale L'avatar di dragone bianco
    reputazione complessiva: 42 42

    Messaggi
    6,478
    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, vuoi ringraziere? Clicca sull'icona
    Ti sono stato d'aiuto, fai una Donazione.

+ Rispondi

Discussioni Simili

  1. Stampare da Access a Word
    Di fabium75q nel forum MS Office, Access, VBA
    Risposte: 5
    Ultimo Messaggio: 03-10-2006, 17:44
  2. Come Svuotare Memoria Di Word
    Di marcospa nel forum MS Office, Access, VBA
    Risposte: 6
    Ultimo Messaggio: 14-09-2006, 11:28
  3. word e la sua "Esecuzione Automatica" ...
    Di raf1971 nel forum Visual Basic 6
    Risposte: 6
    Ultimo Messaggio: 11-03-2006, 17:32
  4. Evento change in Word
    Di Orso 33 nel forum MS Office, Access, VBA
    Risposte: 3
    Ultimo Messaggio: 23-01-2006, 20:30

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi