Hola,
Soy nuevo en VBA, y tengo que modificar dos campos en algunos cientos de .doc's, por lo que se me ocurrió hacer una macro desde un doc que modifique a todos los demás.... solo que no doy con la solución.
Los campos son un "label", sería modificarle el "caption" y ponerle la contraseña de formulario a cada archivo; ambas tareas las puedo hacer en un doc para el mismo doc, pero no logro hacerlo desde un doc para otros.
Las rutas las planeo tomar desde un txt, eso también lo he podido hacer por separado para que tome valores para modificar variables (label's) locales, me imagino que puedo poner rutas y pasarlas como string para que hagan las veces de nombre de archivo con todo y ruta.
Este es el código para proteger/desproteger de forma local un doc:
Sub LockUnlockFormToggle()
Dim Doc As Document
Set Doc = ActiveDocument
If Doc.ProtectionType <> wdNoProtection Then
Doc.Unprotect
ElseIf Doc.ProtectionType = wdNoProtection Then
Doc.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="pass"
End If
End Sub
Este toma valores de un txt y los asigna a etiquetas locales - poco práctico pero funciona
:
Sub LeeTxt()
Dim sFileName As String
Dim iFileNum As Integer
Dim sBuf As String
Dim Fields As String
Dim TempStr As String
Dim i As Integer
sFileName = "C:\Documents and Settings\Jery\Escritorio\lineas.txt"
'Verifica si existe el archivo
If Len(Dir$(sFileName)) = 0 Then
MsgBox ("Cannot find lineas.txt")
End If
iFileNum = FreeFile()
Open sFileName For Input As iFileNum
i = 1
Do While Not EOF(iFileNum)
Line Input #iFileNum, Fields
Select Case i
Case 1
Label1.Caption = Fields
Case 2
Label2.Caption = Fields
Case 3
Label3.Caption = Fields
Case 4
Label4.Caption = Fields
Case 5
Label5.Caption = Fields
Case 6
Label6.Caption = Fields
End Select
i = i + 1
Loop
End Sub
También he logrado abrir un doc externo, pero no paso de ahí
:
Sub ModificaOtroWord()
'~~~~~~~~~~~~~~~~~~~~~~
' VARIABLES
'~~~~~~~~~~~~~~~~~~~~~~
Dim gNomFile As String
Dim wdApp As Object
'~~~~~~~~~~~~~~~~~~~~~~
' CODE
'~~~~~~~~~~~~~~~~~~~~~~
'Inputs doc file
gNomFile = "[Drive]:\[Ruta]\[archivo].doc"
'set wdApp reference
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set wdApp = CreateObject("Word.Application")
End If
On Error GoTo 0
'Set DOC file with option buttons to open
Set wd = wdApp.Documents.Open(gNomFile)
'wdApp.Visible = False
wdApp.Visible = True
MsgBox (wdApp.OLEFormat.Object.Label1.Caption)
MsgBox ("PaUSe")
0:
End Sub
Gracias de antemano por la ayuda,