Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - drawk1

Páginas: [1]
1
Muy buenas!

Al final la app lanza todo como quería, así que mil gracias!
Lo que estaba tratando de pulir, es que al código que adjunto a continuación, en vez de seleccionar una ruta en concreto donde quiero que al ejecutar el botón click 1, no tenga que tener en una ruta en concreto y el Excel que quiero modificar con la Macro programada, sino que me pregunte que Excel quiero abrir ejecutando dicha Macro, el código es el siguiente:

Código: [Seleccionar]
Private Sub Command2_Click()
Dim ret As Boolean
         
    ret = Ejecutar("c:\ESTADOS\BBDD VF-ONO MICROPYMES.xlsm", "Eliminar")
     
    If ret Then
       MsgBox "Estados Terminados", vbInformation 'OK
    End If
End Sub

 
Function Ejecutar(Libro As String, _
                  Macro As String) As Boolean
 
 
On Error GoTo Error_function
 
Dim Excel As Object
    Set Excel = CreateObject("Excel.Application")
    Excel.Visible = False
    With Excel
        .Application.workbooks.open Libro
        .Run (Macro)
    End With
 
        Set Excel = Nothing
    Ejecutar = True
 
Exit Function
 
Error_function:

If Not Excel Is Nothing Then Set Excel = Nothing

If Err Then
   MsgBox Err.Description, vbCritical
End If
End Function

¿Sabríais decirme como cambiar la parte del código donde en vez de tener que escribir una ruta en concreto donde esté el Excel, que pueda elegir que Excel quiero elegir para que se ejecute la Macro Eliminar?

Está en lenguaje VB!

Muchas gracias,

Un saludo cordial.

2
Buenas!

Vale, ahora lo entiendo mejor... Muchas gracias!

Entonces debería poder aplicar en el código que me pregunte qué archivo Excel quiero abrir y que me ejecute la Macro que tenga en el Excel "X", no?

He estado investigando y no encuentro la manera de decir en Visual Studio 2017 que seguidamente de hacer esto:

Código: [Seleccionar]
Dim fd As OpenFileDialog = New OpenFileDialog()
Dim strFileName As String

fd.Title = "Open File Dialog"
fd.InitialDirectory = "C:\"
fd.Filter = "All files (*.*)|*.*|All files (*.*)|*.*"
fd.FilterIndex = 2
fd.RestoreDirectory = True

If fd.ShowDialog() = DialogResult.OK Then
   strFileName = fd.FileName
End If

me ejecute el siguiente código (este código lo tengo un archivo *.bat que hace que me ejecute la macro "test") pero está escrito en VBasic, cuándo lo pongo en Visual Studio seguidamente del código anterior no me ejecuta bien la macro:

Código: [Seleccionar]
Dim xlApp
Dim xlBook

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Users\HP25\Desktop\BBDD_copia_alex_copia.xlsm", 0, True)
[b]xlApp.Run "test"
xlBook.Close
xlApp.Quit[/b]

Set xlBook = Nothing
Set xlApp = Nothing

Sabrías como decirle que al ejecutar el primer código y me abra el Excel, que me ejecute la macro "test" y se cerrase el archivo sin tener el *.bat por el medio?
Entiendo que de lanzar así código en Visual Studio, debería poder decirle que cuando decida que Excel abrir, me ejecute "X" macro dentro del Excel y cierre, no?
El problema que no se como decirle en código que al hacer lo que te he mostrado en el primero código, una vez elija que Excel haya abierto me ejecute la macro "test" o no encuentro el recurso para ello!
¿Sabrías como decirle en código que haga algo así?

Muchas gracias! :)

Muchas gracias! :)

3
Buenos días!!

Genial! El código que me pasaste con VBasic me funciona casi a la perfección!
El problema es que cuando me sale el cuadro de dialogo donde tengo que seleccionar el archivo, cuando le hago doble click o bien le doy a Abrir, no me abre el documento... le he añadido el complemento de OpenFileDialog y sigue sin funcionar, no me abre el documento Excel...

Alguna idea de que puede estar mal o que puedo estar haciendo mal?

Muchas gracias! :)

4
Buenas!!

Al final, he creado un archivo *.bat que me permite abrir el Excel y lanzar la macro creada en el programa y ejecutar todo lo escrito, así que genial! Mil mil gracias!

Para terminar de pedirte ayuda, sabrías como podría determinar en este archivo *.bat que documento de Excel abrir, en vez de abrir uno en concreto?

He estado investigando y según algunos foros por la instrucción GetOpenFileName se debería poder, pero no consigo ejecutarlo de tal manera que cuando se abra el archivo*.bat me pregunte que archivo quiero abrir en vez de abrir uno en concreto, de hecho, te pego el código que tengo en el *.bat para que veas la referencia de la macro y del archivo en concreto que abro...

Código: [Seleccionar]

Dim xlApp
Dim xlBook

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Users\HP25\Desktop\BBDD_ORANGE_copia_alex_copia.xlsm", 0, True)
xlApp.Run "test"
xlBook.Close
xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing


He probado con dejar solo el "xlApp.Workbooks.Open" sin la ruta especificada, pero no me abre la ventana preguntando que archivo quiero elegir para abrir y lanzar la macro...

Mil gracias de antemano!!! :)

5
Buenas!

He lanzado este código dentro de un modulo de Excel para ejecutar lo que necesitaba:

Código: [Seleccionar]

Sub test()

Set thiswb = ThisWorkbook


Sheets.Add
ActiveSheet.Name = "lista"

Sheets("BBDD").Select
Columns("P").Copy
Sheets("lista").Select
Range("A1").PasteSpecial xlPasteAll
Range("A:A").RemoveDuplicates Columns:=1, Header:=xlYes


For i = 2 To 124

    Set newwb = Workbooks.Add
    thiswb.Activate
   
    Sheets("lista").Select
    COMERCIAL = Range("A" & i).Value
   
    Sheets("BBDD").Select
    Rows(1).Select
    Selection.AutoFilter Field:=16, Criteria1:=COMERCIAL

    Range("A1:AI" & Range("A" & Rows.Count).End(xlUp).Row).Copy

    newwb.Activate
    Range("A1").PasteSpecial
    Sheets("Hoja1").Name = "BBDD"

    ActiveWorkbook.SaveAs Filename:="C:\Users\HP25\Desktop\TEST\" & COMERCIAL & ".xlsx"
    ActiveWorkbook.Close

    thiswb.Activate

    Rows(1).AutoFilter

Next

thiswb.Activate
Sheets("lista").Delete

End Sub


Y en Excel, he agregado un botón con formulario para que me ejecute este código.

Mi pregunta es: ¿Podría crear una aplicación con Visual Studio 2017, que al hacer click en el botón "Lanzar" me ejecute lo que tengo en ese modulo o bien ejecute el botón creado en VBA en Excel que hace que se ejecute lo que tengo en el modulo?

En Visual Studio 2017 he creado un botón y sólo tengo lo siguiente en código:

Código: [Seleccionar]

Public Class test
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


    End Sub
End Class


Ahora solo me queda este paso, que es desde Visual Studio, cuando haga click en el botón "Lanzar" me ejecute lo del modulo o bien lo del botón que a su vez ejecutará el modulo... pero no tengo ni idea de como lanzarlo desde Visual Studio...

¿Podrías echarme un cable con esto?

Mil gracias! :)

6
Ups, si disculpa!

He podido conseguir al final lo que necesitaba, a través de Macros desde el documento de Excel, el problema ahora, es que intento crear un botón en Visual Studio 2017 que me permita lanzar la Macro creada en ese Excel y no encuentro ninguna referencia...

¿Me podrías echar un cable?

He buscado referencias por internet pero solo nombran maneras de como lanzar la Macro desde Excel, pero quiero crear un programa con VStudio 2017 que al darle clic al botón, me ejecute la Macro creada en Excel...

Gracias de ante mano! :)

7
Buenas!

Muchas gracias por el cable que me estas echando! :)

He intentado lanzar primero el código para que me abra Excel y me aparece como cargando pero no me acaba de abrir el documento... pero revisando lo que me enviaste más algún articulo que he visto por internet y he visto que está bien escrito y todo, pero no me abre el documento cuando hago click sobre el botón creado en Visual Studio 2017! El código es el siguiente, mira:


Imports Excel = Microsoft.Office.Interop.Excel

Public Class VFMic
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim objXLApp As Excel.Application
        Dim objXLWb As Excel.Workbook
        Dim objXLWs As Excel.Worksheet

        objXLApp = New Excel.Application
        objXLApp.Workbooks.Open("C:\Users\HP1\Desktop\PRUEBA ESTADOS\Excel.xlsx")
        objXLWb = objXLApp.Workbooks(1)
        objXLWs = objXLWb.Worksheets(1)

    End Sub
End Class

Sigo sin conseguir que abra el documento... y veo que está todo bien, no?

Ante todo muchísimas muchísimas gracias por la ayuda!

Salu2 :)

8
Primero de todo muchas gracias por tu rapidez!

Y si, es Visual Basic y solo estoy acostumbrado a trabajar con ese lenguaje.

He tratado de ejecutar la prueba y solo se me abre Excel pero no ejecuta el comando para eliminar las columnas...

Creo que el error es mío y del código entero, no?

9
Buenas!

Disculpa, no había visto ese hilo.. voy  a echarle un ojo ahora!

Estoy utilizando C++, desde Visual Studio 2017.
En referencia al código, ese es todo el código que tengo escrito y definido para abrir el Excel y eliminar las columnas que necesito quitar, no tiene más, puede ser el motivo de que no me funcione?

Está escrito así por las referencias que he cogido via internet ya que no suelo trabajar con excel para realizar este tipo de tareas, pero estoy tratando desde Visual Studio 2017 o 2010, hacer que desde un botón me permita abrir un excel en concreto y me elimine ciertas columnas que tengo ahí, por eso he buscado referencias de como abrir un excel y como eliminar ciertas columnas e introducido ese código...

¿Podrías echarme un cable con esto?

Muchas gracias,

Un saludo cordial.

10
Buenas tardes compis!

Estoy intentado desde Visual Studio 2010 Express abrir Excel y eliminar las columnas E, F y G, y no consigo lanzar el proceso.

He creado un botón el cuál me permite abrir Excel, pero no me permite eliminar la columna ya que me da error en el código cuando trato de implementar la opción de que elimine la columna.

Utilizo el siguiente código para abrir Excel y eliminar la columna:

Dim Proceso As New Process
Proceso.Startinfo.FileName = "ruta.xls"
Proceso.Start()

With objExcel
.Range("C1").Select
.Selection.EntireColumn.Delete
End With

Pero justo en la línea "With objExcel" me da error...

Se que hay algo que no estoy haciendo bien, pero no se que es...

¿Podrían ayudarme con este tema?

Muchas gracias,

Un saludo cordial.

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".