Conocer la extensión de un archivo
matthoffman
Mensajes publicados
404
Fecha de registro
Estado
Miembro
Última intervención
-
atchalak -
atchalak -
Hola,
Me gustaría saber si existe alguna función que devuelva la extensión (o el tipo) de un archivo.
Si no lo sabe y conoce una función que devuelva la versión de Microsoft Office, también vale :).
Muchas gracias de antemano.
Me gustaría saber si existe alguna función que devuelva la extensión (o el tipo) de un archivo.
Si no lo sabe y conoce una función que devuelva la versión de Microsoft Office, también vale :).
Muchas gracias de antemano.
Configuración: Windows XP Firefox 3.0.9
15 respuestas
-
oui bon bah merci pour ton aide :) ta méthode est 'porc' dans le sens où tu joues avec le feu ;) mais ça me paraît la plus adéquate pour mon problème. Pour peu que je te crée un fichier .blablabla bah ça va merder lors du traitement parce que il croira que l'extension est "abla" au lieu de "blablabla" lol
-
-
¿Cómo te da el usuario la ruta del archivo? ¿A través de un cuadro de diálogo u otra cosa?
¿En qué lenguaje? ¿VB, PHP, C++? -
Pero el título del post es VB, así que bueno, el lenguaje es VB ;)
Y obtengo la ruta del archivo con la función ActiveDocument.Path .
De hecho estoy haciendo una macro en un archivo de Excel (o Word) y entonces ya ✓| obtengo la información a partir del documento abierto. -
entonces todo lo que hay después del '.'..
ext=Right(ActiveWorkbook.FullName, 5)
if left(ext,1)<>"." then ext=Right(ActiveWorkbook.FullName, 4)
Un pequeño problema: si tu archivo de Excel se llama "monfichier..xls" (2003) se tomará como 2007, pero aparte de eso, funciona -
Acabo de pensar en un método poco elegante para recuperar la extensión.
Incrementamos un contador hasta que encontremos un "." en el nombre del archivo, partiendo desde la derecha.
Y la extensión corresponde a la cadena desde la derecha de longitud igual al contador.
Pero como ya dije, es poco elegante y demasiado largo para lo que es ^^. -
jajaja.. ¿y crees que mi solución es 'cerda'??
-
-
Vamos... soy buena gente
Private Function FileExtension(NomFichier As String) As String Dim DotPos As Integer If InStr(1, NomFichier, ".") = 0 Then FileExtension = False Else While Left(Right(NomFichier, DotPos), 1) <> "." DotPos = DotPos + 1 Wend FileExtension = Right(NomFichier, DotPos - 1) End If End Function
-
Hola,
Aprovecho la reaparición de este tema para proponer una solución variante:Dim Extension As String Extension = IIf(Mid(StrReverse(ThisWorkbook.Name), 4, 1) = ".", Right(ThisWorkbook.Name, 3), Right(ThisWorkbook.Name, 4))
--
🎼 Cordialement,
Franck 🎶 -
Dim monNomDeFichier As String, extensionDeMonFichier As String extensionDeMonFichier = Right(monNomDeFichier, InStrRev(monNomDeFichier, "."))
Instr devuelve la primera ocurrencia del carácter pasado como argumento, inStrRev permite empezar desde la derecha, en cuanto llegamos al primer ".", solo tenemos la extensión del archivo a la derecha. este método también permite gestionar archivos que tienen uno o más "." en su interior -
ah bueno, entonces hay que hacer lo contrario, y ahí no hay excepción:
ext=Right(ActiveWorkbook.FullName, 4)
if left(ext,1)<> "." then ext=Right(ActiveWorkbook.FullName, 5)
:) :P
soy realmente inútil cuando me pongo :) -
sinon, puedes hacer algo del estilo:
ext=Right(ActiveWorkbook.FullName, 4) '2003
if left(ext,1)<> "." then
ext=Right(ActiveWorkbook.FullName, 5) '2007
if left(ext,1)<> "." then
ext=""
msgbox "erreur d'extention"
end if
bon pour le coup.. c porc, mais ca gere toutes tes expetions :) -
¡ups, lo siento :)
Right(ActiveWorkbook.FullName, 3)-
Hmm, si no me equivoco, tu función te devolverá las 3 últimas letras del nombre completo, lo que funciona muy bien para Office 2003 pero no para 2007 porque las extensiones tienen 4 letras (docx, xlsx, ...).
Precisamente me haría falta una función que te recupere la extensión automáticamente para que mi macro pueda adaptarse a 2003 y 2007 sin problemas y sin tener que modificar el código si se cambia de versión.
-
-
Todas las respuestas son malas y sucias.
El método oficial es con la API Shell (código de Microsoft)