Condividi:        

[Excell + Word] Script-Macro per automatizare l'importazione

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excell + Word] Script-Macro per automatizare l'importazione

Postdi sbs » 08/12/12 13:32

Gentilissimi dovrei creare uno script per automatizzare la lettura scrittura di alcuni dati.
Ho 60 moduli contenenti circa 250 campi ogni modulo da caricare in un db.
Pensavo di passare da un foglio di calcolo.
Lo script che pensavo (ma che non so scrivere!) era “dentro al foglio di calcolo" (office 2003 o 2010 o libreoffice) e dovrebbe fare:
A) Spostati nella directory “ C:\Folder”
B) Apri il primo file *.doc in word (o il corrispettivo di libre)
C) Imposta salva dati modulo in un file txt (SaveFormsData:=True,)
D) Salva il file txt.
ATTENZIONE primo mio bivio decisionale salvare il file con lo stesso nome del file doc oppure salvare il nome del file origine DENTRO al file come primo campo separato da “;” – se si sceglie questa seconda ipotesi dopo devo fare un “attachment” dei dati del secondo .doc in questo stesso file.

E) Chiudi file .doc
F) Sposta questo file .doc in C:\Folder\copiati
G) Apri secondo file doc e ripeti tutti i passaggi precedenti.
Se file txt con nome file doc crea nuovo se file con primo campo nome file doc accoda a file esistente.
H) Quando nella directory Folder non vi sono più file doc
1A) SE file unico con vari attachment importa in foglio di calcolo e salvalo con nome DATIMODULI.XLS

1B) SE tanti file txt ALLORA scrivi in cella A1 il nome del file copia da cella B1 a CELLA IQ1
2B) Sposta file txt in C:\Folder\copiati
3B) Apri secondo file txt e ripeti passaggio precedente.
4B) Salva file come DATIMODULI.XLS.

Mi potete aiutare?
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Sponsor
 

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 08/12/12 21:08

Cercando in rete ho messo assieme questo codice MA NON FUNZIONA!!!
Codice: Seleziona tutto
Attribute VB_Name = "prova_macro"
Public Sub prova_elab()

