plakken in access

Status
Niet open voor verdere reacties.

manueld

Gebruiker
Lid geworden
12 feb 2012
Berichten
216
de gebruiker moet een tabel uit een email snel kunnen importeren in een lokale access tabel. de email tabel wordt geselecteerd en gekopieerd. vervolgens wordt access geopend en de data geplakt.

dit gaat goed zolang je plakt in een tabel maar aangezien een tabel niet beschikbaar is in runtime en ik dat ook niet wil moet ik op zoek naar een andere oplossing.

plakken in een formulier steld hogere eisen aan de data. hij vergelijkt de kolomkoppen van de data met de kolomkoppen van access. deze komen helaas niet altijd overeen dus gaat het mis. hoe kan ik toch simpel kopieren en plakken of is er een andere methode. zelf zat ik te denken dat ik met een knop een excel deel open waar in geplakt kan worden en eventueel gemodificeerd kan worden als de kolommen niet goed overeen komen om vervolgens automatisch het in een tabel te importeren.

hoe pak ik dit het makkelijkste aan
 
ik denk dat plakken in excell zodat je de juiste kolommen hebt en dan importeren de snelste oplossing is.

Hoe kan een tabel niet beschikbaar zijn als het formulier wel beschikbaar is. het formulier is toch op een tabel gebaseerd? Misschien kan je werken met een tussen tabel zodat mensen niet direct in je tabel klooien maar plakken in de tussen tabel (of excellsheet) en deze importeren.
 
tabellen zijn niet zichtbaar in runtime. tussentabellen ken ik niet
 
Waarom lees je de tabel niet uit in een matrix, en verwerk je hem verder op je formulier?
Code:
Sub Klipbord()
Dim DataObj As MSForms.DataObject
Dim strArray, strArray2
Dim i As Long, j As Long
Dim myString As String

    On Error GoTo Hell
    Set DataObj = New MSForms.DataObject
    '--> Haal de data uit het clipboard.
    DataObj.GetFromClipboard
    '--> Lees de inhoud van het clipboard in een variabele.
    myString = DataObj.GetText(1)

    '--> Lees de inhoud van de variabele in een matrix; elke rij één regel.
    strArray = Split(myString, vbNewLine)
    '--> Lees de inhoud van de matrixregels in een tweede matrix; elke cel één regel.
    For i = LBound(strArray) To UBound(strArray)
        strArray2 = Split(strArray(i), Chr(9))
        For j = LBound(strArray2) To UBound(strArray2)
            MsgBox strArray2(j)
        Next j
    Next i
    Exit Sub

Hell:
    If Err <> 0 Then Debug.Print Err.Description
End Sub
 
dit ziet er veelbelovend uit. nog enkele vraagjes

op de regel Dim DataObj As MSForms.DataObject komt hij met de fout user defined type not defined. moet ik nog een bepaalde reference laden?

verder zijn arrays voor mij nieuw. hoe kan ik deze dan makkelijk kopieren naar een temptabel op mijn sql server?
 
Je moet en verwijzing naar de Office library aanzetten, anders werkt het inderdaad niet. Al kun je misschien met Late Binding werken, heb ik nog niet geprobeerd.
De matrix gebruik ik om een tekstobject makkelijker te kunnen splitsen. Op basis van regeleindes en hele rij, en per rij de cellen. Die cellen zijn dan dus de waarden die je in je velden overzet. In beginsel zou elke rij een record moeten zijn. En elke cel dus een veld.
De twee matrixen bevatten dus de complete tabel die je wilt inlezen. Aan jou om met een recordset door de matrix te loopen.
De eerste matrix koppel je dan aan een nieuw record, met de tweede vul je de velden.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan