Toon posts:

[Excel] gegevens uit bestand halen en in een database zetten

Pagina: 1
Acties:
  • 406 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een groot aantal facturen, welke gewoon een simpel excel bestand is. Hier paste ik altijd gegevens in. Nu wil ik een mailing versturen, en wil alle naam en adresgegevens eruit halen.
Ik wil dit in (bijvoorbeeld) access zetten.. Kan iemand mij iets op weg helpen want ik ben me al meer dan 3 uur aan het orienteren, maar zie door de bomen het bos niet meer.. 8)7

Het mooiste zou zijn dat ik een batchverwerking er in heb zitten. Want het zijn zo'n 500 bestanden.

  • Boss
  • Registratie: September 1999
  • Laatst online: 20:07

Boss

+1 Overgewaardeerd

Dit kan helaas niet automatisch. De keuze om losse facturen in Excel te maken zonder een gecentraliseerd adressenbestand is niet zo'n beste geweest.

Je zal je in VBA/macro's moeten verdiepen. Via wat code in Access kan je één voor één al die facturen openen, gegevens overnemen in tabel en dan weer sluiten.

Als je geen ervaring met VBA hebt en/of dat ook niet wilt hebben kan je denk ik beter in minder tijd gewoon 500 bestanden openen en die gegevens copy-pasten.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Ik had al zo'n donkerbruin vermoeden..
Toen wij het gingen gebruiken (via een sjabloon van microsoft zelf) zat er een extra werkbalk bij genaamd factuur..

Hiermee kon ik de adres gegevens in een ander excel bestand zetten.. maar toen wij de nieuwe versie van het sjabloon gebruikten is dit vervallen..

Tja.. dat copy/paste is een leuk klusje voor een stageloper ;)

[ Voor 6% gewijzigd door Verwijderd op 18-01-2005 10:28 ]


Verwijderd

Volgens mij kun je dit wel voor elkaar krijgen. Gewoon een dirlist van al je 500 excelletjes in een database tabelletje hangen. Deze dan vanuit VB één voor een openen en de inhoud van die cellen (ik neem aan altijd op zelfde posities) NAW naar je database kopieëren.

  • onkl
  • Registratie: Oktober 2002
  • Nu online
Dit kan inderdaad vrij eenvoudig via VBA.
Ik heb toevallig iets equivalents hier nog liggen.
Als alle facturen dezelfde layout hebben, dan gaat dit gewoon werken.
TS, kan je ergens een voorbeeldfactuur een webstek gunnen, dan kan ik er even naar kijken.
offtopic:
Stagairs zijn altijd al de pineut

Verwijderd

Topicstarter
Mooi dat er nog muziek in zit..

Hier een zipje met 2 facturen. De gegevens welke relevant voor mij zijn, zijn de geel gemarkeerde cellen. Als ik dit in een Access bestand heb zitten ben ik uit de brand geholpen.

http://www.leppink.nl/stuff/GoT.zip

Mijn dank is groot onkl _/-\o_ (en anderen welke een blik hebben geworpen op mijn probleem)

[ Voor 24% gewijzigd door Verwijderd op 18-01-2005 13:59 . Reden: @home deed niet .. moest ff andere host versieren ]


  • onkl
  • Registratie: Oktober 2002
  • Nu online
* onkl is tevreden over brouwsel.
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Sub haalfacturen()
Dim pad As String
pad = ActiveWorkbook.Path & "\got\" 'dit even aanpassen aan jou situatie,
'verwijst nu naar de subdir got van de directory waar dit bestand in staat.
Dim ditboek As Workbook
Dim factuurboek As Workbook
Dim schrijfcel As Range
Dim waarleescel As Range
Set ditboek = ActiveWorkbook
Set schrijfcel = ditboek.Worksheets("Data").Range("A1") 'klaarzetten om te schrijven
Set waarleescel = ditboek.Worksheets("Gegevens").Range("B2") 'klaarzetten om te kiken welke cel we moeten hebben.
Set fs = Application.FileSearch 'maak een zoekobject
Dim i As Integer
Dim j As Integer
With fs
    .LookIn = pad
    .Filename = "*.xls" 'zoek alleen excelbestanden
    If .Execute(SortBy:=msoSortByFileName, _
    SortOrder:=msoSortOrderAscending) > 0 Then
       
        For i = 1 To .FoundFiles.Count
            schrijfcel.Offset(i, 0).Value = Right(.FoundFiles(i), (Len(.FoundFiles(i)) - Len(pad)))
            'schrijf de bestandsnaam
            Set factuurboek = Workbooks.Open(.FoundFiles(i))
            j = 1
            Do While waarleescel.Offset(j, 0).Value <> ""
                schrijfcel.Offset(i, j).Value = factuurboek.Worksheets(1).Range(waarleescel.Offset(j, 0).Value)
                j = j + 1
            Loop
            factuurboek.Saved = True 'hiermee houd je Excel voor de gek,
            'Excel "denkt" dat de factuur al gesaved is en gaat zo niet zeuren.
            factuurboek.Close 'sluit het bestand
        Next i
    Else
        MsgBox "Geen bestanden gevonden."
        Exit Sub
    End If
End With
End Sub


Als TS even een e-mail adres dropt, kan ik hem een werkende variant toesturen.

Voor andere geintereseerden: In tabblad Data komen de adresgegevens terecht, in tabblad Gegevens kan je vooraf invullen waar je data te vinden is.
Kolom Cel
1 Bestandsnaam
2 D13 Naam
3 D14 Adres
4 D15 PC
5 F15 Plaats
6 D16 Telefoon

[ Voor 13% gewijzigd door onkl op 18-01-2005 15:41 ]


Verwijderd

Topicstarter
Ik heb weinig kennis van VB maar het ziet er goed uit.. :*)

[edit]

Hij is nu bezig met verwerken en het ziet er goed uit.. Hij heeft er best even werk aan :D

[ Voor 42% gewijzigd door Verwijderd op 18-01-2005 16:45 ]

Pagina: 1