Excel e FTP



  • 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:

    fNum = FreeFile()

    Open sFtpcommand For Output As #fNum

    Print #fNum, "open " & s_Host
    Print #fNum, s_User
    Print #fNum, s_Pass
    Print #fNum, "prompt"
    Print #fNum, "send " & s_Upfile
    Print #fNum, "close"
    Print #fNum, "quit"

    Shell "ftp -s:" & "FtpCommand.txt"

    un caro saluto
    Stefano



  • 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