Sono uno stagista in una società industriale in Brasile e succede che sto usando molto bene. Ho appena iniziato a giocare con VBA qualche giorno fa e sono divertito da molte cose che può fare per me !!VBA: metodo migliore per copiare i dati da una cartella di lavoro chiusa
Non ho un forte background di programmazione, quindi sto imparando facendo fondamentalmente. Il codice funziona correttamente e richiede meno di 15 secondi dall'inizio alla fine. Non mi preoccupo del tempo, ma se potesse essere migliorato sarebbe fantastico.
Il mio obiettivo principale è mantenere il codice semplice ed efficiente. Lascerò l'azienda nei prossimi mesi e mi piacerebbe che fosse facile da mantenere e da usare. Quello che sto chiedendo è un modo migliore per scrivere il mio codice in modo che gli altri possano capire più facilmente e, se possibile (ovviamente lo è!) Impiegare meno tempo.
Il mio codice elimina 4 fogli di contenuto nella cartella di lavoro corrente, quindi copia i dati aggiornati da altri 4 cartelle di lavoro chiuse. Quindi chiudere tutto. :) I dati riguardano la produzione giornaliera ei loro nomi sono in portoghese, mi dispiace per quello.
Sub CopiarBase()
'
' Atalho do teclado: Ctrl+q
'
' Variables
Dim MyCurrentWB As Workbook
Dim BMalharia As Worksheet
Dim BBeneficiamento As Worksheet
Dim BEmbalagem As Worksheet
Dim BDikla As Worksheet
Set MyCurrentWB = ThisWorkbook
Set BMalharia = MyCurrentWB.Worksheets("B-Malharia")
Set BBeneficiamento = MyCurrentWB.Worksheets("B-Beneficiamento")
Set BEmbalagem = MyCurrentWB.Worksheets("B-Embalagem")
Set BDikla = MyCurrentWB.Worksheets("B-Dikla")
'Clean all the cells - Workbook 1
Dim Malharia_rng As Range
Set Malharia_rng = BMalharia.Range("A2:CN" & BMalharia.Cells(Rows.Count, 1).End(xlUp).Row)
Malharia_rng.ClearContents
Dim Ben_rng As Range
Set Ben_rng = BBeneficiamento.Range("A2:CY" & BBeneficiamento.Cells(Rows.Count, 1).End(xlUp).Row)
Ben_rng.ClearContents
Dim Emb_rng As Range
Set Emb_rng = BEmbalagem.Range("A2:CT" & BEmbalagem.Cells(Rows.Count, 1).End(xlUp).Row)
Emb_rng.ClearContents
Dim Dikla_rng As Range
Set Dikla_rng = BDikla.Range("A2:AV" & BDikla.Cells(Rows.Count, 1).End(xlUp).Row)
Dikla_rng.ClearContents
'Copy from Malharia Workbook
Workbooks.Open "C:\Users\marco.henrique\Desktop\Bases\Malharia Base.xls"
LastRowMB = Workbooks("Malharia Base.xls").Worksheets("Malharia Base").Cells(Rows.Count, 1).End(xlUp).Row
Dim Malha_base As Range
Set Malha_base = Workbooks("Malharia Base.xls").Worksheets("Malharia Base").Range("A2:CN" & LastRowMB)
MyCurrentWB.Worksheets("B-Malharia").Range("A2:CN" & LastRowMB).Value = Malha_base.Value
Workbooks("Malharia Base.xls").Close
'Copy from Beneficiamento Workbook
Workbooks.Open "C:\Users\marco.henrique\Desktop\Bases\Beneficiamento Base.xls"
LastRowBB = Workbooks("Beneficiamento Base.xls").Worksheets("Beneficiamento Base").Cells(Rows.Count, 1).End(xlUp).Row
Dim Ben_base As Range
Set Ben_base = Workbooks("Beneficiamento Base.xls").Worksheets("Beneficiamento Base").Range("A2:CY" & LastRowBB)
MyCurrentWB.Worksheets("B-Beneficiamento").Range("A2:CY" & LastRowBB).Value = Ben_base.Value
Workbooks("Beneficiamento Base.xls").Close
'Copy from Embalagem Workbook
Workbooks.Open "C:\Users\marco.henrique\Desktop\Bases\Embalagem Base.xls"
LastRowEB = Workbooks("Embalagem Base.xls").Worksheets("Embalagem Base").Cells(Rows.Count, 1).End(xlUp).Row
Dim Emb_base As Range
Set Emb_base = Workbooks("Embalagem Base.xls").Worksheets("Embalagem Base").Range("A2:CT" & LastRowEB)
MyCurrentWB.Worksheets("B-Embalagem").Range("A2:CT" & LastRowEB).Value = Emb_base.Value
Workbooks("Embalagem Base.xls").Close
'Copy from Dikla Workbook
Workbooks.Open "C:\Users\marco.henrique\Desktop\Bases\Diklatex Base.xls"
LastRowDB = Workbooks("Diklatex Base.xls").Worksheets("Diklatex Base").Cells(Rows.Count, 1).End(xlUp).Row
Dim Dikla_base As Range
Set Dikla_base = Workbooks("Diklatex Base.xls").Worksheets("Diklatex Base").Range("A2:AV" & LastRowDB)
MyCurrentWB.Worksheets("B-Dikla").Range("A2:AV" & LastRowDB).Value = Dikla_base.Value
Workbooks("Diklatex Base.xls").Close
End Sub
Mi dispiace se non ero abbastanza chiaro, ovviamente l'inglese non è la mia lingua madre. Qualsiasi dubbio sul mio codice o sull'intera idea è libero di porre domande.
Grazie in anticipo per qualsiasi aiuto ragazzi!
Sto votando per chiudere questa domanda come off-topic perché è esattamente adatto per [Code Review] (http://codereview.stackexchange.com/) –
Questa potrebbe essere una buona domanda per [codereview.se], fintanto che: ** (A) ** _ il codice funziona_, ** e (B) ** _ non è ipotetico o incompleto in alcun modo_. Per favore leggi la [guida in tema] (http://codereview.stackexchange.com/help/on-topic) prima di postare, se scegli di andare su [Code Review] (http://codereview.stackexchange.com/ domande/ask). Se hai domande o dubbi, unisciti a noi al nostro [Help Desk CR] (http://chat.stackexchange.com/rooms/34045). – Phrancis
Lo farò. Dispiace per la confusione! – mschlindwein