variabel bestand openen met dezelfde parameters

  • Onderwerp starter Onderwerp starter fpr
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

fpr

Gebruiker
Lid geworden
29 nov 2011
Berichten
6
Hallo

Ik ben nog niet een echte doorgewinterde VBA specialist, dus heb een vraagje over VBA in Excel
Ik heb deze macro opgenomen in Excel:

Workbooks.OpenText Filename:= _
"C:\Documents and Settings\Frank\Desktop\Logtest.txt", Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, _
Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1)), _
DecimalSeparator:=".", ThousandsSeparator:="'", TrailingMinusNumbers:= _
True
Columns("B:B").ColumnWidth = 18
Columns("A:A").ColumnWidth = 15
Columns("C:E").Select
Selection.NumberFormat = "0.00"
Columns("B:B").Select
Selection.NumberFormat = "d/m/yyyy h:mm:ss"
Range("A1").Select

Dit zorgt ervoor dat ik altijd het bestand logtest.txt open met dezelfde parameters, maar ik wil tussendoor het dialoogvenster 'openen' even te zien krijgen zodat ik een bestand kan kiezen. Eenmaal het bestand gekozen, moet het bestand automatisch, zonder extra meldingen, geopend worden met deze parameters.

Het plakken van deze code ipv de bestandlocatie hierboven werkt niet:

Open_File()
Application.Dialogs(xlDialogOpen).Show Arg1:="*.txt"

Logtest.txt is een bestand in txt formaat maar met csv inhoud. Dit is van een externe partij.

Wie o wie kan mij helpen?

Bvd!
Gr. Frank
 
Laatst bewerkt:
Mogelijke oplossing

Code:
Sub Ask_for_File()
Dim sFile As String

' Vraag naar txt file
sFile = GetFile("Insert .txt to Workbook")

' Zorg dat de user niet gecanceld heeft
' sFile zal dan gelijk aan False zijn.
If sFile = "False" Then
    Debug.Print "No file selected."
Exit Sub
End If

' OK - we hebben een txt bestand
Debug.Print sFile
'Dit roept jouw'n macro import code aan met het opgevraagde txt bestand
Call Create_Workbook_with_File(sFile)

End Sub

' Presenteer user met GetOpenFileName dialoog
' Geeft slechts één enkele filename weer!
Function GetFile(sTitle As String) As String
Dim sFilter As String
Dim bMultiSelect As Boolean
'Sample filter
'sFilter = "Figuren (*.emf;*.wmf;*.jpg;*.jpeg;*.jfif;*.jpe;*.png;*.bmp;*.dib;*.rle;*.gif;*.emz;*.wmz;*.pcz;*.tif;*.tiff;*.cgm;*.cgm;*.eps;*.pct;*.pict;*.wpg), *.emf;*.wmf;*.jpg;*.jpeg;*.jfif;*.jpe;*.png;*.bmp;*.dib;*.rle;*.gif;*.emz;*.wmz;*.pcz;*.tif;*.tiff;*.cgm;*.cgm;*.eps;*.pct;*.pict;*.wpg"
sFilter = "Txt Files (*.txt), *.txt"
bMultiSelect = False
GetFile = Application.GetOpenFilename(FileFilter:=sFilter, _
Title:=sTitle, MultiSelect:=bMultiSelect)
End Function

Sub Create_Workbook_with_File(sFile As String)
Workbooks.OpenText Filename:=sFile, _
                    Origin:=xlMSDOS, _
                    StartRow:=1, _
                    DataType:=xlDelimited, _
                    TextQualifier:=xlDoubleQuote, _
                    ConsecutiveDelimiter:=False, _
                    Tab:=True, _
                    Semicolon:=True, _
                    Comma:=False, _
                    Space:=False, _
                    Other:=False, _
                    FieldInfo:=Array(Array(1, 1), _
                    Array(2, 1)), _
                    DecimalSeparator:=".", _
                    ThousandsSeparator:="'", _
                    TrailingMinusNumbers:=True
Columns("A:A").ColumnWidth = 15
Columns("B:B").ColumnWidth = 18
Columns("B:B").NumberFormat = "d/m/yyyy h:mm:ss"
Columns("C:E").NumberFormat = "0.00"
End Sub

Als je Ask_for_File draait zou het programma precies moeten doen zoals jij in gedachten had (althans dat hoop ik dan :P ).

Met vriendelijke groet,

Tilly
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan