none
Crear archivo nuevo de excel VB10

    Pregunta

  • Hola que tal, saludos a todos, tengo una duda que no e podido resolver, tengo un archivo excel con un formato, el cual deseo llenar desde Visual Basic y guardarlo en otra ubicación con nombre diferente sin que se abra el archivo excel. Solo e logrado hacerlo con este código, pero se me reemplaza el archivo y aparte se me abre el documento, espero y me puedan ayudar, Gracias. 

    Mi código es:

           

    Dim xlibro As Microsoft.Office.Interop.Excel.Application
            Dim strRutaExcel As String
            Dim Workbooks As String



            'El siguiente codigo es para crear la ruta,entre comillas se pone la ruta donde esta el libro
            strRutaExcel = "C:\Nombre.xlsx"
            'El siguiente codigo es para abrir el libro y hacerlo visible, si se quiere dejar el libro oculto, se cambia la palabra True por False
            xlibro = CreateObject("Excel.Application")
            xlibro.Workbooks.Open(strRutaExcel)

            'Aquí le pongo false para que no se abra el excel, pero no me lo llena con los datos

            xlibro.Visible = True

            
            'Activamos el libro
            xlibro.Workbooks("OT.xlsx").Activate()


            'Activamos la hoja especifica del libro   
            xlibro.Sheets("HOJA 1").Select()

            'esta es la instruccion para modificar la celda con el contenido de unos textboxs 
            xlibro.Range("C5,C21").Value = TextBox1.Text
            xlibro.Range("H5,H21").Value = TextBox2.Text
            xlibro.Range("H6,H22").Value = TextBox3.Text
            xlibro.Range("H7,H23").Value = TextBox4.Text
            xlibro.Range("H8,H24").Value = TextBox5.Text
            xlibro.Range("H14,H30").Value = TextBox6.Text
            xlibro.Range("C9,C25").Value = TextBox7.Text
            xlibro.Range("H14,C30").Value = TextBox8.Text

    martes, 28 de febrero de 2017 1:31

Respuestas

  • Hola:
    Para el siguiente ejemplo, se hace uso de la libreria Spire.XLS.dll, por lo tanto hay que añadir una referencia a dicha libreria

    En en Form como el de la imagen, copia y pega el siguiente código

    Imports Spire.Xls
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Me.btnAceptar.Enabled = False
        End Sub
        Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click
            Dim workbook As Workbook = New Workbook()
            'Se abre un fichero excel ya creado
            workbook.LoadFromFile("D:\TU_CARPETA\TU_FICHERO.xlsx")
            Dim sheet As Worksheet = workbook.Worksheets(0)
            sheet.Range("B1").Text = Me.TextBox1.Text
            sheet.Range("B2").Text = Me.TextBox2.Text
            sheet.Range("B3").Text = Me.TextBox3.Text
            sheet.Range("B4").Text = Me.TextBox4.Text
            sheet.Range("B5").Text = Me.TextBox5.Text
            sheet.Range("B6").Text = Me.TextBox6.Text
            sheet.Range("B7").Text = Me.TextBox7.Text
            sheet.Range("B8").Text = Me.TextBox8.Text
            'Se graba el nuevo fichero
            workbook.SaveToFile(Me.txtPathDestino.Text, ExcelVersion.Version2007)
            MessageBox.Show("FICHERO CREADO")
        End Sub
        Private Sub btnPathDestino_Click(sender As Object, e As EventArgs) Handles btnPathDestino.Click
            Try
                With dlgSalvar
                    ' Vea el código que muestra el control OpenFileDialog. Para ver ejemplos con la mayoría de las propiedades, que son las mismas para ambos controles, en la mayor parte.
                    ' Agregar la extensión predeterminada, si el usuario no agrega una extensión. El valor predeterminado es True.
                    .AddExtension = True
                    ' Comprobar que existe realmente la ruta de acceso de salida. ¿Preguntar antes de crear un archivo nuevo? ¿Preguntar antes de sobrescribir?
                    ' El valor predeterminado es True.
                    .CheckPathExists = True
                    ' El valor predeterminado es False.
                    .CreatePrompt = False
                    ' El valor predeterminado es True.
                    .OverwritePrompt = True
                    ' El valor predeterminado es True.
                    .ValidateNames = True
                    ' El valor predeterminado es False.
                    .ShowHelp = True
                    ' Si el usuario no proporciona una extensión y si la propiedad AddExtension es True, utilizar esta extensión. El valor predeterminado es "".
                    .DefaultExt = "xlsx"
                    ' El valor predeterminado es "".
                    .Filter = "Ficheros Excel (*.xlsx)|*.xlsx"
                    .FilterIndex = 1
                    If .ShowDialog() = Windows.Forms.DialogResult.OK Then
                        Me.txtPathDestino.Text = .FileName
                        Me.btnAceptar.Enabled = True
                    End If
                End With
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Exclamation, Me.Text)
            End Try
        End Sub
    End Class
    Un saludo desde Bilbo
    Carlos
    martes, 28 de febrero de 2017 6:08
  • Hola:
    Tienes algunos errores

    Esta linea
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    la reemplazas por
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Donde tienes el siguiente codigo

    If .ShowDialog() = Windows.Forms.DialogResult.OK Then
        Me.TextBox9.Text = .FileName
        Me.Button1.Enabled = False  ---> TIENES QUE PONER TRUE, PORQUE SINO, NO PUEDES EJECUTAR EL BOTON
    End If 

    P.D.
    ¿Porque cambias los nombres de los botones para poner unos nombres que no dicen nada?
    Un saludo desde Bilbo
    Carlos
    miércoles, 1 de marzo de 2017 8:41

