¿Cómo acelerar macro para enviar datos a base de datos?
Tengo un pequeño programa donde ingreso datos y que estos estos datos se van llenando en 3 listbox (los datos se llenan fila por fila al mismo tiempo en los 3 listbox) y cuando se llenan los 3 listbox (14 filas máximo) ejecuto la macro para que los datos lo envíe a una base de datos (libro excel), pero esta macro se ejecuta lentamente y demora para enviar datos a la base de datos.
Lo que deseo es una macro, modificaciones o sugerencias de como puedo acelerar la macro para que esta macro envíe más rápido los datos a la base de datos. La macro:
Private Sub AgregarBD_Click()
fila = 2
Workbooks("BD_Ventas.xlsm").Worksheets("Ventas").Activate
Worksheets("Ventas").Unprotect "191174"
Do While Worksheets("Ventas").Cells(fila, 1) <> Empty
fila = fila + 1
Loop
fFinal = fila 'el resultado se almacena en la variable fFinal
'Agregamos todos los items del listbox a la hoja de calculo
For a = 0 To ListBox1.ListCount - 1 'recorremos todos los items desde el principio hasta el final
With Worksheets("Ventas")
.Cells(fFinal, 1).Value = Val(Label11)
.Cells(fFinal, 2).Value = DOC_REF
.Cells(fFinal, 3).Value = Val(TextBox7)
.Cells(fFinal, 4).Value = CDate(TextBox4)
.Cells(fFinal, 5).Value = Val(TextBox11)
.Cells(fFinal, 6).Value = ComboBox12
.Cells(fFinal, 7).Value = Val(Label102)
.Cells(fFinal, 31).Value = Val(Label81)
.Cells(fFinal, 32).Value = Val(Label82)
.Cells(fFinal, 8).Value = Val(ListBox1.List(a, 0))
.Cells(fFinal, 9).Value = Val(ListBox1.List(a, 1))
.Cells(fFinal, 10).Value = ListBox1.List(a, 2)
.Cells(fFinal, 11).Value = Val(ListBox1.List(a, 3))
.Cells(fFinal, 12).Value = ListBox1.List(a, 4)
'Continua 5 filas mas listbox1...
.Cells(fFinal, 18).Value = Val(ListBox2.List(a, 0))
.Cells(fFinal, 19).Value = Val(ListBox2.List(a, 1))
.Cells(fFinal, 20).Value = Val(ListBox2.List(a, 2))
.Cells(fFinal, 21).Value = Val(ListBox2.List(a, 3))
.Cells(fFinal, 22).Value = Val(ListBox2.List(a, 4))
'Continua 5 filas mas listbox2...
.Cells(fFinal, 28).Value = Val(ListBox3.List(a, 0))
.Cells(fFinal, 29).Value = Val(ListBox3.List(a, 1))
.Cells(fFinal, 30).Value = Val(ListBox3.List(a, 2))
End With
fFinal = fFinal + 1 'sumamos 1 para ir bajando de fila
Next
a = 0 'reinicializamos la variable
Worksheets("Ventas"). Protect "191174"
ActiveWorkbook. Save
End Sub
Esta macro no lo elabore yo, lo encontre en la internet y lo adapte a mis necesidades.