Importazione da foglio esterno
Hai un problema con Excel? 
Importazione da foglio esterno
di Michele (utente non iscritto) data: 18/11/2009
Ciao a tutti. sto creando una maschera di dialogo nella quale va inserita la possibilità di importare le prime due colonne di un file excel esterno. quindi devo:
1) inserire un'oggetto (composto da una textbox e da un pulsante) che apre la maschera di navigazione nel file system (quell'oggetto, per intenderci, che si trova nei programmi quando devi dire alla macchina dove salvare un file, o dove cercarlo, o quale uploadare sul server)
2) associare alla pressione del bottone "apri" di quella maschera l'azione: "importa in questo file la colonna "a" e "b" del file esterno che hai scelto".
che voi sappiate, è una cosa molto difficile da fare?
grazie del vostro tempo in ogni caso
michele
di Enzo (utente non iscritto) data: 18/11/2009
Ciao, non ti serve una textbox ma solo un pulsante e coiaci dentro questa istruzione
ossia ti apre un file excel che selezioni tu
ti copia le due colonne a e b e le incolla nel file dove lo hai aperto e ti chiude il file dal quale hai importato i dati
fa sapere se puo' andar bene
Application.ScreenUpdating = False
oldfile = ActiveWorkbook.Name
FILETOOPEN = Application.GetOpenFilename("xls Files (*.xls), *.xls", , "Selezionare il file dal quale importare le colonne a e b", "Apri", "False")
file_selezionato = ActiveWorkbook.Name
If FILETOOPEN = False Then
Application.CutCopyMode = False
Exit Sub
End
End If
Workbooks.OpenText Filename:=FILETOOPEN
nuovo = ActiveWorkbook.Name
Columns("A:B").Select
Selection.Copy
Windows(oldfile).Activate
Range("a1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Windows(nuovo).Close
Application.ScreenUpdating = True |
di Michele (utente non iscritto) data: 18/11/2009
Funziona per-fet-ta-men-te!!! grazie infinite, enzo!
Oops...
di Michele (utente non iscritto) data: 23/11/2009
Chiedo scusa ancora. il codice funziona, ma non chiude il file da cui attingo i dati, cosa che invece vorrei.
È molto complicato da modificare? grazie in ogni caso. michele
di Enzo (utente non iscritto) data: 24/11/2009
No , dovrebbe farlo, l'istruzione qui sotto la fa eseguire ed e' quella che trovi nei comandi che ti avevo inviato, almeno a me funziona bene
Già, ma...
di Michele (utente non iscritto) data: 24/11/2009
E' quello che dico anch'io, ma vba mi restituisce l'alert "errore di runtime '9': indice non incluso nell'intervallo." e la tua riga è proprio quella illuminata dal debug. domani proverò ad eseguire lo stesso codice copiando il file su un'altra macchina, e se lì non succede nulla forse è il mio sistema che ha qualche problema. intanto, grazie del tuo tempo :)
di Enzo (utente non iscritto) data: 25/11/2009
Prova a modificare l'istruzione in questo modo
ripeto prova
fa sapere
ps che office utilizzi?
Windows(nuovo).Close False
oppure
Windows(nuovo).Close = False
|
di Enzo (utente non iscritto) data: 25/11/2009
Mi poi "postare" esattamente che tipo di istruzione hai inserito nella macro?
di Michele (utente non iscritto) data: 26/11/2009
La versione di office è la 2003. sulla mia macchina ho provato entrambe le modifiche. la seconda modifica non genera alert, ma nemmeno produce il risultato. la prima, invece, produce un alert analogo. comunque voglio lanciare la stessa macro su un'altra macchina. non ci sono riuscito tutto ieri, ma oggi penso di farcela. grazie della tua pazienza :) michele
Test su altra macchina
di Michele (utente non iscritto) data: 26/11/2009
Ciao enzo. ho testato la stessa identica macro su un'altra macchina con office 2000. ecco i risultati:
1) windows(nuovo).close e windows(nuovo).close false restituiscono l'alert "errore di runtime '9' indice non incluso nell'intervallo". cliccando sul pulsante "fine" le colonne vengono importate ma il file di partenza non viene chiuso automaticamente, e il debug illumina proprio quella riga;
2)con la seconda modifica, windows(nuovo).close = false, le operazioni non vengono nemmeno eseguite e quando apro il file (la macro è associata all'evento "open worksheet") excel va diretto in vba illuminando la riga e alertandomi "errore di compilazione: assegnazione alla costante non ammessa".
spero di esserti stato utile. in ogni caso, grazie fin d'ora della tua pazienza :) michele
Risolto!!!
di Michele (utente non iscritto) data: 29/11/2009
Le modifiche che vedete commentate hanno risolto il problema. spero che apprezziate :) michele
Application.ScreenUpdating = False
oldfile = ActiveWorkbook.Name
FILETOOPEN = Application.GetOpenFilename("xls Files (*.xls), *.xls", , "Selezionare il file dal quale importare le colonne a e b", "Apri", "False")
file_selezionato = ActiveWorkbook.Name
If FILETOOPEN = False Then
Application.CutCopyMode = False
Exit Sub
End
End If
Workbooks.OpenText Filename:=FILETOOPEN
nuovo = ActiveWorkbook.Name
'INIZIO PRIMA MODIFICA
Dim SourceFile As Workbook
Set SourceFile = ActiveWorkbook
'FINE SECONDA MODIFICA
Columns("A:B").Select
Selection.Copy
Windows(oldfile).Activate
Range("a1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Application.ScreenUpdating = True
'INIZIO SECONDA MODIFICA
SourceFile.Activate
SourceFile.Close
'FINE SECONDA MODIFICA
Windows(oldfile).Activate
|
Vuoi Approfondire?