• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bestandsnaam in macro VB Excel

Status
Niet open voor verdere reacties.

anton44

Verenigingslid
Lid geworden
20 mei 2005
Berichten
1.780
Ik wil mijn macro optimaliseren die ik gebruik in Excel 2003.
De vraag is hoe ik de bestandsnaam daarin "Afrekening boekjaar 2008.xls" kan ophalen uit een cel van het tabblad "import" i.p.v. expliciete vermelding in de macro.


Sub Ophalen()
' Ophalen Macro
Application.ScreenUpdating = False 'Voorkomt flikkeren van het beeldscherm
BESTAND = Sheets("import").Range("G2").Value
Workbooks.OpenText Filename:=BESTAND, Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1)), DecimalSeparator:=".", ThousandsSeparator:=" ", _
TrailingMinusNumbers:=True
Columns("A:A").ColumnWidth = 14.71
Range("J1").Select
Selection.CurrentRegion.Select
Selection.Copy
Windows("Afrekening boekjaar 2008.xls").Activate
Sheets("import").Select
Rows("20:20").Select
ActiveSheet.Paste
Range("A20").Select
Sheets("import").Select
End Sub
 
Verplaatst Visual basic for Applications (VBA) --->>Excel.
 
Code:
Sub Ophalen()
' Ophalen Macro

Dim BESTAND As String

Application.ScreenUpdating = False 'Voorkomt flikkeren van het beeldscherm
BESTAND = Sheets("import").Range("G2").Value
Workbooks.OpenText Filename:=BESTAND, Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1)), DecimalSeparator:=".", ThousandsSeparator:=" ", _
TrailingMinusNumbers:=True
Columns("A:A").ColumnWidth = 14.71
Range("J1").Select
Selection.CurrentRegion.Select
Selection.Copy
Windows("Afrekening boekjaar 2008.xls").Activate
Sheets("import").Select
Rows("20:20").Select
ActiveSheet.Paste
Range("A20").Select
Sheets("import").Select
End Sub

Wat staat er op dit moment in die cel G2?
 
Momenteel is de cel leeg. Ik kan daar al of niet handmatig de bestandsnaam in plaatsen.
 
Ik kan daar al of niet handmatig de bestandsnaam in plaatsen.

Vul die cel dan eens en voer de code uit.

Geef wel het pad mee op in de cel, bv. C:\files

En als ik mij niet vergis ook de .xls achteraan.

Wigi
 
Wigi, welke code bedoel je ?
Ik zie dat je in de macro alleen Dim BESTAND As String toegevoegd hebt.
De bestandsnaam staat er nog expliciet in.
 
De bestandsnaam haal je toch op uit de cel?

Code:
BESTAND = Sheets("import").Range("G2").Value
 
Ik moet me corrigeren. In G2 staat de naam van het tekstbestand (mut.txt) waarvan de inhoud geimporteerd moet worden in het bestand afrekening boekjaar 2008.xls.
Deze laatste wil ik nu niet vernoemd hebben in de macro.
 
Ik vrees dat ik de vraag niet volledig begrijp. Maar er van uitgaande dat bovenstaande code in het workbook "afrekening boekjaar 2008" staat, en van daaruit getriggerd wordt, kan je een workbook variabele definieren, en deze laten verwijzen naar het bestand "afrekening boekjaar 2008" en dan verder in de code gebruiken wanneer je naar deze file wilt verwijzen in de code

vb.
Code:
Dim wbAfrekening as Workbook

Set wbAfrekening=ThisWorkbook

nu staat in de variabele wbAfrekening de naam van het workbook vanwaar de code wordt opgestart (als ik de opzet doorheb is dat "afrekening boekjaar 2008")

Vervolgens kan je in onderstaande code deze wijziging aanbrengen:

Code:
wbAfrekening.activate

ipv

Code:
Windows("Afrekening boekjaar 2008.xls").Activate
 
Uitstekend advies !
Hartelijk dank.
Kunt u mij een boekwerk o.d. adviseren waar ik op een eenvoudige manier meer te weten kom van VB ?
 
Uitstekend advies !
Hartelijk dank.
Kunt u mij een boekwerk o.d. adviseren waar ik op een eenvoudige manier meer te weten kom van VB ?

Anton

Het is VBA, niet VB. (dat is iets anders)

Voor de rest: zoek het forum eens af, dan kan je zeker info daarover vinden.
 
Hartelijk dank !
Ik zal de vraag nu als opgelost sluiten
 
Een goed boek weet ik eigenlijk niet. Ik heb, net als velen andere vermoed ik, VBA geleerd door zelf te proberen, het internet als naslagwerk te gebruiken (thanks google :thumb:) en te kijken naar anderen hun werken (en dus code). Ik ben dan ook geen programmeur op zich, en zal misschien wel een paar lijntjes meer code nodig hebben dan een echte IT specialtist, maar dat mag de pret niet bederven.

Op het net vind je wel een paar goede instaptutorials.

Naast het "kennen" van alle commando's is ook je analytisch vermogen van belang bij het uitwerken van je Excel (VBA) problemen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan