Solución:
Las respuestas dadas aquí ya pueden funcionar en situaciones limitadas, pero ciertamente no son la mejor manera de hacerlo. No reinventes la rueda. El objeto del sistema de archivos en la biblioteca de Microsoft Scripting Runtime ya tiene un método para hacer exactamente esto. Se llama GetBaseName. Maneja los puntos en el nombre del archivo tal cual.
Public Sub Test()
Dim fso As New Scripting.FileSystemObject
Debug.Print fso.GetBaseName(ActiveWorkbook.Name)
End Sub
Public Sub Test2()
Dim fso As New Scripting.FileSystemObject
Debug.Print fso.GetBaseName("MyFile.something.txt")
End Sub
Instrucciones para agregar una referencia a la biblioteca de secuencias de comandos
Simple pero funciona bien para mi
FileName = ActiveWorkbook.Name
If InStr(FileName, ".") > 0 Then
FileName = Left(FileName, InStr(FileName, ".") - 1)
End If
El uso de la función Split parece más elegante que InStr y Left, en mi opinión.
Private Sub CommandButton2_Click()
Dim ThisFileName As String
Dim BaseFileName As String
Dim FileNameArray() As String
ThisFileName = ThisWorkbook.Name
FileNameArray = Split(ThisFileName, ".")
BaseFileName = FileNameArray(0)
MsgBox "Base file name is " & BaseFileName
End Sub
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)