Pagina 1 di 1
[Risolto] Copiare colonne excel in file calc
Inviato: giovedì 11 aprile 2019, 20:33
da Gennaro
ho la necessita di copiare delle colonne di un file excel e incollarle in un file di calc. premetto che adesso mi sto avvicinando a Open quindi conoscenza ZERO mentre ho qualche conoscenza (piccola) di excel e VBA. Ho preparato una macro scopiazzando per la rete e funziona perfettamente se i due file sono excel. Ho copiato la macro in calc ma non viene riconosciuta e quindi non funziona.. Brevemente devo copiare da "aggiornamentoDB.xlsb le 4 colonne (piu' di 3000 righe ed andarle ad incollare in Test.ods in modo da aggiornare il database da 1500 righe a 3540 righe. Da notare che il database non supererà mai le 5000 righe. Ringrazio chi mi puo aiutare anche riscrivendo tutta la macro. Scusate se ho sbagliato qualcosa ma è la prima volta che scrivo in un forum. Un grazie particolare a Charlie che mi ha indicato come fare per interrogare il forum. Di seguito i due allegati aggiornamentoDB.xlsx (file sorgente) e Test.ods (file destinazione). Grazie per l'aiuto
Re: Copiare colonne excel in file calc
Inviato: giovedì 11 aprile 2019, 22:06
da charlie
Ciao e benvenuto/a sul forum.
Se intanto ti vuoi presentare puoi farlo in questa sezione ->
viewforum.php?f=16
Per una panoramica delle regole del forum puoi consultare il Manuale di sopravvivenza ->
http://forum.openoffice.org/it/forum/vi ... hp?f=1&t=2
Buon proseguimento.
Re: Copiare colonne excel in file calc
Inviato: venerdì 12 aprile 2019, 8:13
da patel
Non capisco il problema, da calc puoi aprire il file excel quindi non ha bisogno di copiare nulla, inoltre non hai allegato il file ods e neppure la macro
Re: Copiare colonne excel in file calc
Inviato: venerdì 12 aprile 2019, 8:37
da Gennaro
grazie per la pronta risposta. mi scuso per gli allegati ma in anteprima avevo visto che erano stati messi. Non sono molto pratico quindi un po' di pazienza. Appena posso vedo il modo di inserire i due allegati. Brevemente mi servirebbe una macro che da un foglio calc mediante un tasto mi copia le celle di in foglio excel e le incolla nel foglio calc. Grazie
Re: Copiare colonne excel in file calc
Inviato: venerdì 12 aprile 2019, 8:40
da Gennaro
scusa Patel ora vedo i due file nella mia richiesta. vedi se ho fatto bene.In .ods c'è la macro copia e incolla che utilizzo in excel e che funziona perfettamente. Grazie
Re: Copiare colonne excel in file calc
Inviato: venerdì 12 aprile 2019, 19:07
da patel
ci sono chiamate a sub non esistenti proteggi e sproteggi, commentate queste ed aggiunto la riga
CompatibilityMode(True)
la macro funziona su libre office
Codice: Seleziona tutto
Option VBASupport 1
Public Sub copiaincolla()
CompatibilityMode(True) '<<<<<<<<<<<<
'dichiaro le variabili
Dim wk1 As Workbook
Dim wk2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim rng As Range
'gestione errori
On Error GoTo RigaErrore
Application.ScreenUpdating = False
MsgBox "ATTENZIONE - ATTENZIONE - ATTENZIONE!!!!" _
& Chr(10) _
& Chr(10) _
& "E' stato scaricato il file aggiornamentoDB" _
& Chr(10) _
& Chr(10) _
& "dal sito e messo nella cartella o dove è posizionato" _
& Chr(10) _
& Chr(10) _
& "il log per avere tutto aggiornato?" _
& Chr(10) _
& Chr(10) _
& Chr(10) _
& "Se non è stato fatto confermate la finestra che" _
& Chr(10) _
& Chr(10) _
& " vi esce e provvedete immediatamente!!"
'sproteggi '<<<<<<<<<<<<<<<<<<<<<
'metto i riferimenti ai files
'Log di stazione
Set wk1 = ThisWorkbook
'metto il riferimento al foglio
Set sh1 = wk1.Worksheets("database")
With sh1
'pulisco il database del log
.Range("a2:d5000").Clear
End With
'file aggiornato esterno al log che si è scaricato
'dal sito e va messo nella stessa cartella o posizione del log
Set wk2 = Workbooks.Open(wk1.Path & "/" & "aggiornamentoDB.xlsx")
'file aggiornato esterno al log che si è scaricato
'dal sito e va messo nel disco C
'Set wk2 = Workbooks.Open("C:\aggiornamentoDB.xlsx")
'metto il riferimento al fogli
Set sh2 = wk2.Worksheets("aggiornamentoDB")
With sh2
'copio i dati da un file all'altro
.Range("a2:d5000").Copy Destination:=sh1.Range("a2")
'.Range("G1").Copy Destination:=sh1.Range("G1")
End With
'salvo le modifiche al file FileDue.xls
wk2.Save
'chiudo il file FileDue.xls
wk2.Close
Application.ScreenUpdating = True
'riga sempre eseguita
RigaChiusura:
'Set a Nothing delle variabili oggetto
Set rng = Nothing
Set sh2 = Nothing
Set sh1 = Nothing
Set wk1 = Nothing
Set wk2 = Nothing
Exit Sub
'in caso di errore
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura
'proteggi '<<<<<<<<<<<
End Sub
Re: Copiare colonne excel in file calc
Inviato: venerdì 12 aprile 2019, 19:13
da patel
patel ha scritto:Non capisco il problema, da calc puoi aprire il file excel quindi non ha bisogno di copiare nulla, .....
Non mi hai risposto a questo
Re: Copiare colonne excel in file calc
Inviato: venerdì 12 aprile 2019, 19:48
da Gennaro
Ciao Patel, ti ringrazio per la pronta risposta. so che calc mi apre il file excel infatti il file test.ods è stato caricato su calc da un file excel. Questo file è la parte di macro che non funziona. Il problema è questo: il database nel file TEST. al momento ho 1500 articoli. Controllando il sito della società trovo il file che mi dice aggiornamentoDB (3540 articoli)vale a dire che il database che ho in test è obsoleto e devo aggiornarlo scaricandolo dal sito. una volta scaricato dal sito e posizionato nella stessa cartella dove si trova test (in excel primo worbook.open altrimenti lo posiziono in C:|) in modo da poterlo trovare.
Bene a questo punto cancello il database obsoleto in test, copio il nuovo database da aggiornamento e le vado a incollare nel database di test. in excel la procedure è perfetta ma la macro di cui sopra non funziona in open. si apre il file aggiornamentoDB mi sembra che cancella le celle in TEST ma non copia il nuovo database.sperando di essere stato abbastanza chiero ti chiedo aiuto visto che hai risolto sempre tutti i problemi del forum
Re: Copiare colonne excel in file calc
Inviato: sabato 13 aprile 2019, 8:44
da patel
Continu a non capire a cosa serve copiare i dati nuovi se li hai già nel database scaricato. Comunque prova la macro modificata con LibreOffice
Re: Copiare colonne excel in file calc
Inviato: sabato 13 aprile 2019, 12:26
da Gennaro
Ciao Patel, ti ringrazio per il tempo che mi dedichi. Mi rendo conto che non è chiaro il perchè del movimento di questo database anche perchè il file test fa parte di un file piu' complesso con 6 fogli e 24 macro le quali funzionano perfettamente se uso solo Excel. Brevemente si tratta di un registro LOG nel quale inserendo un nome nella colonna call in base al modo inseito nalla relativa colonna mi da un punteggio. Quindi l'aggiornamentoDb deve andare nel file principale onde poi poter fare la ricerca e dare il relativo punteggio. Penso che allegando il file base completo riesci a focalizzare il proplema. Ho usato la tua correzione ma non funziona poichè cancella tutto tutto senza incollare nulla. Non ho trovato il modo di inserire l'allegati in questa risposta vedo se riesco a modificarle quelli inviati in precedenza
Re: Copiare colonne excel in file calc
Inviato: sabato 13 aprile 2019, 12:45
da Gennaro
Scusa Patel niente da fare allegato file principale di 2,24mb arrivato a questo punto non so piu' cosa fare. sono sicuro che avendo il file principale e il relativao aggiornamento mi avresti risolto il problema. se c'è altro modo per comunicare avvisami comunque grazie infinite
Re: Copiare colonne excel in file calc
Inviato: sabato 13 aprile 2019, 17:21
da patel
Gennaro ha scritto: Ho usato la tua correzione ma non funziona poichè cancella tutto tutto senza incollare nulla.
l'hai usata su Libre ? su OpenOffice non funziona. Libre è molto più avanti riguardo alla compatibilità con excel
Re: Copiare colonne excel in file calc
Inviato: sabato 13 aprile 2019, 18:57
da Gennaro
si patel è stata usata su libre e su open sia portable sia su altro computer dove ho installato x entrambe le ultime versioni. Non c'è un modo per fati averei due file direttamente? sono sicuro che appena hai i file subito risolvi. Altrimenti dobbiamo aspettare a settembre quando sul sito interessato verranno messi i due file in excel che tutti possono scaricare e cosi saprai cosa intendevo fare. Logicamente il file principale sarà in excel per cui dovrai vedere come portarlo in ods. ti ringrazio per l'aiuto datomi anche se la soluzione non c'è stata ma non per causa tua. Auguri
Re: Copiare colonne excel in file calc
Inviato: sabato 13 aprile 2019, 20:09
da Gennaro
Ho scoperto che posso mandare file grandi attraverso
forum_open_office@libero.it
in questo momento ho mandato i file. Il file principale è ShipPatel.ods in base all'inserimento di call vado a trovare se c'è il nome nel database e se c'è in base alla colonna mode ottengo il punteggio. Fammi sapere se è tutto ok Grazie
ti ho rinviato nuovamente i file e in allegato gli screeshoot nei quali mi sembra tutto normale.
Re: Copiare colonne excel in file calc
Inviato: domenica 14 aprile 2019, 9:19
da patel
io non vedo i tuoi file, ho trovato vuota la posta in arrivo
prova con dropbox
email :
allegatiaoo@gmail.com
password: noncambiatela
però io insisto che la macro non serve, apri ambedue i file con Calc, clic destro sul tab del foglio contenente il data base, Sposta o Copia Foglio, copialo sull'altro file
Re: Copiare colonne excel in file calc
Inviato: lunedì 22 aprile 2019, 13:19
da Gennaro
scusate se riprendo l'argomento. la soluzione di Patel è perfetta e funziona manualmente ma a me occorre che l'operazione venga fatta autometicamente schiacciando un bottone. In questi giorni ho continuato a cercare e finalmente ho quasi trovato la soluzione in questa discussione:
viewtopic.php?f=9&t=5180
purtroppo ho cercato di adottare alle mie esigenze ma causa conoscenza di calc ZERO la macro funziona a metà infatti apre il fileB anche se appare un avviso prima(?) poi non si capisce se prende i dati per metterli in FileA comunque qualcosa fa perché mette nelle tre colonne le stesse righe di FileB ma tutte a zero!
qualcuno puo' aggiustarmi la macro? Grazie
Re: Copiare colonne excel in file calc
Inviato: lunedì 22 aprile 2019, 19:18
da patel
una volta aperto il file B cosa deve copiare la macro e dove ?
Re: Copiare colonne excel in file calc
Inviato: lunedì 22 aprile 2019, 22:10
da Gennaro
Ciao Patel grazie per la pronta risposta. allora deve copiare da B2 fino ultimo rigo D le tre colonne B,C,Dscritte. e li deve incollare nel fileA da B2.
nell'peratività completa deve funzionare in questo modo : all'avvio della macro cancello i dati nel FileA e vado a incollare i dati (aggiornati) del fileB
per chiudere la cosa precisissima è considerare il fileB come xlx o.xlsx e non .ods. Manualmente come mi hai fatto notare è semplicissima ma poichè dovrebbero usarla centinaia di persone che non sono pratiche allora mi serve la macro che sarà abbinata al tasto"aggiorna" e si ha tutto automaticamente. Con i due file excel la macro funziona perfettamente ma poichè non tutti usano excel mi serve per coloro che usano ods. grazie
Re: Copiare colonne excel in file calc
Inviato: martedì 23 aprile 2019, 8:50
da patel
Nel fileB le colonne B e C sono vuote
Re: Copiare colonne excel in file calc
Inviato: martedì 23 aprile 2019, 13:28
da Gennaro
scusa devo aver fatto qualche confusione ti ho allegato i nuovi file al messaggio precedente e messo delle note.
Re: Copiare colonne excel in file calc
Inviato: martedì 23 aprile 2019, 20:10
da patel
prova questa sub main
Codice: Seleziona tutto
Sub Main
dim percorsoEnomefileA,urlFileB,percorso as string
Dim DocB As Object
Dim vuoto as integer
Dim Dummy() 'It is an (empty) array of PropertyValues
DocA=ThisComponent
oSheetA=DocA.Sheets.getByName(fogliofileA)
percorsoEnomefileA=nomefile()
percorso=ricavapercorso(percorsoEnomefileA)
if left(percorso,1)="/" then
percorso=right(percorso,len(percorso)-1)
end if
urlFileB= percorso & nomefileB
fname = ConvertToURL(urlFileB)
DocB = StarDesktop.loadComponentFromURL (fname, "_blank",0, Dummy() )
' DocB= StarDesktop.loadComponentFromURL(urlFileB, "_hidden", vuoto, Dummy)
oSheetB=DocB.Sheets.getByName(fogliofileB)
oCol1B=oSheetB.Columns.getByName(col1B)
oRange1B = oCol1B.queryEmptyCells()
oRango=oRange1B.getbyIndex(oRange1B.count-1)
ultimarigaB=mid(oRango.AbsoluteName,instr(oRango.AbsoluteName,"$" & col1B)+3,instr(oRango.AbsoluteName,":")-instr(oRango.AbsoluteName,"$" & col1B)-3)
Range = oSheetB.getCellRangeByName("B2:D" &ultimarigaB).getDataArray
' nrighe = UBound(Range()) - LBound(Range())
dRange = oSheetA.getCellRangeByName("B2:D" &ultimarigaB)
dRange.setDataArray(Range)
DocB.close(True)
msgbox "Aggiornato"
End Sub
Re: Copiare colonne excel in file calc
Inviato: martedì 23 aprile 2019, 20:43
da Gennaro
perfetto!!!!Grazie. la macro funziona perfettamente ti ringrazio per questo. ho solo il problema che non sempre le righe del FileB sono di piu' del FileA per cui come nel caso inviato quando incollo le righe di File B rimangono anche le righe che sono di piu'. Non puoi inserirmi un cancella colonne B,C,D del FileA all'avvio della macro?. Lo so si puo' fare manualmente ma ripeto a me serve tutto in automatico in modo tale che nessuno tocca i due File. Ho rimandato il FileA
dove c'è l'aggiornamento ed ho evidenziato le ricghe che non servono e messo una nota. Grazie
Re: [Risolto] Copiare colonne excel in file calc
Inviato: martedì 23 aprile 2019, 21:41
da Gennaro
risolto!!! ho trovato il modo di cancellare tutto prima di caricare l'aggiornamento. ho messo risolto. ti ringrazio per il tempo speso per la risoluzione del mio problema. Grazie ancora
Re: [Risolto] Copiare colonne excel in file calc
Inviato: mercoledì 24 aprile 2019, 17:38
da patel
Come hai fatto per cancellare tutto ? sarebbe bene indicare sempre le soluzioni anche da parte di chi ha aperto la discussione.
Re: [Risolto] Copiare colonne excel in file calc
Inviato: mercoledì 24 aprile 2019, 20:37
da Gennaro
scusate. nel messaggio precedente ho messo i due file. il primo contiene tutte le macro mentre il secondo è xlsx che deve andare in FileA. da notare che devo ancora sistemare bene la macro avvisoDB perche premendo il tasto SI effettua l'operazione mentre il tasto NO dovrebbe uscire e non lo fa. Comunque la soòuzione di Patel è perfetta Grazie ancora