Visual Basic - Error 13 en tiempo de ejecución - no coinciden los tipos

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 9
Ha disminuido su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Error 13 en tiempo de ejecución - no coinciden los tipos

Publicado por Cristian (5 intervenciones) el 01/06/2017 17:28:56
Buenos días,

Me encuentro diseñando una macro que me genere un archivo .txt separado por comas generado por una base de datos de Excel. el código de mi CommandButton3_Click() es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub CommandButton3_Click()
Dim NombreArchivo, RutaArchivo As String
Dim obj As FileSystemObject
Dim tx As Scripting.textstream
Dim HojaTrabajo As Worksheets
Dim i, j, nFilas, nColumnas As Integer
 
NombreArchivo = "Archivo Plano"
RutaArchivo = Range("E5").Value & "\" & NombreArchivo & ".txt"
 
Set obj = New FileSystemObject
Set tx = obj.CreateTextFile(RutaArchivo)
Set HojaTrabajo = Worksheets("BD Qmatic Cliente")
 
nFilas = HojaTrabajo.Range("A4", HojaTrabajo.Range("A4").End(xlDown)).Cells.cout
nColumnas = HojaTrabajo.Range("A3", HojaTrabajo.Range("A3").End(xltorigth)).Cells.cout
 
For i = 1 To nFilas
 
For j = 1 To nColumnas
 
tx.write HojaTrabajo.Cells(i + 4, j)
If j < nColumnas Then tx.write ","
 
Next j
tx.writeline
Next i
 
End Sub

Al iniciarlo me genera Error 13 en tiempo de ejecución - no coinciden los tipos en la linea Set HojaTrabajo = Worksheets("BD Qmatic Cliente"), alguien podría colaborarme para poder corregirlo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Error 13 en tiempo de ejecución - no coinciden los tipos

Publicado por Antoni Masana (558 intervenciones) el 02/06/2017 11:26:00
Esto es a la antigua usanza y funciona igual de bien

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub CommandButton3_Click()
    Dim i As Integer, nFilas As Integer, _
        j As Integer, nColum As Integer, HojaTrabajo As Worksheets
 
    Set HojaTrabajo = Worksheets("BD Qmatic Cliente")
 
    nFilas = HojaTrabajo.Range("A4", HojaTrabajo.Range("A4").End(xlDown)).Cells.cout
    nColum = HojaTrabajo.Range("A3", HojaTrabajo.Range("A3").End(xltorigth)).Cells.cout
 
    Open  Range("E5").Value & "\Archivo Plano.txt" for Output as #9
    For i = 1 To nFilas
        For j = 1 To nColum
            Print #9, HojaTrabajo.Cells(i + 4, j); : If j < nColum then Print #9, ",";
        Next
        Print #9, ""
    Next
    Close #9
End Sub

En principio debería funcionar buen, si tienes un problema cuéntamelo y lo reviso, necesitare el libro.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha disminuido su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Error 13 en tiempo de ejecución - no coinciden los tipos

Publicado por Cristian (5 intervenciones) el 02/06/2017 15:22:03
Buenos días Sr Antoni,

Agradezco su colaboración, ejecuté el nuevo código y me genera el mismo error en la misma linea, agradezco me pueda colaborar, adjunto el libro en el que estoy trabajando.

muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Error 13 en tiempo de ejecución - no coinciden los tipos

Publicado por Antoni Masana (558 intervenciones) el 05/06/2017 08:49:38
La verdad es que hoy me he levantado espesito. y me ha costado ver el problema.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub CommandButton3_Click()
    Dim i As Integer, nFilas As Integer, _
        j As Integer, nColum As Integer
 
   With Worksheets("BD Qmatic Cliente")
 
    nFilas = .Range("A4", .Range("A4").End(xlDown)).Cells.Count
    nColum = .Range("A3", .Range("A3").End(xlToRight)).Cells.Count
 
    Open Range("E5").Value & "\Archivo Plano.txt" For Output As #9
    For i = 1 To nFilas
        For j = 1 To nColum
            Print #9, .Cells(i + 4, j);: If j < nColum Then Print #9, ",";
        Next
        Print #9, ""
    Next
    Close #9
    End With
End Sub

Línea 7: No es Cells.cout es Cells.count

Línea 8: No es Cells.cout es Cells.count

Línea 8: No es xltorigth es xlToRight

Solucionado.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 9
Ha disminuido su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Error 13 en tiempo de ejecución - no coinciden los tipos

Publicado por Cristian (5 intervenciones) el 06/06/2017 23:34:48
Sr Antoni, muchas gracias por su colaboración ya me corre la programación perfectamente.

Quería consultarle una ultima cosa. No se si pudo notar que quiero generar el txt de una base de datos de 500 registros que se encuentra formulado el cual se alimenta de la hoja "BD Total", claramente si no existe información en " BD Total" se supondría que esta en blanco los campos del libro "BD Qmatic Cliente", pero se me presenta el inconveniente que al generar el archivo txt me presenta en cada linea del txt la información de cada registro cuando existe pero además me presenta los registros formulados como "" (vacíos), existe alguna manera para decirle al código que solo me presente en el txt la información que por relación a la otra hoja "existe". adjunto el txt como me lo está generando.

Muchas gracias por su paciencia y dedicación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar