Valutazione 4.87/ 5 (100.00%) 5838 voti

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

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

Postdi sbs » 10/12/12 08:14

Prova da ufficio con 4 file inseriti.
Il Blocco avviene sul punto
" Name Perc & Fdoc As Perc & "Destinazione\" & Fdoc"con un errore "75 errore di accesso al percorso/file"
L'elenco dei file presenti è stato estrapolato correttamente.
Viene generato il primo file TXT (il file è "completo" non è "solo dati") ma non viene spostato in C:\Folder\Destinazione\ il file elaborato. (PS non avevo ancora creato le 2 sub-cartelle ma lo script le ha "generate" per me!).
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

Sponsor
 

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

Postdi Flash30005 » 10/12/12 09:09

Prova questa versione
Crea le cartelle Temp e Destinazione (Come richiesto)
ho solo aggiunto la variabile FDoc in Public (pensando che sia questo il problema che riscontri ora)
Download File
Comunque nella cartella Destinazione non devi avere lo stesso file .doc
altrimenti la macro non potrà spostarlo in quanto già esistente con lo stesso nome
(quando fai le prove toglilo da Destinazione e insierisci il file.doc in Folder)

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

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

Postdi sbs » 10/12/12 10:26

Fatto!
Prima prova out!
Errore 73!
Secondo lancio tutto OK!

Analisi del file excell.
Colonna A = Nome Files
Colonna Da B a K non importanti (non sono dati!)
Colonna L N P T V X contengono le "label"
Colonna MOQSUWY contengono le "dati" (MIO OBIETTIVO)

Manca il primo campo (identificativo di scheda) e l'ultimo (campo commento) (per dati guarda il file txt in MP.
Vine estratto solo la scheda 1 di ogni documento analizzato.
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi Flash30005 » 10/12/12 11:11

Allora prova Questo File
Ho lasciato tutti i campi
Secondo me dovresti inserire i valori nei campi modulo (es. nome docente, commenti etc) per avere chiara la situazione e quindi il file finale
a meno che tu non invii un file di excel con i dati riportati come ti occorrono nella forma definitiva

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

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

Postdi sbs » 10/12/12 12:47

Scusa non ho capito!
Comunque a parte diversi blocchi (ma con F5 o F8 a seconda del caso è sempre ripartito) ha finito l'analisi e ha importato tutto!!!
vi è un fatto strano in alcuni campi come puoi vedere dal file xls.
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi sbs » 10/12/12 15:14

OT.
a casa per pranzo ho portato la directoy con tutto!
Rilanciato ... daglistessi problemi di ieri! trova quel file txt che è lì!
Chissa cosa succede!
Fine OT
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi Flash30005 » 10/12/12 22:08

Sostituisci tutte le macro nel modulo1 con queste
Codice: Seleziona tutto
Public doppioni, URD As Long, Perc As String
Public FDoc As String
Sub Convertitore()
Perc = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("A2:IV50000").ClearContents
Call ElencoFileDoc
Dim FDoc As String
If Dir(Perc & "Temp", vbDirectory) = "" Then
    MkDir (Perc & "Temp")
End If
If Dir(Perc & "Destinazione", vbDirectory) = "" Then
    MkDir (Perc & "Destinazione")
End If
URD = Worksheets("ListaDoc").Range("A" & Rows.Count).End(xlUp).Row
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Const wdFormatText As Long = 2
Dim oApp As Object
For D = 1 To URD
FDoc = Worksheets("ListaDoc").Range("A" & D).Value
If FDoc = "" Then Exit For
    Set oApp = CreateObject("Word.Application")
    oApp.VISIBLE = False
Application.StatusBar = "Conversione " & FDoc & " in Txt... " & Int(D / URD * 100) & " %"
     Ftesto = Mid(FDoc, 1, InStrRev(FDoc, ".") - 1)
     oApp.Documents.Open Filename:=Perc & FDoc
     oApp.ActiveDocument.SaveAs Filename:=Perc & Ftesto & ".txt", FileFormat:=wdFormatText, Encoding:=850, LineEnding:=wdCRLF
oApp.Application.Quit
Set oApp = Nothing
    If Len(Dir(Perc & "Destinazione\" & FDoc)) > 0 Then
        Kill Perc & "Destinazione\" & FDoc
    End If
    Name Perc & FDoc As Perc & "Destinazione\" & FDoc
Next D

Application.DisplayStatusBar = oldStatusBar
Application.DisplayStatusBar = False
Call CreaArch
Call cancella
Worksheets("RepModuli").Select
Worksheets("RepModuli").Range("A1").Value = "START"

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

Range("A1").Select
If doppioni > 0 Then MsgBox "Sono stati importati N. " & doppioni & " Moduli uguali"
End Sub

Sub CreaArch()
Dim Ricetta, Ingredienti As String
doppioni = 0
Call ElencoFileTxt
URT = Worksheets("ListaTxt").Range("A" & Rows.Count).End(xlUp).Row
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
        MsgBox "Non ci sono file nella directory " & Perc
        Nulla = 1
        Exit For
    End If
    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
    SalTaV = 0
    Do Until EOF(2)
        Line Input #2, Riga
        Riga = Replace(Riga, "Š", "è")
        If Riga = "" Then GoTo Salta
        If Trim(Mid(Riga, 1, 7)) = "DOCENTE" Then
        Line Input #2, Riga
        Ingredienti = Ingredienti & ";" & Trim(Riga)
        SalTaV = 1
        End If
        If SalTaV = 1 Then
            If Trim(Mid(Riga, 1, 8)) = "Rispetto" Then
                Line Input #2, Riga
                Ingredienti = Ingredienti & ";" & Trim(Riga)
                GoTo Salta
            End If
            If Trim(Mid(Riga, 1, 10)) = "Competenza" Then
                Line Input #2, Riga
                Ingredienti = Ingredienti & ";" & Trim(Riga)
                GoTo Salta
            End If
            If Trim(Mid(Riga, 1, 9)) = "Chiarezza" Then
                Line Input #2, Riga
                Ingredienti = Ingredienti & ";" & Trim(Riga)
                GoTo Salta
            End If
            If Trim(Mid(Riga, 1, 7)) = "Modalit" Then
                Line Input #2, Riga
                Ingredienti = Ingredienti & ";" & Trim(Riga)
                GoTo Salta
            End If
            If Trim(Mid(Riga, 1, 11)) = "Adeguatezza" Then
                Line Input #2, Riga
                Ingredienti = Ingredienti & ";" & Trim(Riga)
                GoTo Salta
            End If
            If Trim(Mid(Riga, 1, 12)) = "Il materiale" Then
                Line Input #2, Riga
                Ingredienti = Ingredienti & ";" & Trim(Riga)
                GoTo Salta
            End If
            If Trim(Mid(Riga, 1, 13)) = "Nel complesso" Then
                Line Input #2, Riga
                Ingredienti = Ingredienti & ";" & Trim(Riga)
                GoTo Salta
            End If
        If Trim(Mid(Riga, 1, 8)) = "Commenti" Then
            Riga = Replace(Riga, "Commenti aggiuntivi dello studente ", "")
            Ingredienti = Ingredienti & ";" & Trim(Riga)
            Worksheets("RepModuli").Range("A" & CF).Value = "'" & Nric
            Worksheets("RepModuli").Range("B" & CF).Value = Mid(Ingredienti, 2, Len(Ingredienti))
            Ingredienti = ""
            CF = CF + 1
        End If
        End If

Salta:
    Loop
    Close #2
    Close
    If Len(Dir(Perc & "Temp\" & Ricetta)) > 0 Then
        doppioni = doppioni + 1
        Kill Perc & Ricetta
    Else
    Name Perc & Ricetta As Perc & "Temp\" & Ricetta
    End If
Next T
If Nulla = 0 Then
     Worksheets("RepModuli").Select
        Range("B2:B50000").TextToColumns Destination:=Range("B2"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
        ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1)), _
        TrailingMinusNumbers:=True
End If
    Range("A1").Select
Application.DisplayStatusBar = oldStatusBar
Application.DisplayStatusBar = False
End Sub
Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
  Dim i As Integer, f As String
  ChDir Direct
  f = Dir(Estens)
  If f = "" Then Exit Sub
  While f <> ""
    i = i + 1
    Inicell(i) = f
    f = Dir
  Wend
End Sub
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
End Sub
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
End Sub
Sub cancella()
Worksheets("ListaTxt").Select
Range("A1").Select
  With ActiveCell
    Worksheets("ListaTxt").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
Worksheets("ListaDoc").Select
Range("A1").Select
  With ActiveCell
    Worksheets("ListaDoc").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
End Sub



Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

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

Postdi sbs » 11/12/12 20:48

OK ma da casa (win 7 + office 2010) ho dei problemi (come per le precedenti versioni!) domani provo dall'ufficio (XP Pro + office 2003) e poi ti dico.

Ho notato che la tua macro "pesca i dati" in realtà dal testo, non considerando i campi modulo.

Il risultato sembra però valido lo stesso.

Domani controllo come funziona
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi sbs » 12/12/12 09:40

OK fatto con il primo documento "vero" arrivato ieri!

funziona!

ho anche collegato il file excell con access e predisposto le query e i due report.

Quindi direi OBTV raggiunto!

Ora 3 appunti:
1) come mai sul mio pc a casa con la cartella folder in C: (come qui in ufficio) il risultato è così diverso?
(blocco della macro ed estrazione di file TXT NON CONTENUTI nella cartella e o sottocartelle relative!
2) Come mai se anzichè in C: in ufficio metto Folder su un disco di rete ho un blocco e l'estrazione di file .DOC(al contrario del punto 1!) NON CONTENUTI nella cartella e o sottocartelle relative?

Questi due errori "sembrano" traggono origine dalla variabile che definisce il percorso anche se con due comportamenti diversi!

3) questa macro non ha utilizzato la possibilità di word di salvare in formato txt SOLO il valore dei campi modulo separati da ";" e delimitati da " " " (difficile Delimitare con "apicetti" degli "apicetti"!!) il risultato è lo stesso ma per "pulire" il codice " non sarebbe stato meglio?

Grazie!!!!
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi Flash30005 » 12/12/12 10:49

Prova ad impostare la directory "forzandola" così:
Codice: Seleziona tutto
Sub Convertitore()
ChDir ("C:\")  '<<<< inserisci questa riga prima di quella esistente
Perc = ThisWorkbook.Path & "\"  '<<<< esistente


Per quanto riguarda il ";" lo uso per separarare i vari campi ed importarli in excel
così in una unica azione (Testo in colonne separatore ";" ) li distribuisco

Sinceramente non ho capito il discorso delle virgolette... :roll:

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

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

Postdi sbs » 12/12/12 14:40

La questione delle virgolette era interna al “non uso” di: SaveFormsData:=True che se introdotto nella riga

Codice: Seleziona tutto
 oApp.ActiveDocument.SaveAs Filename:=Perc & Ftesto & ".txt",  FileFormat:=wdFormatText, Encoding:=850, LineEnding:=wdCRLF
porta a generare un file txt "snello" in quanto contiene solo il contenuto dei campi modulo, ogni valore è delimitato da virgolette e i campi sono separati dal punto e virgola.
Codice: Seleziona tutto
"Docente 1";"10";"9";"9";"9";"9";"9";"9";".......................................";"Docente 2";"10";"10";"10";"10";"10";"10";"10";".......................................";"Docente

Mi chiedevo come mai non avevi usato questa funzione perchè pensavo che avendo meno informazioni da gestire e avendo informazioni più "standard" fosse più facile! (Nel mio precedente tentativo mi ero arrenato sull'obbligare il CRLF PRIMA di "Docente xx", come vedi il CRLF è sul primo spazio utile che è "dentro" a "Docente xx")!
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi Flash30005 » 12/12/12 16:13

Perché, come ti dicevo, ho "riesumato" una macro che avevo che fa molte più cose tra le quali di "convertire" sia file testo, sia file .doc sia file salvati in un formato non corretto.
Ho effettuato qualche adattamento e realizzato la macro per te.
Se pensi che sia meglio utilizzare la funzione da te postata non devi far altro che applicarla.

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

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

Postdi sbs » 12/12/12 20:59

Adesso uso la tua!! (Funziona!)
Poi per curiosità cercherò di modificarla per usare il formato "modulo dati"

PS sul pc a casa non funzia neppure con la modifica e neppure al lavoro se metto folder sulla risorsa condivisa (eppure nella tua macro la posizione è relativa e quindi non dovrebbe essere influenzata dalla posizione!
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi Flash30005 » 13/12/12 03:38

Se vuoi divertirti
puoi sostituire il codice nella macro Conversione come ti posto qui (la mia originale è commentata)
Codice: Seleziona tutto
    oApp.ActiveDocument.SaveAs Filename:=Perc & Ftesto & ".txt", FileFormat:=wdFormatText, AddToRecentFiles:=True, SaveFormsData:=True, Encoding:=850, InsertLineBreaks:=True, LineEnding:=wdCRLF
     'oApp.ActiveDocument.SaveAs Filename:=Perc & Ftesto & ".txt", FileFormat:=wdFormatText, Encoding:=850, LineEnding:=wdCRLF

ma metti un Punto di Interruzione qui
Codice: Seleziona tutto
oApp.Application.Quit

in maniera da poter "lavorare sul file testo generato

Poi ci farai sapere come hai sistemato "l'accapo a fine foglio" non visto dal modulo di word o dal codice macro, ok?
(quella "svista" unisce il primo modulo all'ultimo del foglio precedente)

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

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

Postdi sbs » 03/07/16 13:39

Gentilissimo ho usato diverse volte le tue macro!
Grazie!

Volevo chiederti consigli su come modificarlo per risoplvere un nuovo problema.
Ho ereditato alcune 100 di file editati da due colleghe che usavano il pc come una macchian da scrivere.
Nei file vi sono sempre gli stessi dati (sono schede ) un problema è che hanno usato gli spazi e i tab per colonnare i dati.
In oltre per lo stesso motivo hanno usato il fine riga come si usava il retorn della vecchia olivetti!
Prima di importare i dati in excell occorre che il file txt venga normalizzato (il numero di tab e spazi è oviamente diverso) pensavo con un “sostituisci” (sostituisci il tab con spazio, sostituisci due spazi con un spazio, ripeti sino a 0), inoltre occorre togliere tutti i fine riga pensavo a un sostituisci (sostituisci ctrlf con spazio, metti ctrlf PRIMA di campo 1, campo2 ecc).
Pensi che sia la soluzione giusta?
Come posso implementarla in
Codice: Seleziona tutto
Sub Convertitore()
Perc = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("A2:IV50000").ClearContents
Call ElencoFileDoc
Dim FDoc As String
If Dir(Perc & "Temp", vbDirectory) = "" Then
    MkDir (Perc & "Temp")
End If
If Dir(Perc & "Destinazione", vbDirectory) = "" Then
    MkDir (Perc & "Destinazione")
End If
URD = Worksheets("ListaDoc").Range("A" & Rows.Count).End(xlUp).Row
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Const wdFormatText As Long = 2
Dim oApp As Object
For D = 1 To URD
FDoc = Worksheets("ListaDoc").Range("A" & D).Value
If FDoc = "" Then Exit For
    Set oApp = CreateObject("Word.Application")
    oApp.VISIBLE = False
Application.StatusBar = "Conversione " & FDoc & " in Txt... " & Int(D / URD * 100) & " %"
     Ftesto = Mid(FDoc, 1, InStrRev(FDoc, ".") - 1)
     oApp.Documents.Open Filename:=Perc & FDoc
     oApp.ActiveDocument.SaveAs Filename:=Perc & Ftesto & ".txt", FileFormat:=wdFormatText, Encoding:=850, LineEnding:=wdCRLF
oApp.Application.Quit
Set oApp = Nothing
    If Len(Dir(Perc & "Destinazione\" & FDoc)) > 0 Then
        Kill Perc & "Destinazione\" & FDoc
    End If
    Name Perc & FDoc As Perc & "Destinazione\" & FDoc
Next D

Application.DisplayStatusBar = oldStatusBar
Application.DisplayStatusBar = False
Call CreaArch
Call cancella
Worksheets("RepModuli").Select
Worksheets("RepModuli").Range("A1").Value = "START"

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

Range("A1").Select
If doppioni > 0 Then MsgBox "Sono stati importati N. " & doppioni & " Moduli uguali"
End Sub
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi Flash30005 » 04/07/16 07:13

Ciao
per normalizzare un testo bisognerebbe analizzarlo
se questa analisi già l'hai fatta e vuoi convertire gli "a capo", i Tab in spazi
e poi ridurre la consecutività di spazi in uno solo puoi utilizzare queste due righe codice che commenterò per chiarezza

Codice: Seleziona tutto
StringaOut1 = Replace(Replace(Replace(StringaIn, Asc(13), Asc(32)), Asc(10), Asc(32)), Asc(9), Asc(32))
StringaOut2 = Replace(Replace(Replace(Replace(StringaOut1, "     ", " "), "    ", " "), "   ", " "), "  ", " ")


StringaIn è la stringa originale
StrinhaOut1 è la stringa senza i "return" (asc13), "line feed" (asc10), e i tab (asc9) (sostituiti dallo spazio (Asc32)
StringaOut2 toglie in un passaggio gli spazi consecutivi sostituendoli con un solo spazio

Se pensi di avere più spazi devi aggiungere altri Replace a inizio riga codice e aggiungere tra le virgolette 6 spazi o 7 spazi etc e dopo sempre uno spazio

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

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

Postdi sbs » 04/07/16 08:35

Grazie controllo e vedo se basta questo.
Un dubbio che mi viene di primo acchito è come mettere il return solo nei punti giusti (prima di parole fisse che contraddistinguono i campi).
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi Flash30005 » 04/07/16 21:38

Non so cosa intendi per campi
Ho interpretato il tuo quesito nel quale dici che in un testo vuoi sostituire
1) gli "a capo"
2) i Tab
3) spazi multipli

qdi se la tua StringaIn è una riga di 100 caratteri o un testo di 50000 caratteri non cambia nulla
il codice fa (o dovrebbe fare) quanto richiesto

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

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

Postdi sbs » 05/07/16 08:08

Scusa forse non sono stato chiaro!
Comunque mi fermo in quanto ho il sospetto che le schede in word siano più incasinate di quello che pensavo.
Voglio che me ne mandino almeno una 20 per vederle.

Colgo l'occasione per chiederti delucidazioni sul tuo script.

Codice: Seleziona tutto
Sub CreaArch()
.............
    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
    SalTaV = 0
    Do Until EOF(2)
        Line Input #2, Riga
        Riga = Replace(Riga, "Š", "è")
        If Riga = "" Then GoTo Salta
        If Trim(Mid(Riga, 1, 7)) = "DOCENTE" Then
        Line Input #2, Riga
        Ingredienti = Ingredienti & ";" & Trim(Riga)
        SalTaV = 1
        End If
        If SalTaV = 1 Then
            If Trim(Mid(Riga, 1, 8)) = "Rispetto" Then
                Line Input #2, Riga
                Ingredienti = Ingredienti & ";" & Trim(Riga)
                GoTo Salta
            End If
            ........
        If Trim(Mid(Riga, 1, 8)) = "Commenti" Then
            Riga = Replace(Riga, "Commenti aggiuntivi dello studente ", "")
            Ingredienti = Ingredienti & ";" & Trim(Riga)
            Worksheets("RepModuli").Range("A" & CF).Value = "'" & Nric
            Worksheets("RepModuli").Range("B" & CF).Value = Mid(Ingredienti, 2, Len(Ingredienti))
            Ingredienti = ""
            CF = CF + 1
        End If
       


per ora ti chiedo i dati dal file testo li prende dalla riga 2?(Open Perc & Ricetta For Input As #2
SalTaV = 0
Do Until EOF(2)
Line Input #2, Riga
Riga = Replace(Riga, "Š", "è")
If Riga = "" Then GoTo Salta)
il #2 rappresenta in tutti e due i posti la riga di inizio?

(If Trim(Mid(Riga, 1, 7)) = "DOCENTE" Then
Line Input #2, Riga
Ingredienti = Ingredienti & ";" & Trim(Riga)
SalTaV = 1
End If)
cosa indica Riga, 1 , 7 ? DOCENTE è l'etichetta di colonna o la parte da togliere dalla riga?
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

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

Postdi sbs » 07/07/16 12:30

Sto controllando e, forse, sto capendo qualcosa ..... (ho cercato i vecchi file che avevo usato e osservato il txt che usciva!)
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

PrecedenteProssimo

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 15 ospiti