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