Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Projekt in Access 2010 (Einlesen von excel daten,auswertung usw.)

Begonnen von DerWoHilfeBrauch, Januar 19, 2011, 13:24:04

⏪ vorheriges - nächstes ⏩

DerWoHilfeBrauch

Hallo,

ich habe im Rahmen meines Studiums ein Projekt aufs Auge gedrückt bekommen, das zwar ziemlich spannend ist, aber auch etwas meine Kenntnisse überschreitet.
Ich habe zwar schon mit Access und VBA gearbeitet, aber das ging nicht über einfache Abfragen und das erstellen von einfach Berechnungsprogrammen mit Inputboxen etc. hinaus.

Das Projekt lässt sich folgendermaßen beschreiben:

Es handelt sich um Fragebögen die überer mehrer Tabellenblätter einer Excel Datei verteilt sich, alle gehören zu einem Kunden. Die Antworten werden in durch Auswahl einer Box gegeben. Als erstes muss der Kunde die Wichtigkeit eines Themas bestimmen und danach wie zufrieden er mit der Ausführung in diesem Punkt war. Ab ende gibt es auch die Möglichkeit von der Abgabe eines Fließtextes.

Nun geht es als 1. darum, die Daten in einer Access Datenbank abzuspeichern (am besten wäre es, wenn man den gegeben antworten gleich einen Wert zuweisen kann und nicht nur "Wahr" oder "Falsch").
Dann sollen diese Daten ausgewertet werden und zwar auf verschiedene arten und weißen.
Es soll die Möglichkeit gegeben sein, Einzelne Fragebögen auszuwerten, aber auch mehrer auf einmal (z.b. von einem ganzen Monat).
Die Auswertung soll erstmal in die Frageblöcke getrennt werden, d.h. Darstellung von Wichtigkeit/Auswahl und dem verhätlniss von Antworten/Fragen in %.
Nachdem die einzelnen Blöcke ausgewerten wurden sind, sollen die Gesamtergebnisse angezeigt werden (z.b. Frageblock A: Summe der beantworteten Fragen(auch in %), durschnitt der Erfüllung, durchschnittliche wichtigkeit des Blocks). Und auch die Textfelder sollen hier eingefügt werden.
Dann wird eine Genaue Analyse erstellt bei der die Wichtigkeit und die Zufriedenheit miteinander verglichen und angezeigt werden und die Abweichung angegeben wird, für jeden aufgabenblock.
Dann gibt es einer Übersicht über die insg. Zahl der beantworteten Fragen und der Durchschnittlichen bewertung der einzelnen Frage und der Errechnung das insg. Durchschnitts.
Und zum grönden Abschluß Wird eine Gesamt-Übersicht erstellt, die in einem Diagramm die Wichtigkeit der Zufriedenheit gegenüberstellt. Und noch einige anderen Daten beeinhaltet, die zur Vorlage bei anderen Instanzen im Betrieb dienen sollen, und aufschluß darüber geben, ob und wo Handlungsbedarf besteht.



Ich weiß, ich habe das nun alles sehr ausführlich beschrieben, ich denke so ist es einfach zu verstehen um was es genau geht. Was gefordert ist und mathematisch dahinter steht ist mir voll und ganz klar, mir ist nur leider völlig unklar, wie ich die Daten in Access einlesen kann und besonders wie ich die Anzeige der Ergebnisse darstellen kann. Ich hoffe das mir jemand bezüglich des Zeitaufwandes und dem benötigten Know-How weiterhelfen kann, bzw. ob das überhaupt durch Access und VBA lösbar ist.


Vielen dank schonmal für das durchlesen und ich bin dankbar für jee Hilfe!

oma

Hallo HilfeBrauchender,

zu den ganzen Komplex könnte ich eniges sagen,da ich ständig Marktforschung betreibe u. Fragebögen in Access erstelle und u.a. mit Access auch Auswertungen mache.

Ich weiß nur nicht. wie ich helfen soll, da du eigentlich keine klare Frage gestellt hast!

Gruß Oma
nichts ist fertig!

DerWoHilfeBrauch

Also ich bin nun soweit, das ich beliebige Felder einer Excel Tabelle in Access importieren kann.
Dort ist nun ein Fehler aufgetreten, bei dem ich nicht weiß wie ich ihn beheben kann.
Auf dem Fragebogen sind die Zellen nicht mit "A1"usw. nummeriert sondern mit "Z1S1" und wenn ich in meinem code

