Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: FranciskoAsdf en 13 Junio 2014, 01:49 am



Título: [VB6][Excel] Habilitar Opción mediante código.
Publicado por: FranciskoAsdf en 13 Junio 2014, 01:49 am
Hola a todos, saludos de nuevo! :D

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:

(http://i60.tinypic.com/dq645d.jpg)

Y la opción que necesito habilitar mediante código es la siguiente:

(http://i59.tinypic.com/35be5vc.jpg)

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
  1. Dim ExcelApp As New Excel.Application
  2. Dim HojaExcel As Excel.Worksheet
  3. Dim LibroExcel As Excel.Workbook
  4. Dim ModuloExcel As Object
  5. Dim CodigoMacro As String
  6. Dim Linea As String, Total As String
  7. Dim EstrucComercial As String
  8. Dim InvFilePath As String
  9.  
  10. Private Sub Command1_Click()
  11. If InvFilePath = "" Then
  12.    respuesta = MsgBox("Debe seleccionar un archivo a procesar.", vbExclamation, "Cuidado!.")
  13.    Exit Sub
  14.    Else
  15. Command1.Caption = "Procesando..."
  16. Command1.Enabled = False
  17. BBuscarXls.Enabled = False
  18.  
  19. PB1.Value = 0
  20. PBLabel.Caption = "Buscando Archivo..."
  21. PB1.Value = PB1.Value + 1
  22.  
  23. EstrucComercial = App.Path & "\DataAndStuff\EstructuraComercial3.0.xlsx"
  24. PBLabel.Caption = "Abriendo Archivos..."
  25. PB1.Value = PB1.Value + 1
  26.  
  27. Set LibroEC = ExcelApp.Workbooks.Open(EstrucComercial)
  28. Set LibroExcel = ExcelApp.Workbooks.Open(InvFilePath)
  29.  
  30. PBLabel.Caption = "Buscando Datos..."
  31. PB1.Value = PB1.Value + 1
  32.  
  33. Set HojaExcel = LibroExcel.Sheets.Item(1)
  34.  
  35. PBLabel.Caption = "Configurando Consulta..."
  36. PB1.Value = PB1.Value + 1
  37.  
  38. Set ModuloExcel = LibroExcel.VBProject.VBComponents.Add(vbext_ct_StdModule) ' Aca es donde daria problemas en la ventana de programador y en el exe compilado.
  39. 'ExcelApp.Visible = True
  40.  
  41. PBLabel.Caption = "Ejecutando Consulta..."
  42. PB1.Value = PB1.Value + 1
  43.  
  44. CodigoMacro = _
  45.    "Sub OrdenPlanillaInventario()" & vbCr & _
  46.    Total & vbCr & _
  47.    "End Sub"
  48.   PBLabel.Caption = "Ordenando Datos..."
  49.   PB1.Value = PB1.Value + 1
  50.  
  51. ModuloExcel.CodeModule.AddFromString CodigoMacro
  52. ExcelApp.Run ("OrdenPlanillaInventario")
  53.  
  54. PBLabel.Caption = "Guardando Archivo..."
  55. PB1.Value = PB1.Value + 1
  56.  
  57. ExcelApp.DisplayAlerts = False
  58. LibroExcel.SaveAs InvFilePath, FileFormat:=xlNormal
  59. LibroExcel.Close SaveChanges:=False
  60.  
  61. PBLabel.Caption = "Listo!."
  62. PB1.Value = PB1.Value + 1
  63.  
  64. ExcelApp.Quit
  65. Command1.Caption = "Listo!."
  66. Command1.Enabled = False
  67. BBuscarXls.Enabled = False
  68.  
  69. End If
  70. End Sub
  71.  


Saludos y gracias de ante mano :D!


Título: Re: [VB6][Excel] Habilitar Opción mediante código.
Publicado por: MCKSys Argentina en 13 Junio 2014, 06:41 am
Hola!

Revisa este (http://stackoverflow.com/questions/5300770/how-to-check-from-net-code-whether-trust-access-to-the-vba-project-object-mode) link. Ten en cuenta que la clave cambiará según la versión de office instalada.

Saludos!


Título: Re: [VB6][Excel] Habilitar Opción mediante código.
Publicado por: FranciskoAsdf en 13 Junio 2014, 16:27 pm
muchas gracias por el dato!  ahora a ver como identificar la versión de office y como modificar el registro xD!,  pero muchas gracias por el link!.