› Sviluppare funzionalita su Microsoft Office con VBA › sincronizzare tra file excel nel pc e sito
-
AutoreArticoli
-
tramite macro è possibile trasferire ed fare l'update delle tabelle in phpmyadminy nel database del sito dal file excel?
Anzitutto un po' di chiarezza, phpMyAdmin è un'applicazione web scritta in PHP, che consente di amministrare un database MySQL. Googlando mi par di capire che ce la fa a importarsi le tabelle direttamente da un file Excel (ha un menu chiamato Import). Da quel che leggo ha delle limitazioni sul numero di righe importabili. Comunque sempre con Google ci sono svariate possibilità di trasformare tabelle Excel in MySQL.
se fosse possibile riportare i colori
Bè questo puoi farcela da solo. Devi colorare la cella definita in .Cells(r, "A") col Font.Color desiderato.
dire alla macro di iniziare a scrivere al primo rigo libero della colonna A
Anche a far questo puoi farcela. Devi solo calcolare la prima cella libera della colonna A. Esiste una funzione, Worksheetfunction.CountA, cui passare il range della colonna A, e ti restituisce il numero di righe piene; basta fare +1 e hai la prima riga libera. Ricordati di togliere la riga che dice ".ClearContents" altrimenti ti cancella tutto e addio storico 🙂
Modifico Range A1 in B1 e Range B:B in C:C e Cells r, "A" in Cells r, "B" va bene?
direi che va bene ma... hai provato? salva tutto, fai una copia e prova! 😀
Bè questo puoi farcela da solo. Devi colorare la cella definita in .Cells(r, "A") col Font.Color desiderato.
ma questo è fatto ma non riporta i colori della cella.
Oppure ho capito male io, attualmente le colonne dove ci sono ni link sono colorati diversi uno blu ed uno rosso, questo dati quando vanno nel foglio Per gli spedizionieri vanno solo i dati e non le impostazioni della cella è cioè il font colorato.
Oppure dici di inserire nel codice che la cella si deve colorare? Questo non lo so fare. Ho trovato questo ActiveCell.Font.ColorIndex = 3 ‘<<<<rosso ma non so come inserirlo nel codice. Scusa per gli altri vedo poi come fare.
Oppure faccio a mano che ricopio solo la formattazione alle celle col trascinamento e basta e rimane così
Ho notato che la data me la scrive solo il primo giorno con questo codice
s = "Giorno " & Format(.Range("F2"), "dd mmmm yyyy")ma poi quando cambia data non me lo scrive più il codice sopra indicato la macro rimane sempre nel ciclo For Each fino alla fine dei righi.
scusa nella macro come mai mi salva il file csv con l'estensione in maiuscolo? .CSV in pratica sul server ci va ma non mi modifica quello che c'è. Cosa bisogna cambiare?
Ciao Vecchiofrac ti sto facendo tante domande per problemi che vado notando man mano che utilizzo
Quando ti dissi di spostare nelle colonna B la scrittura della macro era perchè cosi nelle colonna A mettessi la data al rigo corrispettivo quando mi cambiava la data.
Ma noto che questo codice in basso mi cancella anche la colonna A io invece pensavo che mi cancellasse solo la colonna B e poi la riscrivesse proseguendo il codice e cosi la data che io avevo messo nella colonna A mi rimaneva.
Sheets("Per gli spedizionieri").Range("B1").CurrentRegion.ClearContentsscusa la macro creaBat mi da errore run time 52 in questo codice non ho capito ancora perchè avvolte mi da questo errore ed avvolte no, non ho capito quando. Sto facendo delle prove quando mi funziona da cosa dipende. Ancora non ho capito.
Open f For Binary As #1Non ci sto capendo certe volte mi da questo errore ora faccio delle prove e non me lo da.
Boooo
dici di inserire nel codice che la cella si deve colorare?
Certamente, e ti ho già mostrato come si fa più sopra. Io utilizzerei Font.Color, più preciso:
With Sheets("Per gli spedizionieri") s = c & " - " & c.Offset(, 5) & " - " & c.Offset(, 2) .Cells(r, "A") = s r = r + 1 .Cells(r, "A") = c.Offset(, 6) .Cells(r, "A").Font.Color = 12874308 'azzurrino r = r + 1 .Cells(r, "A") = c.Offset(, 7) .Cells(r, "A").Font.Color = 3243501 'orange r = r + 1 End WithIl problema della data non l'ho ben compreso, ma è giusta la tua interpretazione, la data viene inserita solo a inizio ciclo. Chiaro che comunque on devi cancellare il contenuto della colonna A ma ripartire dall'ultima riga valorizzata:
Sub per_spedizionieri() Dim s As String Dim c As Range Dim r As Long r = WorksheetFunction.CountA(Range("A:A")) + 1 With Sheets("Tabella News") s = "Giorno " & Format(.Range("F2"), "dd mmmm yyyy") Sheets("Per gli spedizionieri").Range("A1") = sl'estensione in maiuscolo? .CSV
Non dovrebbe, visto che il codice prevede l'estensione in minuscolo, e comunque è ininfluente:
With ActiveSheet.Copy ActiveSheet.SaveAs Filename:=percorso & nome & ".csv", _dici di inserire nel codice che la cella si deve colorare?
Perdonami tu l'hai detto ma non sapevo come inserire il codice ho fatto delle ricerchè via google
questo codice in basso mi cancella anche la colonna A
Eh sì, CurrentRegion tiene conto di tutte le celle contigue. Problema facilmente risolvibile comunque visto che devi eliminare la riga di codice dato che non devi cancellare il contenuto precedente.
certe volte mi da questo errore
Potrebbe dipendere dal numero # che è il canale da aprire per la lettura/scrittura dl file.
In casi come questo si ricorre a FreeFile:
Sub CreaBAT(ByVal m As String) Dim f As Variant, sBat As Variant, s As String dim fi as long f = ThisWorkbook.Path & "\test.bat" fi = FreeFile Open f For Binary As #fi . . . Close #fi End SubHo fatto le modifiche intanto ti mando il file con le modifiche fatte, in merito alla data mi spiego meglio,
e se vedi la tabella ti rendi conto quando cambia la data non mi scrive Giorno 02 ecc. o nel rigo sopra l'inizio del giorno o mi basta che il giorno venga scritto nella colonna A ed gli altri righi nella colonna B, il mio intento è poter capire quando iniziano i brani del 1 ed i brani del 2 ecc.
Per il discorso del .CSV maiuscolo lo so che non è influente ma il fatto che nel server è con .csv miniscuolo e mi ha scritto un altro e che quindi non mi si aggiornava.
Allegati:
You must be logged in to view attached files.Ok allora giorno in colonna A, resto delle informazioni in colonna B. Poichè le righe compilate sono in colonna B, è sulla base di questa che devi fare il conteggio righe per sapere qual è la successiva a cui accodare nuove informazioni.
Option Explicit Sub per_spedizionieri() Dim s As String Dim c As Range Dim r As Long r = WorksheetFunction.CountA(Range("B:B")) + 1 With Sheets("Tabella News") s = "Giorno " & Format(.Range("F2"), "dd mmmm yyyy") Sheets("Per gli spedizionieri").Range("A1") = s For Each c In .Range("B:B") If Trim(c) = "" Then Exit For If c.Row > 1 Then With Sheets("Per gli spedizionieri") s = c & " - " & c.Offset(, 5) & " - " & c.Offset(, 2) .Cells(r, "B") = s r = r + 1 .Cells(r, "B") = c.Offset(, 7) .Cells(r, "B").Font.Color = 3243501 'orange r = r + 1 .Cells(r, "B") = c.Offset(, 6) .Cells(r, "B").Font.Color = 12874308 'azzurrino r = r + 1 End With End If Next End With MsgBox "Finito", , "Per gli spedizionieri" End SubQuesta cosa del csv minuscolo o maiuscolo ancora non ho capito bene che differenza fa. Cos'è che non si aggiorna?
Questa cosa del csv minuscolo o maiuscolo ancora non ho capito bene che differenza fa. Cos'è che non si aggiorna?
ti allego lo screenshot del server e come vedi ci sono due file uguali uno con csv minuscolo e l'altro CSV maiuscolo e purtroppo nel server sono come due file diversi, quando il plug in l'altro screesnhot fa l'auto aggiornamento dal file della tabella siccome avevo messo il nome con csv minuscolo non me l'aggiornava e quindi non vedevo gli aggiornamenti nella tabella.
Allegati:
You must be logged in to view attached files.Ok allora giorno in colonna A, resto delle informazioni in colonna B. Poichè le righe compilate sono in colonna B, è sulla base di questa che devi fare il conteggio righe per sapere qual è la successiva a cui accodare nuove informazioni.
Non funziona, se la provi come mai mi conincia dal rigo 27 a scrivere? Non scrive giorno 2 e 3
Ah caspita, finalmente ho capito cosa vuoi fare, devi raggruppare per data 🙂
Bisognerà implementare un autofilter allora 😛
Sul file csv con l'estensione in maiuscolo, è strano perchè il codice prevede l'estensione in minuscolo. Non ho idea di quale punto critico si possa trattare.
Ecco il codice che sostituisce il precedente.
Option Explicit Sub per_spedizionieri() Dim s As String Dim c As Range Dim r As Long Dim v As Variant, d As Variant 'recupera i valori non duplicati della colonna Data With Worksheets("Tabella News") .AutoFilterMode = False .Range("F:F").Copy .Range("AA1") .Range("AA:AA").RemoveDuplicates Columns:=Array(1), Header:=xlYes .Range("AA1").Clear v = Application.Transpose(.Range("AA2").CurrentRegion) .Range("AA:AA").Clear r = WorksheetFunction.CountA(Worksheets("Per gli spedizionieri").Range("AA:AA")) + 1 Worksheets("Per gli spedizionieri").Range("A:B").Clear For Each d In v .AutoFilterMode = False Application.CutCopyMode = False .Range("A1").CurrentRegion.AutoFilter field:=6, Criteria1:=Format(d, "dd/mm/yyyy") .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy With Worksheets("Per gli spedizionieri") .Paste .Range("AA1") .Cells(r, "A") = "Giorno " & Format(d, "dd mmmm yyyy") For Each c In .Range("AB:AB") If Trim(c) = "" Then Exit For If c.Row > 1 Then s = c & " - " & c.Offset(, 5) & " - " & c.Offset(, 2) .Cells(r, "B") = s .Cells(r, "B").Font.Color = vbBlack r = r + 1 .Cells(r, "B") = c.Offset(, 7) .Cells(r, "B").Font.Color = 3243501 'orange r = r + 1 .Cells(r, "B") = c.Offset(, 6) .Cells(r, "B").Font.Color = 12874308 'azzurrino r = r + 1 End If Next .Range("AA1").CurrentRegion.Clear End With Next Worksheets("Per gli spedizionieri").Range("AA1").CurrentRegion.Clear .AutoFilterMode = False End With MsgBox "Finito", , "Per gli spedizionieri" End SubScusa ti chiedo nuovamente aiuto non capisco il perchè non mi funziona più questa macro per gli spedizionieri.
Mi da errore 13 tipo non corrispondente in questo rigo For Each d In v
Fino ad ieri ha funzionato tutto. Non ci sto capendo grazie
Option Explicit Sub per_spedizionieri() Dim s As String Dim c As Range Dim r As Long Dim v As Variant, d As Variant 'recupera i valori non duplicati della colonna Data With Worksheets("Tabella News") .AutoFilterMode = False .Range("F:F").Copy .Range("AA1") .Range("AA:AA").RemoveDuplicates Columns:=Array(1), Header:=xlYes .Range("AA1").Clear v = Application.Transpose(.Range("AA2").CurrentRegion) .Range("AA:AA").Clear r = WorksheetFunction.CountA(Worksheets("Per gli spedizionieri").Range("AA:AA")) + 1 Worksheets("Per gli spedizionieri").Range("A:B").Clear For Each d In v .AutoFilterMode = False Application.CutCopyMode = False .Range("A1").CurrentRegion.AutoFilter field:=6, Criteria1:=Format(d, "dd/mm/yyyy") .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy With Worksheets("Per gli spedizionieri") .Paste .Range("AA1") .Cells(r, "A") = "Giorno " & Format(d, "dd mmmm yyyy") For Each c In .Range("AB:AB") If Trim(c) = "" Then Exit For If c.Row > 1 Then s = c & " - " & c.Offset(, 5) & " - " & c.Offset(, 2) .Cells(r, "B") = s .Cells(r, "B").Font.Color = vbBlack r = r + 1 .Cells(r, "B") = c.Offset(, 7) .Cells(r, "B").Font.Color = 3243501 'orange r = r + 1 .Cells(r, "B") = c.Offset(, 6) .Cells(r, "B").Font.Color = 12874308 'azzurrino r = r + 1 End If Next .Range("AA1").CurrentRegion.Clear End With Next Worksheets("Per gli spedizionieri").Range("AA1").CurrentRegion.Clear .AutoFilterMode = False End With MsgBox "Finito", , "Per gli spedizionieri" End SubAllegati:
You must be logged in to view attached files.Appena riesco ci guardo... bisogna vedere che cosa è finito in "v". Potresti impostare un breakpoint al momento dell'assegnazione a "v" e quindi interrogare la variabile in Immediata (anche solo un semplice Select) per vedere cosa è successo.
Appena riesco ci guardo... bisogna vedere che cosa è finito in "v". Potresti impostare un breakpoint al momento dell'assegnazione a "v" e quindi interrogare la variabile in Immediata (anche solo un semplice Select) per vedere cosa è successo.
Ciao vecchio frac per caso hai avuto modo di dargli un occhiata? Grazie sempre
No, mi dispiace. Queste sono giornate pesanti e quando arrivo a casa la sera ho gli occhi che si incrociano... ma vedrò di fare quello che posso 🙂
-
AutoreArticoli
