Hola, soy Andrea y este año he aprendido un poco de vba, he avanzado bastante sin embargo hoy me encuentro algo detenida por un error que me genera la macros que he hecho.. he indagado en varios sitios y no he encontrado solución al error, he implementado 2 formas y no he conseguido nada.
La macro se trata de reemplazar datos que están definidos en otra hoja y se reemplazan en un plantilla word, hasta ahí todo bien.. pero es necesario que sea lo mas automatizado posible por ende intento que se guarde en una carpeta especifica, y bueno se guardan pero al intentar abrir el archivo da error, se pega el notebook, todo deja de funcionar.. aveces me da el error 5174 ( Archivo no encontrado o borrado) cosa que no es así.. de verdad me es muy importante encontrar solución para guardar los archivos y luego poder abrirlos, ya que luego de crearlos se linkean con otros archivos word y hacen un archivo final. Pero no puedo terminar el producto final por así decirlo ya que al ejecutar desde excel se bloquean y dan errores.
Dim Titulo As String
Dim ruta As String
Dim nombre As String
ruta = ThisWorkbook.Path
'Ubicacion y nombre de la plantilla
'La ubicación está dada por la concatenación de los datos de dos celdas + la extensión del archivo de plantillas de Word.
wArch = Sheets("Rutas").Range("C5").Text
direc = Sheets("Rutas").Range("C3").Text
nombre = " OPP-" & Hoja1.Range(" C11 ") & " " & Hoja1.Range(" C7 ")
'Con la variable siguiente definimos que vamos a trabajar con un documento de Word.
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Creamos un documento nuevo con la plantilla
'Utilizamos For para recorrer todas las variables de 1 al dato de la celda C1.
For i = 1 To Hoja3.Range("C1").Value 'celda dónde está la cuenta
datos = Hoja3.Range("B" & i).Text 'dónde están los datos
reemp = Hoja3.Range("A" & i).Text 'dónde están las etiquetas
'utilizamos buscar y reemplazar de word
With objWord.Selection.Find
.Text = datos 'busca el texto de datos
.Replacement.Text = reemp 'reemplaza por el texto
.Execute Replace:=2 'la variable en dos es para reemplazar todos los valores
End With
Next i
objWord.Activate 'Activa el documento de word
ChangeFileOpenDirectory direc
'Donde se guardara el archivo word
Hola, soy Andrea y este año he aprendido un poco de vba, he avanzado bastante sin embargo hoy me encuentro algo detenida por un error que me genera la macros que he hecho.. he indagado en varios sitios y no he encontrado solución al error, he implementado 2 formas y no he conseguido nada.
La macro se trata de reemplazar datos que están definidos en otra hoja y se reemplazan en un plantilla word, hasta ahí todo bien.. pero es necesario que sea lo mas automatizado posible por ende intento que se guarde en una carpeta especifica, y bueno se guardan pero al intentar abrir el archivo da error, se pega el notebook, todo deja de funcionar.. aveces me da el error 5174 ( Archivo no encontrado o borrado) cosa que no es así.. de verdad me es muy importante encontrar solución para guardar los archivos y luego poder abrirlos, ya que luego de crearlos se linkean con otros archivos word y hacen un archivo final. Pero no puedo terminar el producto final por así decirlo ya que al ejecutar desde excel se bloquean y dan errores.
La macro que he usado es esta:
Sub AWord()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim Titulo As String
Dim ruta As String
Dim nombre As String
ruta = ThisWorkbook.Path
'Ubicacion y nombre de la plantilla
'La ubicación está dada por la concatenación de los datos de dos celdas + la extensión del archivo de plantillas de Word.
wArch = Sheets("Rutas").Range("C5").Text
direc = Sheets("Rutas").Range("C3").Text
nombre = " OPP-" & Hoja1.Range(" C11 ") & " " & Hoja1.Range(" C7 ")
'Con la variable siguiente definimos que vamos a trabajar con un documento de Word.
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Creamos un documento nuevo con la plantilla
objWord.Documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0
'Utilizamos For para recorrer todas las variables de 1 al dato de la celda C1.
For i = 1 To Hoja3.Range("C1").Value 'celda dónde está la cuenta
datos = Hoja3.Range("B" & i).Text 'dónde están los datos
reemp = Hoja3.Range("A" & i).Text 'dónde están las etiquetas
'utilizamos buscar y reemplazar de word
With objWord.Selection.Find
.Text = datos 'busca el texto de datos
.Replacement.Text = reemp 'reemplaza por el texto
.Execute Replace:=2 'la variable en dos es para reemplazar todos los valores
End With
Next i
objWord.Activate 'Activa el documento de word
ChangeFileOpenDirectory direc
'Donde se guardara el archivo word
ActiveDocument.SaveAs2 Filename:=nombre & ".docx", FileFormat:= _
wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, CompatibilityMode:=15
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub