Brezilya'da bir endüstriyel şirkette stajyerim ve mükemmel bir şekilde kullanıyorum. Birkaç gün önce VBA ile oynamaya başladım ve benim için yapabileceği pek çok şeyden hoşlanıyorum!VBA - Kapalı bir çalışma kitabından veri kopyalamak için en iyi yöntem
Ben güçlü bir programlama arka plan yok, bu yüzden temelde yaparak öğreniyorum. Kod düzgün çalışıyor ve baştan sona 15 saniyeden daha kısa sürüyor. Zamanla uğraşmam ama eğer geliştirilebilirse harika olur.
Benim ana hedefi basit ve etkili bir kod tutmaktır. Önümüzdeki aylarda şirketten ayrılacağım ve bunu yönetmenin ve kullanmanın kolay olmasını istiyorum. Senden istediğim, diğerlerinin daha kolay anlayabilmesi için kodumu yazmanın daha iyi bir yolu ve eğer mümkünse (tabii ki!) Daha az zaman harcamam.
Kodum, geçerli çalışma kitabımdaki 4 sayfa içeriğini silip güncelleştirilmiş verileri diğer 4 kapalı çalışma kitabından kopyalayın. O zaman her şeyi kapat. :) Veriler günlük üretim ile ilgili ve isimleri portekizce, bunun için üzgünüm. Yeterince açık değildi benim anadilim değil ingilizce ders
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
Üzgünüm. Benim kodum ya da tüm fikir hakkında herhangi bir şüphe soru sormaya çekinmeyin. herhangi bir yardım çocuklar için şimdiden
teşekkürler!
[Code Review] (http://codereview.stackexchange.com/) –
için tam olarak uygun olduğu için bu sorunun konu dışı olarak kapatılmasına oy veriyorum [codereview.se] için bu iyi bir soru olabilir, olduğu sürece: ** (A) ** _ kod çalışır_, ** ve (B) ** _ herhangi bir şekilde hipotetik veya eksik değildir. [Code Review] 'a (http://codereview.stackexchange.com/) gitmeyi seçerseniz, lütfen yayınlamadan önce [on-topic guide]' ı (http://codereview.stackexchange.com/help/on-topic) okuyun. soruları /) sorun. Herhangi bir sorunuz veya endişeniz varsa, [CR Yardım Masası] 'ndan bize katılın (http://chat.stackexchange.com/rooms/34045). – Phrancis
Bunu yapacağım. Dağınıklık için üzgünüm! – mschlindwein