On Error GoTo RigaErrore
   
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
   
    Dim sPath As String
    Dim Destinatione As String
   
    Dim NomeCompleto As String
    Dim NomeFile As String
    Dim NomeSenzaExt As String
       
    Destinatione = "C:\Folder\Temp\"
    sPath = "C:\Folder\"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(sPath)
 '
 ' non so come impostare NomeCompleto (stringa) = objFile (oggetto)
 '
    NomeFile = Mid(NomeCompleto, InStrRev(NomeCompleto, "\") + 1)
    NomeSenzaExt = Left(NomeFile, InStrRev(NomeFile, ".") - 1)
 
   
    For Each objFile In objFolder.Files
    MsgBox NomeCompleto
   

    Documents.Open NameFile = objFile, ConfirmConversions:= _
    False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="",

_
    PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
    WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:=""

Application.DisplayStatusBar = True
Application.ShowWindowsInTaskbar = True
Application.ShowStartupDialog = True
With ActiveWindow
        .DisplayHorizontalScrollBar = True
        .DisplayVerticalScrollBar = True
        .DisplayLeftScrollBar = False
        .StyleAreaWidth = CentimetersToPoints(0)
        .DisplayVerticalRuler = True
        .DisplayRightRuler = False
        .DisplayScreenTips = True
        With .View
            .ShowAnimation = True
            .Draft = False
            .WrapToWindow = False
            .ShowPicturePlaceHolders = False
            .ShowFieldCodes = False
            .ShowBookmarks = False
            .FieldShading = wdFieldShadingWhenSelected
            .ShowTabs = False
            .ShowSpaces = False
            .ShowParagraphs = False
            .ShowHyphens = False
            .ShowHiddenText = False
            .ShowAll = True
            .ShowDrawings = True
            .ShowObjectAnchors = False
            .ShowTextBoundaries = False
            .ShowHighlight = True
            .ShowOptionalBreaks = False
            .DisplayPageBoundaries = True
            .DisplaySmartTags = True
        End With
    End With
    With Options
        .LocalNetworkFile = False
        .AllowFastSave = False
        .BackgroundSave = True
        .CreateBackup = False
        .SavePropertiesPrompt = False
        .SaveInterval = 10
        .SaveNormalPrompt = False
        .DisableFeaturesbyDefault = False
    End With
    With ActiveDocument
        .ReadOnlyRecommended = False
        .EmbedTrueTypeFonts = False
        .SaveFormsData = True
        .SaveSubsetFonts = False
        .DoNotEmbedSystemFonts = True
        .Password = ""
        .WritePassword = ""
        .DisableFeatures = False
        .EmbedSmartTags = True
        .SmartTagsAsXMLProps = False
        .EmbedLinguisticData = True
    End With
    Application.DefaultSaveFormat = ""
    ChangeFileOpenDirectory _
    "C:\Folder"
    ActiveDocument.SaveAs FileName:="NomeSenzaExt & .txt", FileFormat:= _
        wdFormatText, LockComments:=False, Password:="",

AddToRecentFiles:=True, _
        WritePassword:="", ReadOnlyRecommended:=False,

EmbedTrueTypeFonts:=False, _
         SaveNativePictureFormat:=False, SaveFormsData:=True,

SaveAsAOCELetter:= _
        False, Encoding:=1252, InsertLineBreaks:=True,

AllowSubstitutions:=False, _
         LineEnding:=wdCRLF
         Contatore = Contatore + 1
    ActiveDocument.Close
   
   
   
    MoveFile NomeCompleto Destinazione
     
   
    Next
   
RigaChiusura:
    Set objFile = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing

    Exit Sub
 
RigaErrore:
    MsgBox Err.Number & "linea " & vbNewLine & Err.Description
    Resume RigaChiusura
       
End Sub

Riuscite a darmi una mano?
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi Flash30005 » 08/12/12 21:41

Non so cosa faccia la macro da te postata
ma ricordo di aver postato una macro che permetteva di importare in un foglio di excel
testi sia da file .txt sia .doc che "ibridi"
questo è il link
http://www.pc-facile.com/forum/viewtopic.php?f=26&t=80941&p=460962&hilit=gattuccio+ricette#p460962

Prova a dare un'occhiata se può fare al caso tuo, semmai si può adattare il codice

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 08/12/12 22:37

guardato ma i file postati su rapidshare sono out!! (troppo vecchi!!)

Penso che sia MOLTO utile anche se dovrò
Estrarre i valori campo dai moduli word (unico sistema che ho trovato è generare un file txt con soli valori campo sepèarati da ";")
e il numero di campi (251) da estrarre!!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi Flash30005 » 08/12/12 23:14

Ti invio un nuovo link per scaricare il programma
Download File
Non avendo i tuoi documenti, come esempio, dovrai adattare la macro
(prova solo cambiando il percorso all'interno della macro)
e avvia la macro
"Convertitore"

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 08/12/12 23:48

Ecco un file tipo (contiene una sola pagina delle 25 che compongono il documento)
http://www.filedropper.com/moduloval0

La directory è C:\Folder
La Tmp per i txt è C:\Folder\Temp
mentre quella archivio è C:\Folder\Destinazione

i datgi da salvare sono i 10 campo modulo della pagina
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi Flash30005 » 09/12/12 02:20

Ok per il file
ma come vorresti siano riportati nel file testo
e nel file excel?
Potresti postare anche questi due esempi di file?

Inoltre chiarisci meglio cosa intendi per cartella Temp e cartella Destinazione
(all'inizio hai detto Cartella Copiati) ?

ciao

P.s. Ho riportato i campi del file word all'interno del file excel (riga 1) e
inserendo il nome del file nella colonna A ottengo i dati estesi fino alla colonna R
ma non arriveranno mai a alla colonna IQ
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 09/12/12 11:17

OK.
Il file è una sola scheda, il documento che ho inviato è composto da 25 di quelle schede
Copiati e destinazione sono la stessa cartella (ha cambiato nome durante i lavori!) serviva a metterci i doc dopo l'elaborazione per toglierli da folder.
Temp serviva per i file txt per non ingolfare Folder.
Ti ho messo un file zip della cartella un file con tutti i fogli (purtroppo usando office 2010 a casa e il 2003 al lavoro il file ha perso delle caratteristiche i nomi dei campi a volte sono saltate e il valore del primo campo (identificativo di scheda) nonb è corretto.
Il file di xls ha 3 fogli con i vari campi.

http://www.filedropper.com/folder_1


L'analisi la fARò CON ACCESS con tabelle collegate (i 3 fogli di lavoro) del file di xls.
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi Flash30005 » 09/12/12 14:50

Facciamo così
Ti invio il file con le macro adattate
Download file
Inseriscilo in una qualsiasi cartella che contenga il/i file .doc (modulo)
apri il file che ti ho inviato e clicchi due volte (velocemente) sulla Cella A1 del foglio1 (START) che attiva la macro "Convertitore"

Vedi come avviene la disposizione dei campi semmai da questo procediamo per una diversa distribuzione

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 09/12/12 15:00

fatto il primo errore che compare è:
" Open Perc & Ricetta For Input As #2" errore di run time 53 impossibile trovare il file.

Scusa non occorre impostare la variabile della cartella che contiene i files?
Non l'ho vista!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi Flash30005 » 09/12/12 19:46

Ho riprovato e a me funziona
ma hai per caso cambiato il percorso all'interno della macro
magari hai sostituito "Copiati " con Temp?
Se si, devi riprendere il mio file originale perché la directory va modificata in diversi punti e non solo su una macro

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 09/12/12 20:15

scaricato di nuovo e messo in C:Folder e lanciato senza toccare la macro.
errore di run time 53 impossibile trovare il file.
Dedbug
" Open Perc & Ricetta For Input As #2"

Perc non viene definita prima che sia questo?

PS che versione di office?
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi Flash30005 » 09/12/12 21:15

Ma avvii la macro "Convertitore"?
non devi iniziare da altre macro


Se si ferma a quella riga
avrai sicuramente il foglio ListaTxt attivo con almeno un nome di file txt
giusto?
e anche il foglio ListaDoc ha almeno il nome di file doc
sempreché tu abbia messo nella stessa directory del programma un file .doc (lo stesso che hai mandato a me)

fai sapere
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 09/12/12 21:51

nella directoryu vi sono 40 copie del file che ti ho mandato.
nel folglio ListaDoc non compaiono file
Lancia ta macro con F passo a passo e gira sino al punto che ti ho detto prima.
Codice: Seleziona tutto
Sub Convertitore()
Perc = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("A2:IV50000").ClearContents
Call ElencoFileDoc
Sub ElencoFileDoc()
Worksheets("ListaDoc").Select
Range("A1").Select
  With ActiveCell
    Worksheets("ListaDoc").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
  ElencoFile Direct:=Perc, Estens:="*.doc", Inicell:=ActiveCell

Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
 ChDir Direct
  f = Dir(Estens)
  If f = "" Then Exit Sub
  End Sub (di Sub ElencoFileDoc())
If Dir(Perc & "Copiati", vbDirectory) = "" Then
End If
If Dir(Perc & "Destinazione", vbDirectory) = "" Then
End If
URD = Worksheets("ListaDoc").Range("A" & Rows.Count).End(xlUp).Row
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
For D = 1 To URD
Fdoc = Worksheets("ListaDoc").Range("A" & D).Value
If Fdoc = "" Then Exit For
Application.DisplayStatusBar = oldStatusBar
Application.DisplayStatusBar = False
Call CreaArch

Sub CreaArch()
doppioni = 0
Call ElencoFileTxt
Sub ElencoFileTxt()
Worksheets("ListaTxt").Select
Range("A1").Select
  With ActiveCell
    Worksheets("ListaTxt").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
    ElencoFile Direct:=Perc, Estens:="*.txt", Inicell:=ActiveCell
Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
  ChDir Direct
  f = Dir(Estens)
  If f = "" Then Exit Sub
  While f <> ""
    i = i + 1
    Inicell(i) = f
    f = Dir
  Wend
While f <> ""
End Sub
End Sub (della Sub ElencoFileTxt())
URT = Worksheets("ListaTxt").Range("A" & Rows.Count).End(xlUp).Row ( di :Sub CreaArch())
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Cf = Worksheets("RepModuli").Range("A" & Rows.Count).End(xlUp).Row
Nulla = 0
For T = 1 To URT
    Ricetta = Worksheets("ListaTxt").Range("A" & T).Value
    If Ricetta = "" Then
        Exit For

    Nric = Mid(Ricetta, 1, InStrRev(Ricetta, ".") - 1)
    Application.StatusBar = "Importazione Dati Modulo " & Ricetta & " ... " & Int(T / URT * 100) & " %"
    Ingredienti = ""
    Cf = Cf + 1
    ContaR = 0
    Open Perc & Ricetta For Input As #2
E QUI MUORE!!!!!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi Flash30005 » 09/12/12 22:03

Ma se punti il mouse su Perc e su Ricetta
quale informazione fornisce?
Cosa significa lancio la macro con F?

Dovresti cliccare due volte consecutive sulla cella A1 (START) del foglio1
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 09/12/12 22:07

Perc = C:\Folder
Ricetta = mie_pwd_nuove.txt
il file mie pwd nuove non è in questa cartella!

F8 ti consente di vedere step by step l'andamento della macro!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi Flash30005 » 09/12/12 22:15

No ti devi preoccupare del file Txt
Innanzitutto il percorso non può essere C:\Folder ma per definizione è C:\Folder\
a meno che non abbia cambiato qualcosa nella macro ma dici di no e ciò che dici non corrisponde

Poi, il programma converte il file .doc in file txt
chiude il file .doc e lo archivia nella directory C:\Folder\Destinazione
poi elabora il file txt contenuto nella cartella C:\Folder\
e una volta prelevati i dati e inseriti nel foglio RepModuli
lo chiude e lo archivia in C:\Folder\Temp

ora non capisco quale problema tu abbia visto che a me continua a funzionare perfettamente
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 09/12/12 22:29

perc è C:\Folder\ (avevo tralascioto la | finale!)
il file di testo non è presente in nessuna parte di C:!!!
non capisco come lo trovi!

domani provo in ufficio con office 2003 e vedo se è un problema di versione!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi Flash30005 » 09/12/12 22:31

Fai così
chiudi il file di excel perché potrebbe non funzionare più correttamente se si è interrotto durante il processo.
nella cartella C:\Folder\ inserisci solo il file .xls e il file .doc


Riapri excel e clicchi due volte sulla cella A1 (Start) del foglio RepModuli

fai sapere
ciao

P.s. io ho office 2010 ma questo programma funziona anche con 2003
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excell + Word] Script-Macro per automatizare l'importaz

Postdi sbs » 09/12/12 23:02

fatto stesso risultato!

Perche copi da D:\Altro\Documenti\ il file txt IL NOME DEL FILE?

Domani provo in ufficio!!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excell + Word] Script-Macro per automatizare l'importazione":


Chi c’è in linea

Visitano il forum: Nessuno e 28 ospiti