Forum di Excel e VBA, per condividere esperienze e risolvere problemi su: Excel, Word, Access, Power Point, Microsoft Office, macro, Visual Basic e Visual Studio.
Excel e FTP di alfatau (utente non iscritto) data: 27/03/2014 07:30:25
Salve! Avrei due problemi sui quali chiedo un piccolo aiuto:
1) Ho creato una macro Excel che provvede a fare l'upload di un file d testo su un sito web mediante l'FTP di windows richiamata dalla funzione 'shell' . Come si fa ad intercettare e gestire gli eventuali errori? Cioè, se l'upload non va a buon fine per assenza di connessione o per inconvenienti sulle cartelle di arrivo di partenza, come faccio da Excel a capire l'errore, visto che sono errori di sistema e che non si verificano dentro la macro e quindi intercettabili con 'on error'?
2) Io ho una cartella con 10 fogli (pippo, pluto, paperino, minnie etc.). Come faccio a salvare in altra cartella solo due o tre di questi dieci fogli? Riesco a salvarne uno sono, ma non trovo la via di creare una nuova cartella con più di un foglio.
Ringrazio in anticipo gli eventuali suggerimenti
Stefano
di scossa (utente non iscritto) data: 27/03/2014 08:28:25
Direi che dovresti cominciare col mostrare il codice che utilizzi .....
di lepat (utente non iscritto) data: 27/03/2014 08:49:36
così è troppo facile scossa, hai la sfera di cristallo in manutenzione ?
di Stefano (utente non iscritto) data: 27/03/2014 13:16:51
Salve di nuovo!
...non ho capito la battuta di lepat, comunque rispondo a scossa dicendo che non ho postati il software perchè mi pareva inessenziale ai fini di un eventuale suggerimento.
Rispetto alla prima questione che ponevo, io riesco ad effettuare operazioni di downolad o di upload lanciando dalla macro Excel la funzione:
Shell "ftp -s:" & sFtpcommand
dove sFtpcommand è semplicemente un file di testo che contiene le credenziali e le righe di comandi per accedere all'URL interessato. Chiedevo a qualcuno con maggiore esperienza di me se poteva aiutarmi a capire come si fa ad intercettare un eventuale insuccesso del comando di sistema ftp.... da momento che questo comando viene gestito fuori dal controllo della macro Excel e quindi non è intercettabile da 'on error...'.
La seconda questione riguardava la possibilità di salvare in altra cartella due o più fogli della cartella corrente. Se io ho una cartella con i fogli 1, 2, 3, 4 etc, e voglio salvare solo il foglio MioFoglio, uso questo codice:
Dim sh As Worksheet
Set sh = ThisWorkbook.Worksheets(MioFoglio)
sh.Copy
With ActiveWorkbook
.SaveAs Filename:="C:ProvaMioFileDaSalvare.xls"
.Close
End With
Set sh = Nothing
e la cosa funziona. Il problema nasce quando voglio salvare MioFoglio1 e MioFoglio2 nello stesso file .xls Ho provato in cento modi ma non riesco a trovare il bandolo della matassa.
Qualcuno sa darmi dei suggerimenti su una delle due questioni?
Grazie in anticipo
Stefano
di lepat (utente non iscritto) data: 27/03/2014 15:18:02
Si partecipa ai forum non soltanto per chiedere, ma anche per dare, io non ho mai usato excel per l'upload con FTP e mi interesserebbe sapere come si fa, in particolare la composizione della stringa sFtpcommand, perciò ho fatto la battuta.
di Stefano (utente non iscritto) data: 27/03/2014 16:02:23
............Si partecipa ai forum non soltanto per chiedere, ma anche per dare, io non ho mai usato excel per l'upload con FTP e mi interesserebbe sapere come si fa, in particolare la composizione della stringa sFtpcommand, perciò ho fatto la battuta......
Sarebbe bastato semplicemente chiederlo senza bisogno di impartire lezioni morali o battute di facile e gratuita ironia...tutto qui!
Io in VBA Excel mi sento un "ultimo arrivato" e non ho certo gelosi segreti da custodire.
Il codice è elementare:
di lepat (utente non iscritto) data: 27/03/2014 21:20:52
te lo aveva chiesto già scossa di allegare il codice, io ho soltanto scherzato con lui, stava a te capire e rispondere a tono.
di lepat (utente non iscritto) data: 28/03/2014 08:47:04
Per la prima domanda non credo che ci siano soluzioni, per la seconda prova così
Sub copiafogli()
Set wb1 = ThisWorkbook
myfile = "C: est
uovofile.xlsx"
Set wb2 = Workbooks.Open(myfile)
wb1.Sheets(Array("Foglio1", "Foglio2", "Foglio3")).Move after:=wb2.Sheets(1)
End Sub
OK! di Stefano (utente non iscritto) data: 28/03/2014 14:45:03
Ringrazio lepat per il suo suggerimento...e mi scuso con lui per la mia precedente risposta un pò troppo poco serena
Ho provato il codice che mi ha suggerito e funziona benissimo...io difficilmente ci sarei arrivato.
Mi dispiace non riuscire a trovare una soluzione al secondo quesito anche perchè, a prima vista, mi sembrava meno impegnativo di quello appena risolto...avevo l'impressione che la funzione 'shell' dovesse in qualche modo restituire per forza un codice d'errore, ma probabilmente dovrò studiare un pò di più
Un caro saluto a tutti e di nuovo grazie a lepat
di lepat (utente non iscritto) data: 28/03/2014 17:12:31
il fatto che io non abbia la soluzione per l'interazione con ftp non significa che non esista, aspetta altri pareri prima di desistere