rs![Verfahren] = xlSht.Range("Z6S6").Value eingebe, gibt er mir "Die Methode "Range" für das Objekt _Worksheet ist fehlgeschlagen" aus.
Wie kann man das beheben?


Eine weiter Frage die sich mir gestellt ist, wie ich meine DateiÖffnen Funktion:

Option Compare Database
Option Explicit



Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
    "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
   
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
    "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath$) As Long
   
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
    "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
   
Declare Function GetSaveFileName Lib "comdlg32.dll" Alias _
    "GetSaveFileNameA" (pSavefilename As SAVEFILENAME) As Long
   
Private Type BROWSEINFO
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iTmage As Long
End Type

Private 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

Private Type SAVEFILENAME
    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 Const BIF_RETURNONLYFSDIRS = &H1





Public Function VerzeichnisWählen(Title$, XHwnd As Long) As String
    Dim x As Long, BInfo As BROWSEINFO, dwIList As Long
    Dim szPath$, wPos%

    With BInfo
        .hOwner = XHwnd
        .lpszTitle = Title
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With
    dwIList = SHBrowseForFolder(BInfo)
    szPath = Space$(512)
    x = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
    If x Then
        wPos = InStr(szPath, Chr(0))
        VerzeichnisWählen = Left$(szPath, wPos - 1)
      Else
        VerzeichnisWählen = " "
    End If
End Function

Public Function DateiOeffnen(Optional Titel, Optional Filter, _
                             Optional DefExtension, Optional Aktdir) As String
    Dim strDateiName$, strDlgTitel$, strFilter$
    Dim strDefExtension$, strAktDir$, strNull$
    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
    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 = 0
        .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


In einer Variablen speichern kann, irgendwie stell ich mir dabei selber ein Bein.
(Ich würde gerne den ausgewählten Datei Namen in einer Variablen speichern die ich dann beim Import der Excel datein benutzen kann sodass ich nicht vorher einen bestimmten Dateipfad festlegen muss)


Desweiteren Frage ich mich wieviel Wissen notwendig ist um mit VBA in Access ein Diagramm in Form eines Säulendiagramm´s (4*2Säulen) zu erstellen.


Ich hoffe es ist nun etwas konkreter wo gerade die Probleme liegen.

DerWoHilfeBrauch

Okay, das range problem wurde gelöst.

Nun noch die Frage, wie ich den richtigen Wert aus dem Auswahl Kästchen rausbekomme....


Das sieht wie folgt aus:

Sehr wichtig            unwichtig
[ ]      [ ]         [ ]   [ ]    [ ]

und ein kästchen halt ausgewählt, ich denke mal ihr wisst schon wie ich das meine^^

oma

Hallo,

so richtig weiss ich nicht, was du mit dem Code anfangen willst. Wozu brauchts du eine API-Funktion; ich denke wir sind in ACCESS!

Der "normaleW Weg:

du erstellst eine Tabelle tblProjektX, in der für jede Frage ein Feld angelegt wird; die Felder mit Felddatentyp
Text        - für für offene Fragen (also zum Erfassen von Text-Stichpunkte, evt. Memofeld)
Zahl        - für Bewertungen, Skalen
Ja/Nein   - für Mehrfachnennungen bei einer Frage (für jede Antwortmöglichkeut ein Feld

Dann kannst du Formulare zur Erfassung der Fragen erstellen; am besten immer für eine Frage ein Formular u. komfortables Blättern zwischen den Formularen ( Button mit Weiter, Zurück, Abbruch).

Mit geeigneten Gestaltungen der Abfragen sind dann die von dir angeführten Analysen alle einfach zu machen.

Die Frage , wie du den richtigen Wert aus deinem Auswahlkästchen bekommst, ist für das Beispiel falsch!

Wenn die Frage nach Wichtigkeit erfolgt, erstellt man mit einem Zahlenfeld in dem Formular ein Optionsfeld, so das nur ein Wert eingegeben werden kann. Die Auswertung ist dann mit den Zahlenfeld einfach, da 1: sehr wichtig und 5 eben unwichtig entspricht (ein Ja/Nein-Feld würde auch beim Eingeben Fehler zulasssen!)

Anders bei Mehrfachnennungen; hier kann das angewählte Feld in Abfragen mit Ja oder -1 bzw. mit 0 oder Nein analysiert werden.
In VBA entspricht -1 = Ja und 0 = Nein

Gruß Oma
nichts ist fertig!