In ufficio ho il rilevatore di presenze mi genera un file txt, ad ogni timbratura una riga, con una stringa del tipo :
001000001374964320160929112424E0000000000XXXXXXXXXXXXXXXXX dove da 7 per i successivi 10 caratteri corrispondono alla MATRICOLA, da 17 per i successivi 8 caratteri corrispondono al GIORNO formato yyyy/mm/dd, dal 25 per i successivi 6 ORA, e il 31 la CAUSALE ( E o U ). Giornalmente dovrei fare il controllo del personale che ha timbrato il cartellino e considerando che ogni giorno producono almeno 150 / 200 ( magari ci sono anche più entrate e più uscite dello stesso dipendente) righe vorrei importare i dati in un foglio excel ma gia mettendo la condizione di importare la stringa dati relativi al giorno che mi interessa suddivisa per MATRICOLA - ORA - CAUSALE e contestualmente associare alla matricola il nome e cognome di chi ha timbrato e per questo ho fatto 3 fogli uno DATI ed uno ELENCO ed uno GIORNALIERO.Nel foglio DATI mi importo i campi che mi interessano nel foglio ELENCO ci sono le MATRICOLE ed IL COGNOME E NOME DEL PERSONALE e nel foglio GIORNALIERO dovrei avere le situazione di chi ha timbrato quel giorno. Di seguito vi faccio vedere cosa avevo fatto io, frutto di varie scopiazzate soprattutto del vostro forum, ma non riesco nell'intento mi funziona a metà. HELP ME !!!!!!
MODULO 1 :
- Codice: Seleziona tutto
Sub Caricamento()
y = 12
Open "C:\test\timbra.txt" For Input As #1
Do Until EOF(1)
Line Input #1, riga
Matr = Mid(riga, 7, 10)
beggiata = Mid(riga, 31, 1)
giorno = Mid(riga, 17, 8)
DataF = Mid(giorno, 5, 4) & Mid(giorno, 3, 2) & Mid(giorno, 1, 2)
Ora = Mid(riga, 25, 6)
giorno = Format(Mid(giorno, 1, 4) & "-" & Mid(giorno, 5, 2) & "-" & Mid(giorno, 7, 2), "mm-dd-yyyy")
Ora = Mid(Ora, 1, 2) & ":" & Mid(Ora, 3, 2) & ":" & Mid(Ora, 5, 2)
esci = 0
If esci = 1 Then GoTo salta
Sheets("Dati").Cells(y, 2).Value = Matr
Sheets("Dati").Cells(y, 3).Value = giorno
Sheets("Dati").Cells(y, 4).Value = Ora
Sheets("Dati").Cells(y, 5).Value = beggiata
y = y + 1
x = x + 1
z = z + 1
salta:
Loop
Close #1
inpfile = "C:\test\timbra.txt"
outfile = "C:\test\" & DataF & "_timbra.txt"
On Error Resume Next
FileCopy inpfile, outfile
On Error GoTo 0
End Sub
FOGLIO GIORNALIERO :
- Codice: Seleziona tutto
Sub cercadata()
Dim xx As String
Dim k As Boolean
Dim cel As Range
Dim rng As Range
Dim I As Long, x As Long, y As Long, z As Long
On Error Resume Next
Me.Range("b12", "b150").ClearContents
Me.Range("j12", "l150").ClearContents
k = False
xx = InputBox("INSERISCI DATA NEL FORMATO GG/MM/AAAA")
Cells(8, 4) = xx
lr = Sheets("giornaliero").Cells(Rows.Count, "b:b").End(xlUp).Row
matricola = Sheets("Dati").Cells(lr + 11, 2)
orario = Sheets("Dati").Cells(lr + 11, 4)
causale = Sheets("Dati").Cells(lr + 11, 5)
giorno = Sheets("Dati").Cells(lr + 11, 3)
If giorno = xx Then
Cells(lr + 11, 2) = matricola
Cells(lr + 11, 10) = orario
Cells(lr + 11, 12) = causale
matricola = matricola + 1
orario = orario + 1
causale = causale + 1
Non sono in grado di trovare una formula che legge già le righe del TXT e mi restituisce in EXCEL solo i dati che mi interessano, ovvero tutta la stringa divisa per MATRICOLA - ORA - CAUSALE che contiene la data che mi interessa........... GRAZIE A TUTTI.-
cfdff