Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[vba/excel]bestand zonder extensie opent niet

Pagina: 1
Acties:

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 16:58
Ik heb een vba-macro die een bestand zonder extensie moet openen als csv. De naam van het bestand wordt opgehaald via een functie:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function NewestFile(Directory, FileSpec)
' Returns the name of the most recent file in a Directory
' That matches the FileSpec (e.g., "*.xls").
' Returns an empty string if the directory does not exist or
' it contains no matching files
    Dim FileName As String
    Dim MostRecentFile As String
    Dim MostRecentDate As Date
    If Right(Directory, 1) <> "\" Then Directory = Directory & "\"
    FileName = Dir(Directory & FileSpec, 0)
    If FileName <> "" Then
        MostRecentFile = FileName
        MostRecentDate = FileDateTime(Directory & FileName)
        Do While FileName <> ""
            If FileDateTime(Directory & FileName) > MostRecentDate Then
                 MostRecentFile = FileName
                 MostRecentDate = FileDateTime(Directory & FileName)
             End If
             FileName = Dir
        Loop
    End If
    NewestFile = MostRecentFile
End Function

Visual Basic:
1
2
strPath = NewestFile("Directory", "EXT*")
MsgBox strPath

Dit levert de juiste bestandsnaam op, zonder extensie.

Als ik deze vervolgens inlaadt via:
Visual Basic:
1
    Workbooks.OpenText FileName:=strPath, Semicolon:=True

Krijg ik de foutmelding dat bestand.xlsx niet gevonden is. Er wordt dus een .xlsx toegevoegd. Hoe kan ik dit bestand nu toch openen. Als ik handmatig het bestand selecteer is het geen probleem.

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 20:48

Hero of Time

Moderator LNX

There is only one Legend

Bestanden moeten op Windows gewoon een extensie hebben. Zoals je merkt, doet Excel dus de default extensie toevoegen als deze niet wordt opgegeven en dat gaat dan fout. Wat krijg je als je [file]. gebruikt, dus doen alsof je een extensie meegeeft, maar toch leeg laat?

Commandline FTW | Tweakt met mate


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 16:58
Zelfde probleem.

Dan eerst maar renamen naar .txt en dan openen... Moet ook werken volgens mij

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ik geloof er geen klap van. Excel voegt geen xlsx extensies toe als je een opentext methode gebruikt. Wat me wel opvalt is dat die Newestfile() code geen pad mee teruggeeft, en dan wordt het lastig zoeken naar een bestand...

En in Windows is een bestand zonder extensie gewoon bruikbaar...

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 20:48

Hero of Time

Moderator LNX

There is only one Legend

Minder bruikbaar dan op bijvoorbeeld Linux. Sommige Windows programma's weigeren zelfs een bestand te openen als het niet de extensie heeft die het programma gebruikt. Die zijn slecht gemaakt, maar toch, ze bestaan. En een Excel bestand dat geen extensie heeft (of een verkeerde) openen vanuit Excel via 'alle bestanden' werkt ook gewoon, dat ontken ik niet. Het is alleen beter om wel een extensie te hebben. Is ook voor jezelf overzichtelijker.

Commandline FTW | Tweakt met mate


Verwijderd

Verander
code:
1
Workbooks.OpenText FileName:=strPath, Semicolon:=True

door
code:
1
Workbooks.OpenText FileName:=Chr$(34) & strPath & Chr$(34), Semicolon:=True


Chr$(34) voorkomt dat Excel z'n eigen extensie toevoegt.
Het voorkomt ook problemen met Map en Bestandsnamen met spaties erin.

[ Voor 28% gewijzigd door Verwijderd op 14-10-2015 23:27 ]


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 16:58
En Lustucru had gelijk... Het pad werd niet meegegeven en dus ging hij uit van de default: .xlsx en mijn documenten.

Nu strPath aangepast dat hij het pad ook meeneemt en hij werkt prima.
Pagina: 1