PDA

View Full Version : unire file excel


Lord Amarant
26-04-2007, 08:07
devo unire alcuni file di excel(237:muro: ) in uno solo per poter poi lavorarlo in access ed incrociare con un altro database.
c'è un metodo per farlo velocemente senza fare copia incolla continuo, oppure una query di accodamento che accoda in automstico tutti i file?

ciaps
26-04-2007, 09:09
unire file excel direi di no però potresti crearti una macro o un codice di importazione in access. In relatà potresti creare una macro automatizzando l'importazione di un file, poi lo trasformi in codice (se sai cscrivere direttamente il codice salta questo passaggio) poi ci metti un ciclo for next ed è fatto

Lord Amarant
26-04-2007, 09:34
grazie ma il tuo consiglio mi porta ben oltre le mie misere conoscenze di access(mi faro paghare un corso approfondito dalla mia ditta:read: ).
macro con access non ne ho mai fatte quindi non saprei da dove partire:boh:

ciaps
26-04-2007, 09:49
Andiamo per gradi:
il file excel lo devi importare in access, generalmente faresti cosi: menu file/carica dati esterni/ file excel e via.
Invece dal menu di access vai su macro /crea nuova macro e seleziona Trasferiscifogliodicalcolo nelle proprietà ti richiede il nome della tabella dove importare e il nome del file da cui importare (compreso il percorso). Fatto questo hai tre possibilità:
copi per 237 volte la riga della macro cambiando il nome del file
esegui 237 volte la macro cambiando il nome del file
vai sulla finestra moduli e trasformi la macro appena creata in codice, nel codice vedrai dove e come nomina il file. ora puoi manipolare il codice come vuoi per ripeterlo 237 volte con il cambiamento di nome

Tutto quello che ti ho scritto sopra non è un metodo ortodosso per fare quello che vuoi però è il sistema più semplice

Lord Amarant
27-04-2007, 14:12
Andiamo per gradi:
il file excel lo devi importare in access, generalmente faresti cosi: menu file/carica dati esterni/ file excel e via.
Invece dal menu di access vai su macro /crea nuova macro e seleziona Trasferiscifogliodicalcolo nelle proprietà ti richiede il nome della tabella dove importare e il nome del file da cui importare (compreso il percorso). Fatto questo hai tre possibilità:
copi per 237 volte la riga della macro cambiando il nome del file
esegui 237 volte la macro cambiando il nome del file
vai sulla finestra moduli e trasformi la macro appena creata in codice, nel codice vedrai dove e come nomina il file. ora puoi manipolare il codice come vuoi per ripeterlo 237 volte con il cambiamento di nome

Tutto quello che ti ho scritto sopra non è un metodo ortodosso per fare quello che vuoi però è il sistema più semplice

grazie mille.
solo che non riesco a trasformare la maschera in codice:doh:
al limite ci metto al qualche collega

ciaps
27-04-2007, 15:25
grazie mille.
solo che non riesco a trasformare la maschera in codice:doh:
al limite ci metto al qualche collega

devi trasformare la macro in codice non la maschera in codice, per farlo vai sul menu strumenti/macro /converti marco in visual basic

Lord Amarant
27-04-2007, 17:44
si, avevo sbagliato a digitare.
grazie ancora delle risposte(è inutile, devo proprio farmi un corsettino di access)

Matrixbob
30-04-2009, 12:43
Anche io ho da unire di 300 file Excel di questo tipo e con stessa struttura:

http://img522.imageshack.us/img522/8611/immagine0.jpg

