Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
API : GetTempName
Autor/es:
Juan M Afán de Ribera
Pregunta : Necesito crear un archivo temporal y no estoy muy seguro de cuál sería la forma más correcta para obtener un nombre de archivo y asegurarme de que ese archivo no exista ya en el sistema. ¿Existe alguna forma sencilla y segura de conseguirlo?
Respuesta : Sí, hay una forma sencilla de hacerlo utilizando el API de Windows. La función GetTempName devuelve un nombre de archivo temporal y cuya ruta será la que se haya indicado en su argumento TempPath. Si no se le da ningún valor al argumento TempPath entonces la ruta del archivo será la de la carpeta que utilice el sistema como carpeta temporal.

El API que se utiliza para esta función comprueba que no exista un archivo con el nombre generado y devuelve un nombre de fichero que es único.

Ejemplo de uso:
' este código devolverá un nombre de archivo temporal
' situado en la carpeta temporal del sistema
NombreArchivo = GetTempName

' este código devolverá un nombre de archivo temporal
' situado en la carpeta "C:\"
NombreArchivo = GetTempName("C:\")
Pega este código en un módulo estandar
'---------------------------------------------------------
'
' GetTempName
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Private Declare Function GetTempFileName Lib "kernel32" _
                Alias "GetTempFileNameA" _
                (ByVal lpPathName As String, _
                ByVal lpPrefixString As String, _
                ByVal uUnique As Long, _
                ByVal lpTempFileName As String) As Long

Function GetTempName(Optional TempPath As String) As String
Dim buffer As String * 1000

    If TempPath = "" Then TempPath = Environ("TEMP")
    If GetTempFileName(TempPath, vbNullString, 0&, buffer) Then
        GetTempName = Left$(buffer, InStr(buffer, vbNullChar) - 1)
    End If
    
End Function
'---------------------------------------------------------

Ejemplos:

 

Temas relacionados:

 

Última actualización: 26/12/2004