error 70 al exportar un archivo ascii

14 envíos / 0 nuevos
Último envío
argacha
Imagen de argacha
Offline
última acción: Hace 1 año 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntos
alta: 10/01/2007 - 08:28
Puntos: 1982
error 70 al exportar un archivo ascii

Por qué no me funciona esta macro? Me da error 70 en la línea Open.

 

Sub exportar()
Dim numero, xpunto, ypunto, zpunto As Integer
Dim codigo As String

Dim destino As Variant
        destino = Application.GetSaveAsFilename("nombrepordefecto", "Text Files (*.txt), *.txt", 1, "título de la ventana, yo pondría ...como paco no hay ninguno")
       
                
        If destino <> False Then  'cuando se pulsa cancelar, en destino se almacena el valor "Falso", porque es una variable tipo texto, esto no funcionará en todos los idiomas
            MsgBox "Se grabará como.. " & destino
            'ActiveWorkbook.SaveAs Filename:=destino, FileFormat:=xlText, CreateBackup:=False
        End If

fil = 10
col = 1

Open destino For Output As #1

For i = 0 To numero
    numero = ActiveSheet.Cells(fil + i, col + 1).Value
    xpunto = ActiveSheet.Cells(fil + i, col + 6).Value
    ypunto = ActiveSheet.Cells(fil + i, col + 7).Value
    zpunto = ActiveSheet.Cells(fil + i, col + 8).Value
    Print #1, numero & "," & xpunto & "," & ypunto& ","&zpunto

Next i
Close #1
End Sub

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: error 70 al exportar un archivo ascii

el error 70 es un error de permisos por no poder acceder al archivo

¿el archivo está en uso?¿lo tienes abierto con Excel?

Según el programa con el que lo tengas abierto, puede que lo bloquee para otros programas.

 

Por cierto, me gusta mucho el título que pones en tu ventana GetSaveAsFilename Guiño

 

------
Ya sé Excel, pero necesito más.

argacha
Imagen de argacha
Offline
última acción: Hace 1 año 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntos
alta: 10/01/2007 - 08:28
Puntos: 1982
Re: error 70 al exportar un archivo ascii

No, no lo tengo abierto con ningún programa, ni con el mismo. Al menos que yo sepa.

Lo primero que hace la macro es pedirme, en una ventana, el nombre del archivo. Puedo elegir el nombre que sea pero uqe siempre me devuelve el error 70.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: error 70 al exportar un archivo ascii

¿tienes algún otro archivo de texto abierto?

en la instrucción Open le dices que abra el archivo como número 1 (#1)

prueba con FreeFile para saber cuál es el siguiente número de archivo libre.

NúmeroArchivo = FreeFile ' Obtiene el número de archivo libre
Open destino For Output As #NúmeroArchivo

 

------
Ya sé Excel, pero necesito más.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
por cierto, a mí no me da error

por cierto, tu código a mí me funciona sin problemas, crea el archivo y escribe en él.

 

------
Ya sé Excel, pero necesito más.

argacha
Imagen de argacha
Offline
última acción: Hace 1 año 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntos
alta: 10/01/2007 - 08:28
Puntos: 1982
Re: error 70 al exportar un archivo ascii

Con Freefile funciona perfectamente salvo...

me almacena npunto bien

me almacena xpunto bien pero con muchos decimales .¿cómo hago que redondee a 3 decimales?

me almacena ypunto igual que x punto

pero

sólo me almacena la parte entera de zpunto!!!

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: error 70 al exportar un archivo ascii

no tengo muy claro que sea por lo de freefile, pero si ya funciona no lo vamos a tocar más.

 

Respecto de los decimales:

utiliza la función Format para dar formato a tus números

 

Para el caso de zpunto, mira cómo has declarado la variable, la tienes como integer, así que la considera un entero y por eso no guarda la parte decimal.

 

lo de la x y la y, a mí me guarda el valor que hay en cada celda.

 

por cierto, ¿por qué lees la variable numero dentro del bucle? así no parece que sirva de nada ¿no?

 

------
Ya sé Excel, pero necesito más.

argacha
Imagen de argacha
Offline
última acción: Hace 1 año 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntos
alta: 10/01/2007 - 08:28
Puntos: 1982
Re: error 70 al exportar un archivo ascii

Es verdad. Sólo me interesa numero As Integer y el resto como como single.

Pero cuando declaro variables y quiero tres variables como single,una como string y otra como Integer, tengo que nombrar el tipo de variable al declarar la variable??

¿no vale decir

Dim numero As Integer

Dim xpunto, ypunto, zpunto As Single
Dim codigo As String

???

En el caso del código que es variable tipo Texto. ¿como debo hacer para leerla en el bucle?

 

pd. numero no tiene por que ser correlativo. Es la identificación del punto pero puede ser cualquier entero.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: error 70 al exportar un archivo ascii

en vba, tienes que declarar el tipo de cada variable, si no indicas el tipo, la variable se interpreta como tipo Variant, que puede ser cualquier cosa, es decir, que está declarada sin más, pero no es de un tipo concreto:

 

en esta línea

Dim xpunto, ypunto, zpunto as Single

sólo estás declarando como Single zpunto (xpunto e ypunto son tipo variant)

 

si quieres declarar las tres como Single debes escribirlo así:

Dim xpunto as Single, ypunto as Single, zpunto as Single

 

la variable tipo string se lee igual que las numéricas, con la propiedad .value de la celda donde esté el dato en cuestión

 

------
Ya sé Excel, pero necesito más.

argacha
Imagen de argacha
Offline
última acción: Hace 1 año 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntos
alta: 10/01/2007 - 08:28
Puntos: 1982
Re: error 70 al exportar un archivo ascii

Ahora que me doy cuenta. El bucle es  desde cero hasta la variable numero. Pero numero es el nombre del punto y no tiene ni que ser correlativo. ¿cómo controlo el fin del bucle si no sé cuando va a terminar? Bueno terminará cuando el numero sea vacio. ¿cómo es esta condición?

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
utiliza Do

 

en vez de un bucle For utiliza un bucle Do

Do Until ...

...

Loop

 

la otra opción es poner un bucle For y salir de él con Exit For

For .... to ...

 If ... Then Exit For

Next

 

------
Ya sé Excel, pero necesito más.

argacha
Imagen de argacha
Offline
última acción: Hace 1 año 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntos
alta: 10/01/2007 - 08:28
Puntos: 1982
Re: utiliza Do

For .... to ...

 If ... Then Exit For

Next

OK funciona perfectamente pero he tenido que hacer un for i=0 to 10000... es decir tengo un tope máximo de puntos a exportar.. es una ñapa pero....

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: utiliza Do

En estos casos en que no sabes cuántas veces hay que hacer el bucle en mejor un Do ... Loop

por cierto, también hay un Exit Do por si quieres salir a la mitad

 

Do

    ...

    Exit Do

Loop

 

 

------
Ya sé Excel, pero necesito más.

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: utiliza Do

Como te dice Paco, lo mejor es un Do...Loop

 

A mí me gusta mucho cómo funciona el Do While ... Loop

Esto comprueba que se da una condición, y si no se da termina el bucle.

 

Si te da igual lo que haya en la variable, pero sabes con qué valor concreto (puede ser ninguno) salir, puedes probar con Do Until ... Loop

 

 

Saludos