Todas las respuestas

  • Hola:
    Para el siguiente ejemplo, se hace uso de la libreria Spire.XLS.dll, por lo tanto hay que añadir una referencia a dicha libreria

    En en Form como el de la imagen, copia y pega el siguiente código

    Imports Spire.Xls
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Me.btnAceptar.Enabled = False
        End Sub
        Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click
            Dim workbook As Workbook = New Workbook()
            'Se abre un fichero excel ya creado
            workbook.LoadFromFile("D:\TU_CARPETA\TU_FICHERO.xlsx")
            Dim sheet As Worksheet = workbook.Worksheets(0)
            sheet.Range("B1").Text = Me.TextBox1.Text
            sheet.Range("B2").Text = Me.TextBox2.Text
            sheet.Range("B3").Text = Me.TextBox3.Text
            sheet.Range("B4").Text = Me.TextBox4.Text
            sheet.Range("B5").Text = Me.TextBox5.Text
            sheet.Range("B6").Text = Me.TextBox6.Text
            sheet.Range("B7").Text = Me.TextBox7.Text
            sheet.Range("B8").Text = Me.TextBox8.Text
            'Se graba el nuevo fichero
            workbook.SaveToFile(Me.txtPathDestino.Text, ExcelVersion.Version2007)
            MessageBox.Show("FICHERO CREADO")
        End Sub
        Private Sub btnPathDestino_Click(sender As Object, e As EventArgs) Handles btnPathDestino.Click
            Try
                With dlgSalvar
                    ' Vea el código que muestra el control OpenFileDialog. Para ver ejemplos con la mayoría de las propiedades, que son las mismas para ambos controles, en la mayor parte.
                    ' Agregar la extensión predeterminada, si el usuario no agrega una extensión. El valor predeterminado es True.
                    .AddExtension = True
                    ' Comprobar que existe realmente la ruta de acceso de salida. ¿Preguntar antes de crear un archivo nuevo? ¿Preguntar antes de sobrescribir?
                    ' El valor predeterminado es True.
                    .CheckPathExists = True
                    ' El valor predeterminado es False.
                    .CreatePrompt = False
                    ' El valor predeterminado es True.
                    .OverwritePrompt = True
                    ' El valor predeterminado es True.
                    .ValidateNames = True
                    ' El valor predeterminado es False.
                    .ShowHelp = True
                    ' Si el usuario no proporciona una extensión y si la propiedad AddExtension es True, utilizar esta extensión. El valor predeterminado es "".
                    .DefaultExt = "xlsx"
                    ' El valor predeterminado es "".
                    .Filter = "Ficheros Excel (*.xlsx)|*.xlsx"
                    .FilterIndex = 1
                    If .ShowDialog() = Windows.Forms.DialogResult.OK Then
                        Me.txtPathDestino.Text = .FileName
                        Me.btnAceptar.Enabled = True
                    End If
                End With
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Exclamation, Me.Text)
            End Try
        End Sub
    End Class
    Un saludo desde Bilbo
    Carlos
    martes, 28 de febrero de 2017 6:08
  • Muchas gracias Carlos, voy a ponerlo a prueba...
    miércoles, 1 de marzo de 2017 2:08
  • Que tal Carlos probé el código aplicado a mi proyecto pero, me surgen varios errores, al iniciarlo el botón de guardar permanece presionado, y al abrir el botón para buscar la ruta de guardado selecciono la ruta y pongo un nombre, pero no me deja guardarlo, espero y me puedas ayudar, ya que no tengo mucha experiencia en VB, gracias te dejo mi codigo.

    Imports Spire.Xls
    Public Class Form1
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
            Me.Button1.Enabled = False

        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    'Boton asignado para guardar

            Dim workbook As Workbook = New Workbook()
            'Se abre un fichero excel ya creado
            workbook.LoadFromFile("C:\OT.xlsx")
            Dim sheet As Worksheet = workbook.Worksheets(0)

            sheet.Range("C9,C25").Text = Me.TextBox1.Text
            sheet.Range("H5,H21").Text = Me.TextBox2.Text

            sheet.Range("H6,H22").Text = Me.TextBox3.Text
            sheet.Range("H7,H23").Text = Me.TextBox4.Text
            sheet.Range("H8,H24").Text = Me.TextBox5.Text
            sheet.Range("H14,H30").Text = Me.TextBox6.Text
            sheet.Range("C9,C25").Text = Me.TextBox7.Text
            sheet.Range("C14,C30").Text = Me.TextBox8.Text

            'Se graba el nuevo fichero 
            workbook.SaveToFile(Me.TextBox9.Text, ExcelVersion.Version2010)
            MessageBox.Show("FICHERO CREADO")

        End Sub

        Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click

    'Boton asignado para buscar la ruta
            Try
                Dim guardar As New SaveFileDialog
                With guardar


                    ' Vea el código que muestra el control OpenFileDialog. Para ver ejemplos con la mayoría de las propiedades, que son las mismas para ambos controles, en la mayor parte.
                    ' Agregar la extensión predeterminada, si el usuario no agrega una extensión. El valor predeterminado es True.
                    .AddExtension = True
                    ' Comprobar que existe realmente la ruta de acceso de salida. ¿Preguntar antes de crear un archivo nuevo? ¿Preguntar antes de sobrescribir? 
                    ' El valor predeterminado es True.
                    .CheckPathExists = True
                    ' El valor predeterminado es False.
                    .CreatePrompt = False
                    ' El valor predeterminado es True.
                    .OverwritePrompt = True
                    ' El valor predeterminado es True.
                    .ValidateNames = True
                    ' El valor predeterminado es False.
                    .ShowHelp = True
                    ' Si el usuario no proporciona una extensión y si la propiedad AddExtension es True, utilizar esta extensión. El valor predeterminado es "".
                    .DefaultExt = "xlsx"
                    ' El valor predeterminado es "".
                    .Filter = "Ficheros Excel (*.xlsx)|*.xlsx"
                    .FilterIndex = 1
                    If .ShowDialog() = Windows.Forms.DialogResult.OK Then
                        Me.TextBox9.Text = .FileName
                        Me.Button1.Enabled = False

                    End If
                End With
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Exclamation, Me.Text)
            End Try
        End Sub
    End Class


    miércoles, 1 de marzo de 2017 3:14
  • Hola:
    Tienes algunos errores

    Esta linea
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    la reemplazas por
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Donde tienes el siguiente codigo

    If .ShowDialog() = Windows.Forms.DialogResult.OK Then
        Me.TextBox9.Text = .FileName
        Me.Button1.Enabled = False  ---> TIENES QUE PONER TRUE, PORQUE SINO, NO PUEDES EJECUTAR EL BOTON
    End If 

    P.D.
    ¿Porque cambias los nombres de los botones para poner unos nombres que no dicen nada?
    Un saludo desde Bilbo
    Carlos
    miércoles, 1 de marzo de 2017 8:41
  • Muchas gracias Carlos me sirvió mucho tu respuesta,  excelente explicación. Saludos 
    miércoles, 1 de marzo de 2017 22:24