Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Prendere caratteri in foglio txt e compare con stringa excel

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

Prendere caratteri in foglio txt e compare con stringa excel

Postdi Tool » 21/04/09 13:28

Ciao,
ho bisogno di aiuto per terminare una macro di un programma.
prima di tutto vi dico quello che devo fare e poi come ho cominciato a farlo:

ho il file prova.txt con questo contenuto:

DMI System Information
----------------------
manufacturer LENOVO


DMI Baseboard
-------------
vendor LENOVO
model 1952WP9
revision Not Available
serial VF0D2699999


DMI System Enclosure
--------------------
manufacturer LENOVO
chassis type Notebook
chassis serial Not Available


questo file viene generato ogni volta ed ogni volta il numero di righe e la posizione delle info può cambiare, quello che mi serve è fare un compare tra gli undici caratteri che vedete VF0D2699999 e gli undici caratteri che ho in una stringa di excel, poi se sono uguali msgbox.

Vi mostro come ho cominciato, il problema per mè è individuare e prelevare quegli 11 caratteri, visto che la loro posizione in riga varia e visto che questi caratteri variano e visto anche che ci sono altre righe di 11 caratteri nel file(che non ho visualizzato tutto). Si potrebbe dire al programma di cercare DMI Baseboard, se read è uguale a questo andare su serial e beccarmi i caratteri, ma come fare? vi posto l'inizio...

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim FileName As String
Dim fso, f
Dim Read As String
Dim Found As Boolean

Found = False

FileName = "C:\database\prova.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(FileName, ForReading)

Do While f.AtEndOfStream = False
Read = f.ReadLine



CIAO E GRAZIE!
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Sponsor
 

Re: Prendere caratteri in foglio txt e compare con stringa excel

Postdi Flash30005 » 21/04/09 14:25

