Toon posts:

CSV importeren in Excel m.b.v. macro.

Pagina: 1
Acties:
  • 1.352 views

Vraag


  • 452997
  • Registratie: Maart 2012
  • Niet online
Het probleem
Voor mijn werk ben ik bezig met een Excel bestand, waarin gegevens in .csv-formaat kunnen worden geïmporteerd. De klant levert namelijk elke maand gegevens uit zijn kassasysteem aan in dat formaat. Vervolgens moet die data worden gerecapituleerd en verwerkt in een journaalpost. Dat laatste heb ik al voor elkaar, maar het werkt nu alleen met Excel (*.xlsx) bestanden. Bij het importeren van een .csv-bestand gaat het mis op het splitsen van de kolommen. Deze bestanden zijn gescheiden met ";", maar dit wordt niet herkend. Als ik het .csv-bestand rechtstreeks met Excel open gaat dit wel goed.

Mijn vraag
Via dit forum wil ik vragen of iemand voor mij een stukje script in Visual Basic wil schrijven waarmee een .csv-bestand in Excel wordt geïmporteerd. Van belang is dat de gebruiker een bestand kan selecteren en dat in het script gekozen kan worden op welk blad de data komt te staan, door het wijzigen van de TargetSheet. Uiteindelijk worden namelijk 4 bestanden geïmporteerd die samen de journaalpost maken. Bij het importeren moet Excel dus rekening houden met het scheiden van de kolommen op de plaats waar een ";" staat.

Gebruikte software
- Excel 2010

Voorbeeldscrip import van Excel-bestand
Hieronder de code waarmee een Excel bestand kan worden geïmporteerd. Een soortgelijke werking zou ik graag zien bij het importeren van een .csv bestand.
Sub Verkopen()

Application.ScreenUpdating = False

Dim customerBook As Workbook
Dim filter As String
Dim caption As String
Dim customerFilename As String
Dim customerWorkbook As Workbook
Dim targetWorkbook As Workbook

Set targetWorkbook = Application.ActiveWorkbook

filter = "Excel bestanden (*.xlsx),*.xlsx"
caption = "Open een bestand "
customerFilename = Application.GetOpenFilename(filter, , caption)

Set customerWorkbook = Application.Workbooks.Open(customerFilename)

Dim targetSheet As Worksheet
Set targetSheet = targetWorkbook.Worksheets(2)
Dim sourceSheet As Worksheet
Set sourceSheet = customerWorkbook.Worksheets(1)

targetSheet.Range("A1", "Z99").Value = sourceSheet.Range("A1", "Z99").Value

customerWorkbook.Close

End Sub
Bovenstaande code heb ik ook niet zelf geschreven. Bron.

Alle reacties


  • Montaner
  • Registratie: Januari 2005
  • Laatst online: 16-03 11:45
Dit bedoel je?

http://stackoverflow.com/...xcel-non-active-worksheet

Het volgende stukje code bepaald het scheidingsmechanisme :
code:
1
2
3
4
5
6
7
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False

[Voor 40% gewijzigd door Montaner op 05-09-2016 09:10]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 04-03 13:05

NMe

Quia Ego Sic Dico.

schenksander schreef op maandag 05 september 2016 @ 09:05:
Via dit forum wil ik vragen of iemand voor mij een stukje script in Visual Basic wil schrijven [...]
Nee: Devschuurder werven? Gebruik Vraag & Aanbod!

Daarnaast horen (inhoudelijke!) vragen over Excels en VBS in Client Software Algemeen, niet hier: Waar hoort mijn topic?

Volgende keer zou het fijn zijn als je even de topics bovenaan de lijst met onderwerpen leest voordat je een topic in een bepaald subforum start. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee