Supondré que las casillas de verificación están en la columna A, la Ruta la columna B y el archivo en la columna C
La primera fila será la segunda y que los Checkbox se llamen Checkbox1, Checkbox2, etc, donde
Checkbox1 corresponde a la fila 2
Checkbox2 corresponde a la fila 3
Etc.
Pues después de varias horas me ha resultado imposible hacer una macro que sirva para un número indeterminado de objetos, asi que habrá que hacer una que sirva para un número limitado 10 por ejemplo, si se quieren más ficheros se puede ampliar la macro a base de copiar pegar y modificar.
Hay otra solución solo que es más incomoda para ti, que sería cada vez que creas un checkbox asociarlo a una celda, eso se hace en la propiedad linkedcell en tiempo de diseño. Así si que se podría hacer para cualquier número de ficheros. La celda que se asociaria sería la de la columna A que está en la fila del chekbox.
Primero la macro sin que asocies las celdas pero limitada a 10 ficheros (o los que quieras añadir en el código con trabajo) es
Sub AbrirSeleccionados()
Dim chks As OLEObject
On Error GoTo NoSePudo
Application.ScreenUpdating = False
For Each chks In ActiveSheet.OLEObjects
If chks.Name = "CheckBox1" Then
If ActiveSheet.CheckBox1 Then Workbooks.Open (Cells(2, "B") & Cells(2, "C"))
ElseIf chks.Name = "CheckBox2" Then
If ActiveSheet.CheckBox2 Then Workbooks.Open (Cells(3, "B") & Cells(3, "C"))
ElseIf chks.Name = "CheckBox3" Then
If ActiveSheet.CheckBox3 Then Workbooks.Open (Cells(4, "B") & Cells(4, "C"))
ElseIf chks.Name = "CheckBox4" Then
If ActiveSheet.CheckBox4 Then Workbooks.Open (Cells(5, "B") & Cells(5, "C"))
ElseIf chks.Name = "CheckBox5" Then
If ActiveSheet.CheckBox5 Then Workbooks.Open (Cells(6, "B") & Cells(6, "C"))
ElseIf chks.Name = "CheckBox6" Then
If ActiveSheet.CheckBox6 Then Workbooks.Open (Cells(7, "B") & Cells(7, "C"))
ElseIf chks.Name = "CheckBox7" Then
If ActiveSheet.CheckBox7 Then Workbooks.Open (Cells(8, "B") & Cells(8, "C"))
ElseIf chks.Name = "CheckBox8" Then
If ActiveSheet.CheckBox8 Then Workbooks.Open (Cells(9, "B") & Cells(9, "C"))
ElseIf chks.Name = "CheckBox9" Then
If ActiveSheet.CheckBox9 Then Workbooks.Open (Cells(10, "B") & Cells(10, "C"))
ElseIf chks.Name = "CheckBox10" Then
If ActiveSheet.CheckBox10 Then Workbooks.Open (Cells(11, "B") & Cells(11, "C"))
End If
ThisWorkbook.Activate
Next
On Error GoTo 0
Application.ScreenUpdating = True
MsgBox ("Macro finalizada, mire a ver si abrieron los ficheros")
Exit Sub
NoSePudo:
MsgBox "Ha habido algún error, pulse para continuar"
Resume Next
End Sub
Te mando esto de momento, luego mandaré la macro que funciona si asocias los checkbos a celdas con la propiedad linkedcell en tiempo de diseño.