Prova questa macro
Codice: Seleziona tutto
Sub Caricamento()
abc = Shell("""" & "C:\Database\CreaElenco.Bat" & """", 2)
Open "C:\Database\Elenco.cfg" For Input As #1

Do Until EOF(1)
    Line Input #1, Riga0
    Open "C:\Database\" & Riga0 For Input As #2
        Do Until EOF(2)
            Line Input #2, riga
            Ev = Mid(riga, 1, 6)
            If Ev = "serial" Then
                VF = Mid(riga, 8, 12)
                If Sheets("Controllo").Cells(2, 1).Value = VF Then MsgBox " Valore " & VF & " Uguale"
            End If
        Loop
    Close #2
    inpfile = "C:\Database\" & Riga0
    outfile = "C:\Database\Archivio\" & VF
    On Error Resume Next
    FileCopy inpfile, outfile
    Kill "C:\Database\" & Riga0
    On Error GoTo 0
Loop
Close #1
End Sub

prevede un file .bat con nome Creaelenco.bat nella cartella database (C:\Database) con all'interno questi codici
Codice: Seleziona tutto
del C:\Database\Elenco.txt
del C:\Database\Elenco.cfg
dir /B C:\Database\Prova.txt > C:\Database\Elenco.txt
copy C:\Database\Elenco.txt C:\Database\Elenco.cfg
exit


Il programma processa anche più file.txt nella stessa cartella

Allego la cartella Database da scompattare nella Root di C:\

Ciao
Allegati

[L’estensione rar è stata disattivata e non puó essere visualizzata.]

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: Prendere caratteri in foglio txt e compare con stringa excel

Postdi Tool » 21/04/09 15:16

ti ringrazio 1000 ma vorrei riuscire a terminare questa parte di programma ultimando la parte che ho già iniziato e che ti ho pastato senza poi cancellare database e file, perchè tanto poi viene sovrascritto. il mio problema è dire alla "macchina" vai nel txt e cerca DMI Baseboard, quando lo trovi, cerca serial e prendi i miei 11 caratteri x compare.
sai darmi qualche idea?

ti ringrazio.
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Prendere caratteri in foglio txt e compare con stringa excel

Postdi pietrol » 21/04/09 16:36

Ciao Tool
direi che potrebbe essere:
Codice: Seleziona tutto
Do While f.AtEndOfStream = False
Read = f.ReadLine
If Left(Read, 7) = "serial" then
    CodiceSeriale = Mid(Read, 8)
    Exit Do
End If
f.Close
If CodiceSeriale = Range(CodiceDaVerificare) then
    msgbox "Il codice è uguale!"
Else
    msgbox "Il codice è diverso!"
End If
Set f = Nothing
Set fso = Nothing
Exit Sub


Fai sapere.

ciao
pietrol
il lupo ululà, il castello ululì
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: Prendere caratteri in foglio txt e compare con stringa excel

Postdi Flash30005 » 21/04/09 22:14

Ho testato il codice di Pietrol e funziona come desideravi (ho ritoccando un paio di valori) pubblico di nuovo tutta la macro
Codice: Seleziona tutto
Sub Pietrol()
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim FileName As String
Dim fso, f
Dim Read As String
Dim Found As Boolean

Found = False

FileName = "C:\database\prova.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(FileName, ForReading)

Do While f.AtEndOfStream = False
    Read = f.ReadLine
    If Left(Read, 6) = "serial" Then
        CodiceSeriale = Mid(Read, 8)
        Exit Do
    End If
Loop
f.Close

If CodiceSeriale = Worksheets("Controllo").Range("A2").Value Then MsgBox "Il codice è uguale!"
Set f = Nothing
Set fso = Nothing
Exit Sub
End Sub


In questa riga
Worksheets("Controllo").Range("A2").Value
Al posto di Controllo dovrai mettere il nome del foglio e definire la cella di excel dove hai il codice di confronto ("A2" in questo caso)

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: Prendere caratteri in foglio txt e compare con stringa excel

Postdi Tool » 22/04/09 07:49

ciao, grazie così funziona, e nel caso avessi altre stringhe serial nel file txt, come faccio a dirgli di prendermi solamente il serial che voglio io e non altri? ad esempio solo il serial sotto DMI Baseboard?

grazie1000 ancora
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Prendere caratteri in foglio txt e compare con stringa excel

Postdi Flash30005 » 22/04/09 10:42

Dovresti pubblicare la struttura del file testo altrimenti così andiamo per tentativi...
Uno di questi tentativi potrebbe essere quello di dichiarare ad una variabile es.: VerBaseb = 0 e nel caso che la stringa letta corrisponde a
"DMI Baseboard" la variabile VerBaseb diviene = 1
quindi metti un controllo della variabile
se VerBaseb = 1 allora
controlla il serial (esegue la normale procedura altrimenti no)
e reimposta VerBaseb = 0

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: Prendere caratteri in foglio txt e compare con stringa excel

Postdi Tool » 22/04/09 12:31

ciao sono riuscito facendo in questo modo:

Sub sncheck()

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim FileName As String
Dim fso, f
Dim Read As String
Dim Found As Boolean
Dim Sn As String

Found = False

FileName = "C:\database\prova.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(FileName, ForReading)

Sercheck = Sheets("SN_CHECK").Cells(20, 7).Text
Sercheck = Right(Sercheck, Len(Sercheck) - 11)

Sheets("SN_CHECK").Select
Sheets("SN_CHECK").Cells(20, 7) = Sercheck

Do While f.AtEndOfStream = False
Read = f.ReadLine

If Read = "DMI Baseboard" Then

Found = True

End If



If Found = True And Read = Chr(9) & "serial" & Chr(9) & Chr(9) & Mid(Read, 10, 20) Then
Sn = Mid(Read, 10, 20)
Exit Do
End If
Loop

If Sn = Sercheck Then
MsgBox "SN CHECK PASS"
Else

MsgBox "SN CHECK FAIL"

End If
End Sub




un'ultima info:
come fare per rinominare il file prova.txt con quello che contiene Sn, così da avere VF0D268920H.txt?

grazie1000
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Prendere caratteri in foglio txt e compare con stringa excel

Postdi Tool » 22/04/09 14:33

ho fatto ragazzi^^

Name "C:\database\prova.txt" As "C:\database\" & Sn & "_TEST.txt"

ora tutto funziona, vi ringrazio x le info.
A presto.
ciaociao.
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26


Torna a Applicazioni Office Windows


Topic correlati a "Prendere caratteri in foglio txt e compare con stringa excel":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti