El libro esta organizado de la siguiente forma:
Private Sub Workbook_Open()
Call Grabar_X2
Call Copiar_adjuntos
Ahoja = "INDICE"
Sheets(Ahoja).Select
PoneHyp
End Sub
Modulo 1:
'Copiar informacion de Reporte a Bitacora
Sub Copiar_adjuntos()
Application.ScreenUpdating = False
Set l1 = ThisWorkbook
Ruta = "C:\Users\z003bpca\Desktop\Bitacora\"
arch = "copy_Reporte.xls"
If Dir(Ruta & arch) = "" Then
MsgBox "El archivo Reporte no existe en la ruta", vbCritical
Exit Sub
End If
'
Set l2 = Workbooks.Open(Ruta & arch)
Set h2 = l2.Sheets("Sheet0")
Num = h2.Range("D5").Text
If Num = "" Then
MsgBox "La celda D5 no contiene datos", vbExclamation
l2.Close False
Exit Sub
End If
If IsNumeric(Num) Then
Num = "" & Val(Num)
End If
'
existe = False
For Each h In l1.Sheets
If h.Name = Num Then
existe = True
Set h1 = h
Exit For
End If
Next
'
If existe = False Then
l1.Sheets.Add after:=l1.Sheets(l1.Sheets.Count)
Set h1 = l1.ActiveSheet
'copia de columna A de Hoja Datos
Sheets("Datos").Visible = True
Sheets("Datos").Columns("A").Copy h1.Columns("A")
Sheets("Datos").Visible = False
h1.Name = Num
End If
'
uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column + 1
If uc < Columns("B").Column Then uc = Columns("B").Column
h2.Range("O42:O99").Copy h1.Cells(1, uc)
'ajusta columnas de B en adelante a 40
h1.Columns.ColumnWidth = 40
h1.Columns("A:A").EntireColumn.AutoFit
l2.Close False
Application.ScreenUpdating = True
'MsgBox "Copia realizada", vbInformation
End Sub
Modulo 2:
Sub PoneHyp()
IniList = "E5" ' celda inicial donde están los nombres de las hojas a vincular
CeldaIr = "B2" ' celda donde lleva cada hipervínculo
For fila = 0 To Range(IniList).CurrentRegion.Rows.Count - 1
vinc = Range(IniList).Offset(fila).Value
On Error Resume Next
Set SheetEx = ActiveWorkbook.Sheets(CStr(vinc))
If Err = 0 Then
vinc = "'" & vinc & "'!" & CeldaIr
ActiveSheet.Hyperlinks.Add Anchor:=Range(IniList).Offset(fila), Address:="", SubAddress:=vinc
End If
Err.Clear
On Error GoTo 0
Set SheetEx = Nothing
Next
ActiveWorkbook.Save
End Sub
Modulo 3:
Sub Grabar_X2()
DirCopia = "C:\Users\z003bpca\Desktop\Bitacora\Nueva\" 'carpeta donde grabar la copia sin macros y de solo lectura.
'control de existencia de carpeta
On Error Resume Next
ChDir DirCopia
If Err = 76 Then
QueHago = MsgBox("la carpeta " & DirCopia & " NO existe." & Chr(10) & "¿La creo?", vbOKCancel, "NO ESTA ¿QUE HAGO?")
If QueHago = 1 Then
MkDir DirCopia
Else
Exit Sub
End If
End If
Err.Clear
On Error GoTo 0
DirCopia = DirCopia & IIf(Right(DirCopia, 1) = "\", "", "\")
NomArch = ActiveWorkbook.Name
Carpeta = ActiveWorkbook.Path
NomArchi = Left(NomArch, InStr(1, NomArch, ".") - 1) & "_Bck"
Application.ScreenUpdating = False
ActiveWorkbook.Save
Application.Wait (Now + TimeValue("00:00:03"))
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs DirCopia & NomArchi & ".xlsx", xlOpenXMLWorkbook, , xlYes
Workbooks.Open Carpeta & "\" & NomArch
Application.ScreenUpdating = True
Application.ScreenUpdating = False
Windows(NomArchi & ".xlsx").Activate
ElMensaje = "Este archivo y la copia de seguridad " & Chr(10) & NomArchi & ".xlsx" & " en " & DirCopia & Chr(10) & "acaban de grabarse."
TipoMens = vbInformation
ElTitulo = "ARCHIVOS GRABADOS"
MsgBox ElMensaje, TipoMens, ElTitulo
Application.ScreenUpdating = True
Application.DisplayAlerts = True
ActiveWorkbook.Close
End Sub