Törölt nick Creative Commons License 2010.10.21 0 0 13069
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.
Előzmény: wawabagus (13065)