Hoy vengo a solicitar su ayuda con sobre como habilitar una opción de Excel mediante código. Les explico mejor:
Tengo terminado un formulario para procesar archivos .XLS generados por SAP. Lo que hago es crear un MACRO desde Visual, añadirla a Excel y ejecutarla, hasta ahí todo bien. El tema es que necesito habilitar una opción de Excel para evitar que me de el siguiente error:
Y la opción que necesito habilitar mediante código es la siguiente:
Estoy haciendo el programa para la empresa en la que trabajo y solo me falta eso, ya que la idea es que los usuarios no tengan que ir a opciones "extrañas" ya que no todos tienen la misma versión de Office como para explicar en el programa como llegar a esa opción y habilitarla.
Dejo el código que uso para Generar y Ejecutar el macro.
Código
Dim ExcelApp As New Excel.Application Dim HojaExcel As Excel.Worksheet Dim LibroExcel As Excel.Workbook Dim ModuloExcel As Object Dim CodigoMacro As String Dim Linea As String, Total As String Dim EstrucComercial As String Dim InvFilePath As String Private Sub Command1_Click() If InvFilePath = "" Then respuesta = MsgBox("Debe seleccionar un archivo a procesar.", vbExclamation, "Cuidado!.") Exit Sub Else Command1.Caption = "Procesando..." Command1.Enabled = False BBuscarXls.Enabled = False PB1.Value = 0 PBLabel.Caption = "Buscando Archivo..." PB1.Value = PB1.Value + 1 EstrucComercial = App.Path & "\DataAndStuff\EstructuraComercial3.0.xlsx" PBLabel.Caption = "Abriendo Archivos..." PB1.Value = PB1.Value + 1 Set LibroEC = ExcelApp.Workbooks.Open(EstrucComercial) Set LibroExcel = ExcelApp.Workbooks.Open(InvFilePath) PBLabel.Caption = "Buscando Datos..." PB1.Value = PB1.Value + 1 Set HojaExcel = LibroExcel.Sheets.Item(1) PBLabel.Caption = "Configurando Consulta..." PB1.Value = PB1.Value + 1 Set ModuloExcel = LibroExcel.VBProject.VBComponents.Add(vbext_ct_StdModule) ' Aca es donde daria problemas en la ventana de programador y en el exe compilado. 'ExcelApp.Visible = True PBLabel.Caption = "Ejecutando Consulta..." PB1.Value = PB1.Value + 1 CodigoMacro = _ "Sub OrdenPlanillaInventario()" & vbCr & _ Total & vbCr & _ "End Sub" PBLabel.Caption = "Ordenando Datos..." PB1.Value = PB1.Value + 1 ModuloExcel.CodeModule.AddFromString CodigoMacro ExcelApp.Run ("OrdenPlanillaInventario") PBLabel.Caption = "Guardando Archivo..." PB1.Value = PB1.Value + 1 ExcelApp.DisplayAlerts = False LibroExcel.SaveAs InvFilePath, FileFormat:=xlNormal LibroExcel.Close SaveChanges:=False PBLabel.Caption = "Listo!." PB1.Value = PB1.Value + 1 ExcelApp.Quit Command1.Caption = "Listo!." Command1.Enabled = False BBuscarXls.Enabled = False End If End Sub
Saludos y gracias de ante mano !