Sviluppare funzionalita su Microsoft Office con VBA sincronizzare tra file excel nel pc e sito

Login Registrati
Stai vedendo 25 articoli - dal 1 a 25 (di 78 totali)
  • Autore
    Articoli
  • #12620 Score: 0 | Risposta

    dariotoby
    Partecipante

      Salve vorrei sapere se possibile poter sincronizzare tra un file excel nel pc ed una tabella creata con un plug in di wordpress nel sito.
      Ho un sito wordpress questo https://love4music.altervista.org/news-del-mese-di-febbraio-2019/ in questa pagina con questa tabella carico una tabella con il file csv ma in pratica la carico anche più volte al giorno, aggiungo dei brani ogni rigo.
      Vorrei che aggiungendo le righe nel file excel in automatico venissero aggiunte nella tabella del sito. Secondo te è possibile?

      In pratica la tabella viene creata da un plug in per wordpress che si chiama Tablepress ed i dati li prende da un file csv che o carico io materialmente o potrei metterlo nel server il file csv e prendere i dati in automatico da questo file nel server, ma resta sermpre il problema che ad ogni aggiornamento devo caricare il file nel server tramite ftp.

       

      #12629 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        238 pts

        dariotoby ha scritto:

        ad ogni aggiornamento devo caricare il file nel server tramite ftp.

        Questo è il punto chiave del problema.

        Da Excel occorre cercare un modo per automatizzare questa operazione di caricamento.

        Io non ho esperienza di ftp. Come avviene il caricamento manuale? Hai un client ftp come FileZilla o FreeFTP e esegui da lì le operazioni di trascinamento e caricamento? In questo caso, funziona come un normale file explorer, cioè tu inserisci dei file in una cartella locale e poi il gestore ftp provvede al caricamento?

        #12639 Score: 0 | Risposta

        dariotoby
        Partecipante

          Grazie per la risposta e per l'interessamento ti spiego e ti allego anche uno screen shot. Io attualmente ho fatto le operazioni di caricamento dal backend del plug in che vedi nello screenshot, come vedi c'è carica file, io vado a scegliere il file csv dal mio pc, si carica nel server del sito, poi faccio sostituisci quello esistente ed importo, ed in questo modo vengono aggiornati i dati che si vedono nella tabella.

          Il plug in ha anche un estensione auto update che farebbe l'auto update da un file caricato precedentemente nel server o che si trovi in un URL che metto. Questi sono anche altri metodi di caricamento dei dati per l'aggiornamento. Per accedere al server posso farlo o dal backend del sito e caricare il file nel server o anche con Filezilla. Io sono l'amministratore del sito.

          Ho già chiesto al proprietario del plug in se era possibile una sincronizzazione e mi ha detto che non c'è modo che il plug in comunichi con il mio pc. Ma io ho pensato visto che posso mettere il file nel server in una cartella specifica che ha un indirizzo specifico con user name e password ecc. Magari con l'auto update dell'estensione extra forse potrei automatizzare il tutto. 

          Ti allego uno screenshot di tutta la parte visibile del backend del sito e della parte del plug in e anche noti la parte della configurazone dell'autoupdate.

           

          Allegati:
          You must be logged in to view attached files.
          #12649 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            238 pts

            Non sono sicuro di poterti rispondere ma proverò a pensare a qualcosa.

            #12651 Score: 0 | Risposta

            vion
            Partecipante
              3 pts

              Un metodo che ho usato in passato per caricare velocemente e automaticamente file su server FTP  è tramite Batch File di Windows..

              Questo un esempio di file..

              --------------------------------------------------------------

              @echo off

              :: CSV file path + filename
              set x=%userprofile%\Documents\TEST.csv

              :: Echo the FTP commands to a text file
              echo open ftp .sito.com>ftpcmdtemp.txt
              echo username>>ftpcmdtemp.txt
              echo password>>ftpcmdtemp.txt
              echo binary>>ftpcmdtemp.txt
              echo cd public_html/tuacartella/ >>ftpcmdtemp.txt
              echo put %x%>>ftpcmdtemp.txt
              echo quit>>ftpcmdtemp.txt

              :: FTP Execution Commands
              ftp -s:ftpcmdtemp.txt %x%

              --------------------------------------------------------------
              Inserisci tutto in un file di testo, modifica con i tuoi dati dove è evidenziato in rosso e salvi in formato .bat, es "Carica.bat"

              Eseguendo il file come amministratore, il file verrà caricato su FTP immediatamente..

              Adesso puoi impostare un'attività pianificata su Windows (per caricare il file ogni tot ore..) oppure... gli esperti vba sapranno dire se è possibile eseguire questo script alla chiusura o salvataggio del file..

              #12653 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                238 pts

                Io lo sapevo che vion aveva una soluzione in tasca, sono stato tentato dal chiamarlo in causa direttamente   

                vion ha scritto:

                se è possibile eseguire questo script alla chiusura o salvataggio del file

                claro que si   

                #12660 Score: 0 | Risposta

                dariotoby
                Partecipante

                  grazie anche a vion per il suggerimento volevo capire oltre alla parte rossa devo cambiare penso anche http://ftp.sito.com con il mio sito https://love4music.altervista.org/   invece in public_html/tuacartella/ credo che devo mettere la cartella dove deve andare a finire il file.

                  Attualmente la cartella base è /membri/love4music/

                   

                   

                  #12662 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    238 pts

                    Sì, devi mettere i dati congruenti con il tuo progetto ftp, in modo che lo script possa inserirli correttamente in remoto.

                    #12680 Score: 0 | Risposta

                    vion
                    Partecipante
                      3 pts

                      dariotoby ha scritto:

                      https://love4music.altervista.org/

                      nel mio codice la formattazione automatica ha aggiunto l'http, ma in realtà non va messo..
                      Nel tuo caso quindi l'indirizzo ftp da mettere è solo love4music.altervista.org

                      dariotoby ha scritto:

                      cartella base è /membri/love4music/

                      Si, se non ricordo male, è quello il root path di altervista

                       

                      PS. Salutami Francesco Forever, abbiamo collaborato in passato 🙂 (gestisco programmi "Kanto Karaoke").  

                      #12698 Score: 0 | Risposta

                      dariotoby
                      Partecipante

                        Grazie Vion ho fatto delle prove ma non mi funziona.

                        Qui sotto ho messo il file batch creato ma quando faccio esegui come amministratore mi spunta una schermata nera tante scritte che non riesco a leggere perchè poi si chiude in automatico.

                        Ho controllato i parametri nel pannello di controllo e sono questi non so bene il percorso da mettere per raggiungere la cartella che ho creato Tabelle_news subito accedendo alla cartella root. Se vedo nella schermata del plug in mi dice   /membri/love4music se accedo tramite Filezilla è subito /Tabelle_news le ho provate tutte ma nessun file viene trasferito. Ho fatto una richiesta nel forum di supporto di Altervista vedremo che mi rispondono. Ti allego lo screenshot della parte del plug in

                        :: CSV file path + filename
                        set x=%userprofile%\OneDrive\karaoke\Tabella News Febbraio.csv

                        :: Echo the FTP commands to a text file
                        echo open ftp .love4music.altervista.org>ftpcmdtemp.txt
                        echo love4music>>ftpcmdtemp.txt
                        echo xxxxxxxxxx>>ftpcmdtemp.txt
                        echo binary>>ftpcmdtemp.txt
                        echo cd /membri/love4music/Tabelle_news>>ftpcmdtemp.txt
                        echo put %x%>>ftpcmdtemp.txt
                        echo quit>>ftpcmdtemp.txt

                        :: FTP Execution Commands
                        ftp -s:ftpcmdtemp.txt %x%

                         

                        Per quanto riguarda Franscesco Forever purtroppo lui se ne uscito dal forum ora è gestito da Gianni Lauricella. Io non ho conosciuto Francesco mi dispiace.

                        Allegati:
                        You must be logged in to view attached files.
                        #12701 Score: 0 | Risposta

                        vion
                        Partecipante
                          3 pts

                          dariotoby ha scritto:

                          set x=%userprofile%\OneDrive\karaoke\Tabella News Febbraio.csv

                          credo sia qui il problema perchè il nome del file ha degli spazi..

                          prova a mettere tutto il percorso tra virgolette:

                          set x="%userprofile%\OneDrive\karaoke\Tabella News Febbraio.csv"

                           

                          #12714 Score: 0 | Risposta

                          dariotoby
                          Partecipante

                            Funziona il trasferimento ma non capisco come mai non va dentro la cartella che ho creato Tabelle_news nella root ma il filve va nella root direttamente ti faccio uno screenshoot del programma Filezilla

                             

                             

                            Allegati:
                            You must be logged in to view attached files.
                            #12716 Score: 0 | Risposta

                            vion
                            Partecipante
                              3 pts

                              modifica la riga

                              echo cd /membri/love4music/Tabelle_news>>ftpcmdtemp.txt

                              con

                              echo cd Tabelle_news >>ftpcmdtemp.txt

                              #12718 Score: 0 | Risposta

                              dariotoby
                              Partecipante

                                Perfetto grande funziona è andato nella cartella Tabelle News

                                Ora mi resta capire tramite una macro ad eseguire questo file batch.

                                Io nel file excel ho una macro che mi salva il foglio in file csv.

                                Bisognerrebbe aggiungere dopo aver salvato di eseguire il file batch.

                                Ho una necessità da chiedervi e da modificare in questa macro ma anche nel file batch.

                                Siccome il file viene trasferito anche ad altri utenti e che questi potrebbero salvarlo in altra parte del pc penso che il percorso inpostato sia nel file batch che in questa macro dovrebbero essere modificati ma non so come. Un percorso generale si può? Che ne so forse My Path andrebbe bene?

                                Poi capite bene che ogni volta che cambia il mese dovrei cambiare il nome della tabella e quindi per evitare di andare a modificare il nome del file batch che la macro c'è la possibilità di impostare una cella nel file excel che ne so metti come nome il valore di cella"n1" quindi quando sostituisco nella cella "n1" da Febbraio a Marzo ecc mi cambia sia il nome della tabella csv che quindi il file batch. ecc.

                                Poi altra esigenza un po alla stessa maniera è possibile dire alla macro qui sotto di salvare fino al rigo impostato nella cella "o1" il file csv. Ma non so come impostare.

                                Perchè nel file excel noi inseriamo i righi e ci portiamo avanti nelle giornate ma quando pubblico il file csv vorrei che venissero pubblicate solo i righi che portano la data fino a domani esempio. Spero che mi sia spiegato bene.

                                Sub SlavaCSV()
                                    percorso = Environ("USERPROFILE") & "\OneDrive\karaoke\"
                                    nome = "Tabella News"
                                    ActiveSheet.Copy
                                    ActiveSheet.SaveAs Filename:=percorso & nome & ".csv", _
                                        FileFormat:=xlCSV, Password:="", WriteResPassword:="", _
                                        ReadOnlyRecommended:=False, CreateBackup:=False, Local:=True
                                    ActiveWindow.Close
                                End Sub
                                #12721 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  238 pts

                                  Quanta carne al fuoco 🙂 QUi ci vuole un pochino di tempo e pazienza, ma ci arriviamo. Sicuramente per quanto riguarda il percorso, è necessario che sia unico e conosciuto da tutti, oppure bisogna che si apra la finestra di "apri file", per esempio, altrimenti il codice da solo non può immaginare dove l'utente salva il file batch per eseguirlo, salvo fare una scansione dell'intero disco ma è una follia 🙂

                                  #12723 Score: 0 | Risposta

                                  dariotoby
                                  Partecipante

                                    si intanto ti ringrazio anticipatamente e pazienza ce ne, sicuramente non ho premura.

                                    Non mi permetterei assolutamente, già il solo fatto che mi stai dando una bella mano e solo da dirti infinitamente grazie.

                                    Per il file batch credo che non ci siano problemi dove andarlo a mettere perchè dirò di metterlo nella stessa cartella del file excel principale che è il file .xlsm

                                    Il file csv si può semplicemente salvare nella stessa cartella dove si trovano sia il file batch che il file .xlsm o vuoi che ti debba dire dove lo devo mettere per forza?

                                    Ti ho allegato il file principale xlsm

                                    No il fatto del perscoso lo chiedevo perchè magari io li metto in un posto, un altra persona che ci lavorerà pure lo salva in documenti ecc e quindi per come sono scritti sia il file batch che la macro giustamente se i file sono salvati in altro posto magari poi non funzionano. Credo. Tutto qui.

                                    Allegati:
                                    You must be logged in to view attached files.
                                    #12726 Score: 0 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      238 pts

                                      Il problema vero non è star dietro alle tue richieste, che sono tutte fattibili, è che ci vuole un pochino di pazienza per elaborare qualcosa che sia efficiente e affidabile, quindi come dico sempre, se vedi che la discussione langue (senza nessun altro intervento da parte di altri) allora mandami un messaggio privato di promemoria 🙂

                                      #12727 Score: 0 | Risposta

                                      dariotoby
                                      Partecipante

                                        Ok tranquillo. non preoccuparti capisco che ci sono tanti altri che ti chiedono aiuto in altri e non ci sono solo io. Fai tranquillamente con comodo.

                                         

                                        #13039 Score: 0 | Risposta

                                        vecchio frac
                                        Senior Moderator
                                          238 pts

                                          Bisogna che andiamo un po' per gradi.

                                          Anzitutto vorrei vedere anche il contenuto del file batch.

                                          Nella routine del salvataggio come csv (che devi rinominare perchè è scritto "SlavaCSV" invece di "SalvaCSV") puoi aggiungere questa riga per eseguire il file bat:

                                          CreateObject("WScript.Shell").Run Chr(34) & ThisWorkbook.Path & "\test.bat" & Chr(34)
                                          

                                          dove chiaramente invece che "test.bat" devi mettere il nome vero del file batch. Il quale come vedi viene adesso eseguito dalla stessa cartella di dove risiede il file Excel su cui stai lavorando.

                                          Per salvare il file csv nella medesima cartella agisci sul codice di SalvaCSV:

                                          Option Explicit
                                          
                                          Sub SalvaCSV()
                                          Dim percorso As String
                                          Dim nome As String
                                          
                                              'percorso = Environ("USERPROFILE") & "\OneDrive\karaoke\"    '<--- vecchio percorso
                                              percorso = ThisWorkbook.Path & "\"
                                              nome = "Tabella News"
                                              
                                              With ActiveSheet
                                                  .Copy
                                                  .SaveAs Filename:=percorso & nome & ".csv", _
                                                      FileFormat:=xlCSV, Password:="", WriteResPassword:="", _
                                                      ReadOnlyRecommended:=False, CreateBackup:=False, Local:=True
                                                  .Close False
                                              End With
                                              
                                              CreateObject("WScript.Shell").Run Chr(34) & ThisWorkbook.Path & "\test.bat" & Chr(34)
                                              
                                          End Sub

                                          Non metti mai Option Explicit, abituati a farlo 🙂

                                           

                                          #13062 Score: 0 | Risposta

                                          dariotoby
                                          Partecipante

                                            Ho fatto come hai detto, la cartella me l'ha creata ma cmq mi ha data un errore di run-time 438 proprietà o metodo non supportati dall'ogetto. Ho cliccato debug e mi ha dato errore nella riga

                                            .Close False

                                            questo è il file Carica.bat

                                            @echo off
                                            
                                            :: CSV file path + filename
                                            set x="%userprofile%\OneDrive\karaoke\Tabella News Febbraio.csv"
                                            
                                            :: Echo the FTP commands to a text file
                                            echo open ftp.love4music.altervista.org>ftpcmdtemp.txt
                                            echo love4music>>ftpcmdtemp.txt
                                            echo mia password>>ftpcmdtemp.txt
                                            echo binary>>ftpcmdtemp.txt
                                            echo cd Tabelle_news >>ftpcmdtemp.txt
                                            echo put %x%>>ftpcmdtemp.txt
                                            echo quit>>ftpcmdtemp.txt
                                            
                                            :: FTP Execution Commands
                                            ftp -s:ftpcmdtemp.txt %x%

                                             

                                            Volevo dei chiarimenti quindi il codice che tu mi hai suggerito il primo crea il file .bat? Ogni volta?

                                            Poi nel file .bat posso a questo punto modificare pure il percorso

                                            `set x="%userprofile%\OneDrive\karaoke\Tabella News Febbraio.csv"
                                            con questo ? sperando che la sintassi sia giusta. 
                                            set x="ThisWorkbook.Path & "\" Tabella News Febbraio.csv"
                                            `

                                            Poi per resto allora man mano.

                                             

                                            #13090 Score: 0 | Risposta

                                            vecchio frac
                                            Senior Moderator
                                              238 pts

                                              dariotoby ha scritto:

                                              il codice che tu mi hai suggerito il primo crea il file .bat? Ogni volta?

                                              No, il file bat è sempre soltanto quello, si trova nella cartella del file Excel ed è semplicemente eseguito dal file che crea la shell e usa il metodo Run.

                                              La sintassi che hai usato per impostare il nome del mese corrente è sbagliata, perchè è un file di DOS e non di VBA. L'accrocchio da utilizzare è chiamare il file bat con il parametro che viene poi passato alla variabile di ambiente "x":

                                              'se fossi in DOS lo richiamerei in questo modo:
                                              C:\>test.bat Febbraio
                                              
                                              'il file bat viene modificato così:
                                              set x = "%userprofile%\OneDrive\karaoke\Tabella News %1.csv"

                                              Si può automatizzare ma per darti una risposta completa devo pensarci un attimo (per non scrivere caxxate e fare quindi brutta figura 🙂 )

                                              #13091 Score: 0 | Risposta

                                              dariotoby
                                              Partecipante

                                                Intanto non fai brutta figura assolutamente.

                                                no mi sta bene con il file bat volevo solo modificare il percorso da %userprofile%\OneDrive\karaoke  alla stessa cartella del file senza mettere percorsi specifici, perchè come ti dicevo il file verrà utilizzato da altri utenti e che salveranno i file excel e bat nelle proprie cartelle e percorsi se metto un percorso specifico nel codice poi non funziona? giusto?

                                                Poi mentre rifletti se posso chiederti cosa che avevo fatto prima il file bat come dici viene fatto avviare dopo che viene salvato il file csv. 

                                                Mi serve che il nome del file abbia questo nome Tabella news (valore cella N1) così ogni volta che cambia il mese mi basta cambiare il valore della cella.

                                                Poi non so se hai avuto modo di provare il codice sopra che mi hai indicato mi capitano oltre all'errore che ti ho segnalato una cosa che prima non capitava. Mi si apre un file excel chiamato Cartel1 con gli stessi dati del file originale excel che ti avevo messo qualche post prima. E poi questo stesso file excel che si chiama Tabella news Febbraio.xlsm mi diventa Tabella news.csv ma con gli stessi  dati del file xlsm. visivamente con due fogli ecc, ma se il file csv lo chiudo e lo riapro è normale con un foglio come dovrebbe essere e i dati come dovrebbero essere. Ti consiglio di fare una prova e verificare. Mi tocca chiudere il file Carte1 e non salvare ed il medesimo file csv e non salvare

                                                 

                                                #13092 Score: 0 | Risposta

                                                vecchio frac
                                                Senior Moderator
                                                  238 pts

                                                  Se "karaoke" è una cartella condivisa in OneDrive, allora chiunque abbia il permesso di leggere quella cartella la vedrà e potrà accedere ai file in essa contenuti. Quindi non ha importanza dove sta il singolo file Excel locale, perchè il percorso sarà uguale per tutti: OneDrive\karaoke.

                                                  Gli utenti non salveranno alcun file bat perchè questo si troverà già fatto e finito nella cartella karaoke, dove verrà solamente eseguito e non modificato: verrà eseguito passandogli un parametro, il nome del mese che si trova nella cella N1, e poi lui penserà a recuperare il file csv che nel frattempo sarà stato creato dall'utente e depositato nella stessa cartella karaoke.

                                                  Non ho avuto ancora modo di testare il codice mal funzionante.

                                                  #13106 Score: 0 | Risposta

                                                  dariotoby
                                                  Partecipante

                                                    si ho capito che la cartella di onedrive è condivisa no ma io darei il file tutto. Quindi le altre due persone se lo potranno salvare dove vogliono. Quindi a questo punto toglierei il file da onedrive.

                                                     

                                                    #13113 Score: 0 | Risposta

                                                    vecchio frac
                                                    Senior Moderator
                                                      238 pts

                                                      dariotoby ha scritto:

                                                      se lo potranno salvare dove vogliono

                                                      E' necessario che tu dia chiara l'indicazione non "di salvare dove vogliono" ma in una locazione ben precisa, dove il tuo codice sa che troverà il file da eseguire. Quindi per esempio puoi dire agli interessati di salvare il file bat nella stessa cartella del file Excel, in modo che tu puoi farvi riferimento con ThisWorkbook.Path.

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 78 totali)
                                                    Rispondi a: sincronizzare tra file excel nel pc e sito
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: