Hola.
He tenido que añadir más columnas y me vuelve a salir el error "La referencia no es válida"
Las macros las tengo así, simplemente traslado tu código a la nueva disposición de las columnas pero está claro que algo me dejo y no sé que es.
en la hoja de nombre PEDIDOS tengo este código
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dam
On Error Resume Next
If Not Intersect(Target, Range("O:O")) Is Nothing Then 'XXX Range("O:O") Columna Para
For Each t In Target
If t.Value <> "" Then
Cells(t.Row, "R").Select 'XXX "R" Columna Insertar archivo
ActiveSheet.Hyperlinks.Add _
Anchor:=Selection, _
Address:="", _
SubAddress:="PEDDOS!C" & t.Row, _
TextToDisplay:="Insertar archivo" 'XXX "PEDIDOS!C" Es el nombre de la hoja y la columna N es la columna Copia Para
End If
Next
Cells(Target.Row, 3).Select
End If
End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'Por.Dam
linea = ActiveCell.Row
col = Range("S1").Column 'XXX Columna S1 es la columna del Archivo 1 adjunto
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Seleccione uno o varios archivos"
.Filters.Clear
.Filters.Add "archivos pdf", "*.pdf*"
.Filters.Add "archivos de excel", "*.xlsx*"
.Filters.Add "archivos de macros de excel", "*.xlsm*"
.Filters.Add "Todos los archivos", "*.*"
.FilterIndex = 2
.AllowMultiSelect = True
.InitialFileName = ThisWorkbook.Path
If .Show Then
For Each ar In .SelectedItems
'rutaarchivo = .SelectedItems.Item(i)
Cells(linea, col) = ar
col = col + 1
Next
End If
End With
End Sub
Y en el módulo 1 tengo este código
'***Macro Para enviar correos
Sub correo()
'Por.Dante Amor
Dim NumMail As Integer
NumMail = 0
col = Range("S1").Column 'XXX Columna S es la columna del Archivo 1 adjunto
For i = 2 To Range("O" & Rows.Count).End(xlUp).Row 'XXX Columna O es columna Para
If Range("J" & i).Value = 1 Then 'XXX Si en la columna I tenemos el valor 1 manda el mail, si no, No lo envía
NumMail = NumMail + 1
Set dam = CreateObject("outlook.application").createitem(0)
dam.To = Range("O" & i) 'XXX Destinatarios Columna Para
dam.CC = Range("P" & i) 'XXX Con copia
dam.Bcc = Range("Q" & i) 'XXX Con copia oculta
dam.Subject = Range("G" & i) 'XXX "Asunto"
dam.body = Range("H" & i) 'XXX "Cuerpo del mensaje"
For j = col To Cells(i, Columns.Count).End(xlToLeft).Column
archivo = Cells(i, j)
If archivo <> "" Then dam.Attachments.Add archivo
Next
dam.send 'El correo se envía en automático y no se muestra
'dam.display 'El correo se muestra para repasar y ser enviado
Range("J" & i).Value = "Enviado" 'XXX En la columna I ponemos Enviado en la fila que hemos enviado el mail
End If
Next
MsgBox "" & NumMail & " Mail Enviados", vbInformation, "Mail Enviado OK"
End Sub
Todo funciona perfectamente incluso después de mostrarme el error "la referencia no es válida" pero ya que está todo tan bien conseguido me molesta que salga. Gracias por la atención.