Macros excel: exportar un formulario

Tengo el siguiente error:

Carpeta = "C:\Users\PAOLA\Documents\Horas Hunter" 'Directorio donde grabar el archivo
CarpTemp = "C:\Users\PAOLA\Documents\Horas Hunter\temporal" 'carpeta temporaria donde grabar el modulo a exportar
IniArch = "Año " 'texto inicial del archivo nuevo
ElModulo = "Módulo1"
EModulo = "Módulo3"
Elfomrulario = "UserForm1"
Dim Allevar() As String
Carpeta = Carpeta & IIf(Right(Carpeta, 1) = "\", "", "\")
CarpTemp = CarpTemp & IIf(Right(CarpTemp, 1) = "\", "", "\")
TempMod = CarpTemp & ElModulo & ".bas"
TemMod = CarpTemp & EModulo & ".bas"
TempForm = CarpTemp & Elformulario & ".frm"
ActiveWorkbook. VBProject. VBComponents(Elformulario). Export TempForm (error 9 subindice fuera de alcance)

ActiveWorkbook.VBProject.VBComponents(ElModulo).Export TempMod

ActiveWorkbook.VBProject.VBComponents(EModulo).Export TemMod
ElAño = Range("ai2") - 1
'ElAño = Year(Date)
For Each LaHoja In Sheets
If InStr(1, LaHoja.Name, ElAño) > 0 Then
ReDim Preserve Allevar(Elemento)
Allevar(Elemento) = LaHoja.Name
Elemento = Elemento + 1
End If
Next
'generación de archivo AÑO anterior + agrega módulo con macros
If Elemento > 0 Then
Sheets(Allevar()). Move
ActiveWorkbook.VBProject.VBComponents.Import TempForm
ActiveWorkbook.VBProject.VBComponents.Import TempMod
ActiveWorkbook.VBProject.VBComponents.Import TemMod
ActiveWorkbook.SaveAs Carpeta & IniArch & ElAño & ".xlsm", xlOpenXMLWorkbookMacroEnabled
ActiveWorkbook.Close xlNo
ElMensaje = "Se gravó el archivo (y sus rutinas de VBA): " & IniArch & ElAño & Chr(10) & "en la carpeta: " & Carpeta
ElTitulo = " AÑO " & ElAño & " EXPORTADO"
TipoMens = vbInformation
MsgBox ElMensaje, TipoMens, ElTitulo
End If
Kill TempMod
Kill TemMod
Kill TempForm
End If

Lo que hace esta parte del código es exportar todo lo de esta hoja activa, guardarla en un archivo con sus módulos respectivos y crea una hoja nueva en blanco con el año nuevo o sea una planilla nueva del año siguiente.

El error que me tira es que no exporta o no puede exportar el formulario a la hoja guardada. Si el código de donde se exporta el formulario, se lo quito, la hoja funciona perfecta y me guarda toda la hoja con sus módulos pero no con el formulario incluido.

Necesito que ademas de los módulos me guarde el formulario también para que pueda ser utilizado en la hoja que se guarda.

Respuesta
1

¿Has activado la configuración para confiar el acceso al modelo de objetos de proyectos de VBA?

Archivo, Opciones, Centro de confianza, Configuración de macro, Confiar en el acceso...

Hola Jaime. Esa opción está habiltada

ActiveWorkbook se refiere al documento actualmente activo... con lo que veo de código no puedo estar seguro de que sea efectivamente el archivo en donde esta tu macro o sea el de destino... verifica eso... o cámbialo por ThisWorkbook que si es indefectiblemente el archivo en el que esta el código

Ese código es del documento activo. Funciona perfecto pero al agregarle las líneas de comando para exportar el formulario, o sea que me guarde el libro con el formulario incluido no lo hace. En cambio si lo hace con los módulos.

Cambie el código active por el this y me sigue tirando error

Encontré el error. Donde dice

Elfomrulario = "UserForm1"

tiene que decir

Elformulario = "UserForm1"

por eso

ActiveWorkbook. VBProject. VBComponents(Elformulario). Export TempForm (error 9 subindice fuera de alcance) 

Porque buscaba elformulario y no elfmrulario. Estaba mal escrito...

Gracias tema solcionado

Eso es lo que todos debimos revisar en primer lugar... jajajaja...

1 respuesta más de otro experto

Respuesta
1

Veamos un error 9 significa que el objeto (en este caso formulario) no existe y esto se puede deber a un sin de razones una de ellas que efectivamente el objeto a exportar no exista y antes de checar configuraciones o cualquier otra cosa yo te recomendaría checar el nombre de la variable que ocasiona el error como yo lo hice y encontré que la siguiente línea esta mal escrita y eso te genera el error corregí es línea

Elfomrulario = "UserForm1"

Y la macro siguió su funcionamiento, por cierto gracias por compartir la macro me dio algunas ideas para algo que estoy haciendo, solo corrige esa línea y ve que pasa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas