私はブラジルの工業会社のインターンで、私は多くのExcelを使用しています。私はちょうど数日前にVBAで遊び始めました。私はそれが私のためにできる多くのことを楽しんでいます!!VBA - 閉鎖されたブックからデータをコピーするのに最適な方法
私は強いプログラミングの背景を持っていないので、私は基本的にやって学んでいます。コードは正常に動作しており、開始から終了までに15秒以下かかります。私は時間を気にしないが、それが改善されればそれは素晴らしいだろう。
私の主な目標は、コードをシンプルかつ効率的に保つことです。私は数ヶ月後に会社を辞めてしまいますし、それを手に入れて使うのは簡単です。私が求めているのは、自分のコードを書くより良い方法です。他の人が理解しやすいようにしてください。可能であれば、時間がかからないようにしてください!
私のコードは、現在のワークブックで4枚のコンテンツを削除してから、残りの4枚の閉鎖ブックから更新データをコピーします。その後、すべてを閉じます。 :)データは毎日の生産についてのもので、その名前はポルトガル語であり、残念です。
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
私は十分にはっきりしていないと申し訳ありませんが、もちろん英語は母国語ではありません。私のコードや考え方に疑問があれば、自由に質問することができます。
お手数ですが、事前におねがいします。
[コードレビュー](http://codereview.stackexchange.com/) –
これは[codereview.se]について良い質問であってもよいし、 **(A)** _そのコードは働いています**、(B)** _itは仮説でもなく不完全でもありません。 [Code Review](http://codereview.stackexchange.com/)に行くことを選択した場合は、投稿する前に[トピックに関する](http://codereview.stackexchange.com/help/on-topic)をお読みください。質問/尋ねる)。ご質問やご不明な点がございましたら、[CRヘルプデスク](http://chat.stackexchange.com/rooms/34045)にご連絡ください。 – Phrancis
私はそれをします。混乱のために申し訳ありません! – mschlindwein