Como abrir otro libro de EXCEL teniendo un Formulario abierto

Tengo un archivo que solos se maneja con formularios y para ello utilizo este código para ocultar todo el libro y solo me deje los formularios.

ThisWorkbook.Application.Visible = False
o
Application.Visible = False

Pero agregue un formulario con la posibilidad de elegir la descarga de reportes y me los pase a un libro nuevo, pero por lo mismo que tengo el formulario abierto no puedo interactuar con el archivo creado.

Ya trate de cambiar la propiedad ShowModal a "False" pero por lo mismo que esta oculto el libro con el código anterior no me abre el formulario cuando lo ejecuto. También trate de hacer un .EXE del archivo creando un acceso directo y colocando la ruta de "excel.exe" y colocando la ruta del archivo y de igual manera no me deja interactuar con el. ¿Alguna solucion por favor?

"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" /x "C:\Users\x\Desktop\Proyecto.xlsm"

1 Respuesta

Respuesta
1

Siempre debes de hacer referencia al nuevo libro, te anexo un ejemplo:

Private Sub CommandButton1_Click()
'copiar datos del libro1 a un libro nuevo
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets(1)
    'crea un nuevo libro
    Set l2 = Workbooks.Add
    Set h2 = l2.Sheets(1)
    ruta = l1.Path & "\"
    'pasa información del libro con la macro al libro nuevo
    h1.Range("A1:C3").Copy h2.Range("A1")
    l2.SaveAs ruta & "un nuevo libro.xlsx"
    l2.Close
End Sub
'
Private Sub UserForm_Activate()
    'el libro se oculta
    ThisWorkbook.Application.Visible = False
End Sub
'
Private Sub UserForm_Terminate()
    ThisWorkbook.Application.Visible = True
End Sub

Observa cómo copio la información del libro1 al libro2, nunca selecciono el libro, ni la hoja, ni el rango a copiar.

Sal u dos

Amigo, podrías apoyarme de favor a poderlo adaptar a mi código :( no lo logro hacer funcionar

Private Sub btn_Clientes_Datos_Click()
Dim Fila As Integer
Dim Fila2 As Integer
Dim final As Integer
Dim Final2 As Integer
Dim Registro As Integer
Dim Registro2 As Integer
Dim objExcel As Object
Dim SaldoTotal As Integer
Dim NombreArchivo As String
Dim ContarFilas As Double
Dim ContarFilasFilas2 As Double
Dim CodProd As String
Dim FiladelTotal As Integer
Dim ValorSaldo As Double
    Set objExcel = Workbooks.Add
    objExcel.Activate
    NombreArchivo = ActiveWorkbook.Name
'Entradas
    For Fila = 1 To 1000
        If Hoja3.Cells(Fila, 2) = "" Then
            final = Fila - 1
            Exit For
        End If
    Next
CodProd = "CLIENTE"
'Establecer datos del producto consultado
ContarFilas = 4
' Asignar el CodProd (código de producto) para el reporte
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(1, 1) = "DATOS GENERALES DE CLIENTES"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 1) = "FOLIO"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 2) = "NOMBRE CLIENTE"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 3) = "EMPRESA"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 4) = "PRECIO"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 5) = "DOMICILIO FISCAL"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 6) = "DIMICILIO ENTREGA"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 7) = "TEL CONT 1"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 8) = "TIPO"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 9) = "TEL CONT 2"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 10) = "TIPO2"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 11) = "TEL CONT 3"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 12) = "TIPO3"
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(4, 13) = "CORREO ELECTRONICO"
                'Application.Workbooks(NombreArchivo).Worksheets(1).Cells(3, 14) = Date
'Entradas
        For Registro = 1 To final
            If Hoja3.Cells(Registro, 25) = CodProd Then
                ContarFilas = ContarFilas + 1
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 1) = Hoja3.Cells(Registro, 2) 'FOLIO
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 2) = Hoja3.Cells(Registro, 3) 'NOMBRE
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 3) = Hoja3.Cells(Registro, 4) 'EMPRESA
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 4) = Hoja3.Cells(Registro, 6) 'PRECIO
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 5) = Hoja3.Cells(Registro, 8) 'DOMICILIO FISCAL
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 6) = Hoja3.Cells(Registro, 9) 'DOMICILIO ENTREGA
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 7) = Hoja3.Cells(Registro, 10) 'TEL CONT 1
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 8) = Hoja3.Cells(Registro, 11) 'TIPO
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 9) = Hoja3.Cells(Registro, 12) 'TEL CONT 2
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 10) = Hoja3.Cells(Registro, 13) 'TIPO
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 11) = Hoja3.Cells(Registro, 14) 'TEL CONT 3
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 12) = Hoja3.Cells(Registro, 15) 'TIPO
                Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 13) = Hoja3.Cells(Registro, 16) 'CORREO ELECTRONICO
            End If
        Next
Unload Me
objExcel.Activate
Call FormatoDatosCliente
End Sub

Gracias de antemano, un abrazo. 

¿Y qué error te envía? ¿O qué problema tienes?

En esta línea no estás haciendo referencia al libro

        If Hoja3.Cells(Fila, 2) = "" Then

Tienes que poner la referencia al libro, por ejemplo:

set l1 = thisworkbook
If l1.Hoja3.Cells(Fila, 2) = "" Then

En esta línea tampoco estás poniendo el libro

If Hoja3.Cells(Registro, 25) = CodProd Then

Ni en estas:

Application.Workbooks(NombreArchivo).Worksheets(1).Cells(ContarFilas, 1) = Hoja3.Cells(Registro, 2) 'FOLIO

Solamente ponas Hoja3 pero no estás indicando si es del libro origen o del libro destino

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas