› Excel e gli applicativi Microsoft Office › Cancellazione righe, sistemazione e codifica csv-utf8
-
AutoreArticoli
-
Buonasera,
mi rivolgo a tutti Voi per risolvere un problema dove al momento non sono riuscito a risolvere in maniera automatica, se mai possibile farlo. Dobbiamo usare, per il lavoro di un supermercato, due programmi, il primo gestisce solo le casse e lo stesso è collegato con la piattaforma del nostro fornitore, quindi non ho lo scarico in automatico degli articoli venduti, il secondo gestisce la totale gestione. La sera scarico il file in excel, primo file allegato e righe da cancellare evidenziate, prima cancello le righe che non mi servono e con la funzione dati sistemo il file, secondo file in allegato, fino ad arrivare al terzo file che converto in csv utf 8 per poi poterlo importare nel programma. Spero in un Vostro gentile aiuto nel poter automatizzare il processo e potermi allineare i mesi pregressi.
Allegati:
You must be logged in to view attached files.Ciao, capito poco.
Nel primo file tu dici che hai evidenziato le righe che non ti servono e che vuoi cancellare,
nel secondo file vedo che le righe che tua hai evidenziato nel primo file non sono state cancellate, il terzo file è quello a cui vuoi arrivare?
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ciao,
in primis grazie per l'attenzione. Forse, sicuramente, ho commesso un errore a postare il file.
Comunque si il terzo file è il mio arrivo.
fino ad arrivare al terzo file che converto in csv utf 8 per poi poterlo importare nel programma.
Ma tu non hai allegato il csv a cui vuoi arrivare.
Ciao,
grazie, ma il csv non è altro che il terzo file allegato convertito in csv.
Ho preso in considerazione che :
i codici dei tuoi prodotti cominciano tutti con "P" è sono di lunghezza 7, anche se nel primo file che hai allegato alcuni sono falsati(errore di digitazione, secondo me)
non so cone sei combinato a VBA, comunque, ti posto questo codice che crea il tuo terzo file(no cvs),il codice lo devi inserire in un modulo del VBA del primo file che hai allegato, una volta lanciato, ti crea un file "Archivio" che dovrebbe essere conforme ai dati del terzo foglio.
Option Explicit Sub m() Dim lastrow As Integer, x As Integer Dim sh As Worksheet, sh1 As Worksheet Dim rng As Range, cl As Range Dim carattere As String, numero As String, testo As String, percorso As String Dim nomefile As String Dim numerocar As Integer lastrow = Cells(Rows.Count, 1).End(xlUp).Row Set rng = Range("a1:a" & lastrow) Set sh = ThisWorkbook.Worksheets("sheet1") Set sh1 = ActiveWorkbook.Worksheets.Add sh1.Name = "Archivio" sh1.Range("A1").Offset(0, 0) = "Codicearticolo" sh1.Range("A1").Offset(0, 1) = "Descrizionearticolo" x = 2 With sh For Each cl In rng carattere = Left(cl, 1) If carattere = "P" Then numero = Left(cl, 7) sh1.Range("a" & x) = numero numerocar = Len(numero) testo = Right(cl, (Len(cl) - numerocar)) sh1.Range("b" & x) = testo sh1.Range("c" & x) = Format(cl.Offset(0, 1), "0.00") x = x + 1 End If Next percorso = ThisWorkbook.Path & "\" nomefile = ActiveSheet.Name ActiveSheet.Copy Columns("A:A").EntireColumn.AutoFit Columns("B:B").EntireColumn.AutoFit Columns("C:C").EntireColumn.AutoFit ActiveWorkbook.SaveAs Filename:=percorso & nomefile ActiveWindow.Close ' End With End SubQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ciao,
appena a casa provo la tua soluzione. Per adesso non so come ringraziarti. Ti terrò aggiornato per darti il risultato di tutto. Ti volevo chiedere visto che devo scaricare diversi giorni, considera che sono almeno 90 gg, quindi dovrei inserire ad ogni file la tua soluzione, secondo te è possibile avere una soluzione del tipo;
a) scarico del file;
b) riportare lo stesso in un programmino;
è poter salvare il file generato.
Secondo te possibile?
Grazie
Ti allego il file generato, sbaglio qualcosa?
Allegati:
You must be logged in to view attached files.nel file che hai allegato nel post precedente i dati erano nella colonna "A", in questo file i dati sono nella colonna"B", quindi nel codice devi settare il range"rng" nella nuova colonna e settare anche "lastrow".
da:
lastrow = Cells(Rows.Count, 1).End(xlUp).RowSet rng = Range("a1:a" & lastrow)diventa:
lastrow = Cells(Rows.Count, 2).End(xlUp).RowSet rng = Range("B2:B" & lastrow)modifica anche:
sh1.Range("c" & x) = Format(cl.Offset(0, 2), "0.00")PS: quando allegate i file , cercate di mantenere sempre la stessa struttura, perchè altrimenti ci troviamo sempre a modificare i codici, Excel "ODIA" le celle
"UNITE"
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )buongiorno, perfetto non so come ringraziarti. Ti allego il file generato. Sono ritornato alla prima stesura del codice, "lastrow = Cells(Rows.Count, 1).End(xlUp).Row Set rng = Range("a1:a" & lastrow)", perchè dal file che salvo effettivamente i dati sono quelli scritti. Ti avevo posto un quesito che riguardava la possibilità di scaricare i file e non dover sempre scrivere il modulo per ogni file, esiste una soluzione?
Grazie
Allegati:
You must be logged in to view attached files.dimmi cosa ne pensi se lo trovi corretto e che modifiche dobbiamo fare;
posso fare una seconda macro associando il codice da te scritto?
grazie
Allegati:
You must be logged in to view attached files.allora, considerazione:
i file, che vuoi scompattare,debbono avere tutti la stessa struttura.
scenario:
crea una dir, inserisci tutti i file che vuoi scompattare in questa dir:
crea un file"master", sempre nella stessa dir,vuoto, in un modulo VBA inserisci il codice che ti posto, il codice non fa altro che aprire uno alla volta i tuoi file, escluso il file "master" con cui stai lavorando, scompattarlo, salvarlo con la data l'ora e il nome del file.
Fai sapere
Option Explicit Public Sub copia() Dim carattere As String, numero As String, testo As String, percorso As String Dim numerocar As Integer Dim nomefile As String Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Dim wk As Workbook Dim rng As Range, cl As Range Dim r As Long, lastrow As Integer, x As Integer Dim sPath As String, myname As String Dim sh1 As Worksheet, sh As Worksheet With Application .ScreenUpdating = False End With sPath = ThisWorkbook.Path Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(sPath) For Each objFile In objFolder.Files myname = Dir(objFile, vbNormal) If Left(myname, 1) <> "~" And (Right(myname, Len(myname) - InStrRev(myname, ".")) Like "*xl*") And (myname <> ThisWorkbook.Name) Then Set wk = Workbooks.Open(objFile.Path) lastrow = Cells(Rows.Count, 1).End(xlUp).Row Set rng = Range("a1:a" & lastrow) Set sh1 = ActiveWorkbook.Worksheets.Add sh1.Name = "Archivio" sh1.Range("A1").Offset(0, 0) = "Codicearticolo" sh1.Range("A1").Offset(0, 1) = "Descrizionearticolo" x = 2 With sh For Each cl In rng carattere = Left(cl, 1) If carattere = "P" Then numero = Left(cl, 7) sh1.Range("a" & x) = numero numerocar = Len(numero) testo = Right(cl, (Len(cl) - numerocar)) sh1.Range("b" & x) = testo sh1.Range("c" & x) = Format(cl.Offset(0, 1), "0.00") x = x + 1 End If Next percorso = ThisWorkbook.Path & "\" nomefile = ActiveSheet.Name ActiveSheet.Copy Columns("A:C").EntireColumn.AutoFit ActiveWorkbook.SaveAs Filename:=percorso & Format(Now, "dd-mm-yyyy _ hh-mm-ss") & myname ActiveWindow.Close wk.Close Savechanges:=False ' End With End If Next With Application .ScreenUpdating = True End With Set wk = Nothing Set sh = Nothing Set objFile = Nothing Set objFolder = Nothing Set objFSO = Nothing End SubQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )vediamo se ho capito bene;
a) crea una dir= intendi creo una cartella con tutti i file; posso gli stessi file nominarli vendite1;vendite2...ecc?
b) crea un file"master" = creo un file chiamato "vendite" con un modulo vba incollando il tuo codice?
Tutto nella stessa Dir
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire ) -
AutoreArticoli