Seguendo la procedura consigliata (http://www.hwupgrade.it/forum/showpost.php?p=16885696&postcount=4) mi sbuca solo questa form dove non so mettere "Trasferiscifogliodicalcolo":

http://img412.imageshack.us/img412/2233/immagineo.jpg

... :O

[PS]
Access 2003

Matrixbob
30-04-2009, 13:18
Ho trovato questa, ma mi va in crash sulla istruzione in grassetto (ho vito da debug):


Sub OpenAndCopy()

Dim i As Integer
i = 1

Dim vaFileName As Variant
Const MyDir As String = "C:\"

With Application.FileSearch
.NewSearch
.LookIn = MyDir
.SearchSubFolders = False
.FileType = msoFileTypeExcelWorkbooks
If .Execute > 0 Then
Application.ScreenUpdating = False

For Each vaFileName In .FoundFiles
ProcessData vaFileName, i
i = i + 1
Next

Else
MsgBox "Nessun foglio excel trovato"
End If
Application.ScreenUpdating = True
End With

End Sub

Sub ProcessData(ByVal Fname As String, ByVal contatore As Double)

Dim wbkData As Workbook, wsData As Worksheet, wsSummary As Worksheet
Dim nome_precedente As String

Workbooks.Open (Fname)
ActiveWorkbook.Sheets(1).Select
nome_precedente = ActiveWorkbook.Name
nome = ActiveSheet.Name
Cells.Select
Selection.Copy

ThisWorkbook.Activate
ThisWorkbook.Sheets.Add
ActiveWorkbook.Sheets(contatore).Sel ect

ActiveSheet.Paste
'rinomina il foglio copiato, in modo che non ne esista un altro con lo stesso nome
ActiveSheet.Name = nome & "copia_" & contatore

Workbooks(nome_precedente).Activate
Application.DisplayAlerts = False
Application.DisplayNoteIndicator = False
ActiveWorkbook.Close savechanges:=False

End Sub

zuper
30-04-2009, 19:03
bisognerebbe capire come sono strutturati quei files...
dato che sono a distanza di 1 secondo tra di loro mi sa che sono semplici...


io lascerei perdere macro e access e farei così:

1- scarica questo http://www.download3000.com/download-xls2csv-count-reg-53215.html
2- copia l'eseguibile nella cartella dove hai i files xls da unire
3- apri una shell di dos, vai nella cartella di cui sopra e scrivi PARO PARO ;) :

FOR /F "usebackq delims==" %i IN (`dir /b *.xls`) DO xls2csv.exe "%i"

4- a questo punto hai tutti i file csv da unire + facilmente e sempre nella stessa cartella lanci questo comando:

type *.csv >> finale.csv

a questo punto nel file FINALE hai tutti i file dentro.

;)

Matrixbob
05-05-2009, 11:11
bisognerebbe capire come sono strutturati quei files...
dato che sono a distanza di 1 secondo tra di loro mi sa che sono semplici...


io lascerei perdere macro e access e farei così:

1- scarica questo http://www.download3000.com/download-xls2csv-count-reg-53215.html
2- copia l'eseguibile nella cartella dove hai i files xls da unire
3- apri una shell di dos, vai nella cartella di cui sopra e scrivi PARO PARO ;) :

FOR /F "usebackq delims==" %i IN (`dir /b *.xls`) DO xls2csv.exe "%i"

4- a questo punto hai tutti i file csv da unire + facilmente e sempre nella stessa cartella lanci questo comando:

type *.csv >> finale.csv

a questo punto nel file FINALE hai tutti i file dentro.

;)

TNX funziona!
Ho soltanto un piccolo side-effect che è quello di vedersi ripetere la prima riga di testata del Excel che sono una specie di titolo delle uniche 3 colonne che il file hanno. :)

zuper
05-05-2009, 19:16
TNX funziona!
Ho soltanto un piccolo side-effect che è quello di vedersi ripetere la prima riga di testata del Excel che sono una specie di titolo delle uniche 3 colonne che il file hanno. :)

purtroppo il dos è un po limitato per certe cose...

cmq usa i filtri di excel e le rimuovi al volo :D

ReWeNgE
18-12-2010, 15:23
Salve a tutti

Mi ricollego a questa vecchia discussione in quanto vorrei convertire dei file xls in file csv tramite riga di comando.

Per ora sto usando Converte XLS come programma che mi permette di salvare un job che eseguo popi da riga di comando:

ConvertXLS.exe /J"Ordini.SII"

Purtroppo è un'applicaziona shareware e volevo quindi provare la soluzione proposta in questo thread

Ottengo però questo errore:

i" non atteso.

bagigetto
17-01-2011, 15:39
Hai sbagliato a scrivere sicuramente.E' successo anche a me.
Prova a copiare il comando selezionandolo e premendo CTRL+C
Poi vai sulla finestra DOS e clicca con il destro sul mouse e scegli incolla.
(Il CTRL+V non funziona ma con il mouse si).
L'importante è che sei nella root giusta.
A me, incredibilmente, adesso funziona.
Unico problema è che i miei dati non vengono interpretati giusti quando reimporto in excel.

emmedi
17-01-2011, 16:24
Ora che abbiamo la discussione ufficiale direi che questo topic può essere abbandonato...
http://www.hwupgrade.it/forum/showthread.php?t=2102242