Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Jonny am Oktober 17, 2011, 17:21:18

Titel: Excel Datei importieren und mit vorher mit einen Dialog auswählen
Beitrag von: Jonny am Oktober 17, 2011, 17:21:18
Hallo Leute,
ich habe zwar viele Sachen für alte Versionen gefunden aber nicht das was ich brauche.

Access 2010, Windows 7

1. Ein Dialog zum Auswählen einer Excel-Datei.
2. Import dieser Excel-Datei, Worksheet Tabelle2

Schon mal Danke

Gruß

Johann
Titel: Re: Excel Datei importieren und mit vorher mit einen Dialog auswählen
Beitrag von: DF6GL am Oktober 17, 2011, 17:35:57
Hallo,

mhmm,  wieso "alte Version"?  Welche A2010-Version (32 bit, 64 bit)?


http://dbwiki.net/images/a/aa/AccSampleExcelToAccess.zip

ansonsten such mal hier nach Filedialog und/oder Transferspreadsheet.

Bei 64bit müssen Api-Funktionen besonders deklariert werden.
Titel: Re: Excel Datei importieren und mit vorher mit einen Dialog auswählen
Beitrag von: Jonny am Oktober 17, 2011, 18:03:21
Hallo Franz,
da habe wir uns mal nicht verstanden weil ich mich auch doof ausgedrückt habe.
Für mich ist erstmal wichtig den öffnen-Dialog zu bekommen.

Mit alt meinte ich die Function die so anfängt:
Function GetOpenFileName Lib "comdlg32.dll" _
        Alias "GetOpenFileNameA" (pOpenfilename As _
        OPENFILENAME) As Long
dazu gehört noch eine zweite Function.

Das lief immer ganz gut aber jetzt kommt die allgemeine Fehlermedlung:
Während der Kommunikation der Datenbank mit dem OLE-Server oder Aktive-X Steuerelement ist ein Problem aufgetreten.

Meine Routine läuft mit Xp und 2007 ohne Problemen.
Ach ja so ganz ist das nicht meine sondern habe ich vor Urzeiten mal bekommen.

Gruß
Johann
Titel: Re: Excel Datei importieren und mit vorher mit einen Dialog auswählen
Beitrag von: DF6GL am Oktober 17, 2011, 21:39:41
Hallo,

Welche Ac-Version???
Titel: Re: Excel Datei importieren und mit vorher mit einen Dialog auswählen
Beitrag von: Jonny am Oktober 19, 2011, 17:13:27
Hallo,
vergessen wir mal den Inport aus Excel den bekomme ich hin (war auch nur zur Erklärung gedacht).

Datei auswählen, ich habe diese Function:

Option Compare Database
Option Explicit

Declare Function GetOpenFileName Lib "comdlg32.dll" _
        Alias "GetOpenFileNameA" (pOpenfilename As _
        OPENFILENAME) As Long

Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    Flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As Long
End Type
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_READONLY = &H1
Public Const OFN_HIDEREADONLY = &H4

Public Function DateiOeffnen(Optional Titel, Optional Filter, Optional DefExtension, _
                             Optional AktDir) As String

    Dim strDateiname As String
    Dim strDlgTitel As String
    Dim strFilter As String
    Dim strDefExtension As String
    Dim strAktDir As String
    Dim strNull As String
    Dim OpenDlg As OPENFILENAME

    strNull = Chr$(0)

    strDateiname = String$(512, 0)

    If IsMissing(Titel) Then
        strDlgTitel = "Datei öffnen" & strNull
    Else
        strDlgTitel = Titel & strNull
    End If

    If IsMissing(Filter) Then
        strFilter = "Alle Dateien" & strNull & "*.*" & strNull & strNull
    Else
        strFilter = Filter & strNull
    End If

    If IsMissing(DefExtension) Then
        strDefExtension = strNull
    Else
        strDefExtension = DefExtension & strNull
    End If

    If IsMissing(AktDir) Then
        strAktDir = CurDir$ & strNull
    Else
        strAktDir = AktDir & strNull
    End If

    With OpenDlg
        .lStructSize = Len(OpenDlg)
        .hwndOwner = Screen.ActiveForm.Hwnd
        .lpstrFilter = strFilter
        .nFilterIndex = 1
        .lpstrFile = strDateiname
        .nMaxFile = Len(strDateiname)
        .lpstrInitialDir = strAktDir
        .lpstrTitle = strDlgTitel
        .Flags = OFN_FILEMUSTEXIST Or OFN_READONLY
        .lpstrDefExt = strDefExtension
        If GetOpenFileName(OpenDlg) <> 0 Then
            DateiOeffnen = Left$(.lpstrFile, InStr(.lpstrFile, strNull) - 1)
        Else
            DateiOeffnen = ""
        End If
    End With

End Function

Bei einer Bestehenden DB die mit Acc 2003 erstellt wurde klappt es.
Jetzt habe ich dieses in eine neue DB kopiert Acc 2010 und bekomme folgende Meldung:
Währende der Kommunikation mit den OLE Server oder Aktive-X Steuerelementist ein Problem aufgetreten

Gruß
Johann

Titel: Re: Excel Datei importieren und mit vorher mit einen Dialog auswählen
Beitrag von: DF6GL am Oktober 19, 2011, 19:54:54
Hallo,


soweit ich weiß, gibt es "comdlg32.dll"  nicht mehr in Win 7
oder die dll ist nicht richtig registriert.


Such die Datei im IN , kopier die ins Windows-System-Verezcihnis und registriere die mit regsvr32.exe



Oder benutze API-Funktionen...

Titel: Re: Excel Datei importieren und mit vorher mit einen Dialog auswählen
Beitrag von: Jonny am Oktober 28, 2011, 15:52:38
Hallo,
Entschuldigung dafür das ich mich jetzt erst wieder melde.

Das Problem hat sich in Luft aufgelöst.
Ich habe lediglich eine neue Schaltfläche erstellt, den Code reinkopiert und alles läuft.

Was aber war die Ursache.
Das Form wurde nicht von mir erstellt und war mit den neuen Navigationsformular (Acc 2010) ausgestattet.
Hier gab es einen Button der das Einlesen erledigen sollte. Dahinter war ein Makro das nicht laufen konnte.
Ich habe das Makro gelöscht und durch meinen Code ersetzt.
Irgendwie ist aber scheinbar was vom alten Makro (oder was auch immer) hängen geblieben und hat den Fehler
verursacht.

Naja ich mag diese Navigation eh nicht und werde weiterhin mit schöne Menüformulare arbeiten.

Gruß

Johann