Javaslom ezt a megoldást:
Dim FName, WBNew As Workbook
Dim Hely, UjNev, Sor
FName = Application.GetOpenFilename("Excel workbooks (*.xls), *.xls", , "Open the file you want to transform!", , False)
If FName = False Then
'a user Cancel-t nyomott
Exit Sub
End If
Set WBNew = Workbooks.Open(FName)
Hely = WBNew.Path & "\"
UjNev = Left(WBNew.Name, InStrRev(WBNew.Name, ".") - 1)
A
GetOpenFilename függvény visszaadja a kiválasztott fájl teljes elérési útvonalát, ezáltal nem lehet kérdés, hogy melyik fájlt kell megnyitni és átalakítani. Ha a user a Cancel gombra kattint, a függvény False értékkel tér vissza, ami egy If-fel kezelhető.
Az UjNev meghatározásakor pedig a fájlnévben lévő utolsó pont helyzetét célszerű figyelembe venni, mert Excel 2003-ban a kiterjesztése 3 betű, Excel 2007-ben viszont 4 betű. Ha fix számú karaktert veszel le a fájlnév jobb oldaláról, akkor az valamelyik verziónál nem azt kapod, amit szeretnél.