Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: wuffwuff2003 am August 10, 2013, 10:23:50

Titel: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 10, 2013, 10:23:50
Ich habe mal eine allgemeine Frage: Gibt es keinen Site z.B. wo man sich einen VBA Code (um)schreiben lassen kann, das kann auch was kleines kosten, ist so etwas bekannt, (z.B. Studenten oder Hobbyprogrammierer) für die die im VBA Schwierigkeiten haben. Ich lese zwar ein Buch nach dem andern aber bin immer noch sehr weit entfernt vom richtigen VBA Schreiben.
Danke
Lg
Titel: Re: VBA programmieren lassen
Beitrag von: DF6GL am August 10, 2013, 10:36:43
Hallo,


Ich habe  wenig Zeit im Moment, aber wir können es ja mal andenken...

http://www.access-o-mania.de/forum/index.php?topic=6969.msg84854#msg84854
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 10, 2013, 10:49:13
Hallo,

Oh das wäre super, es ist auch nichts was jetzt wegläuft, ich versuche dann alle Daten mal zusammen zu nehmen, und eine ausführliche Beschreibung aufzusetzen, sowie ein Access Formular zu gestalten, wie es in etwa in meiner Datenbank jetzt aussieht, sobald ich das dann alles zusammen habe würde ich das per Email dann an Sie senden. Wird aber frühestens Montag dann werden. Vielen Dank

Titel: Re: VBA programmieren lassen
Beitrag von: DF6GL am August 10, 2013, 10:53:45
Hallo,
ok,

wir müssen aber am Besten telefonisch dann vorher die Aufgabe analysieren.
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 10, 2013, 10:58:58
Ja das ist kein Problem,

Ich setze übers Wochenende wie ich jetzt Zeit kriege eine kleine Beispieldatenbank auf spätestens am Montag, und lasse Ihnen dann alles per Email zukommen, sowie auch meine Kontaktdaten, damit wir das abklären können, kein Problem, jetzt schon mal ein riesiges Dankeschön :)

Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 13, 2013, 14:14:57
Hi,

Ich habe die Dateien nun mal aufbereitet und per Email an Sie geschickt.

Vielen Dank

Mfg
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 23, 2013, 14:13:55
Hallo,
Ich habe noch ein Problem im Modul als ich jetzt die Datei in meine Datenbank hineinsetzen wollte. Beim öffnen der Datei über Button startet der Debugger mit folgender gelben Zeile

Public Function Filepicker() As String

    Dim fd As FileDialog        <------ wird gelb markiert mit begründung: Benutzerdefinierter Typ nicht definiert

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    Dim vrtSelectedItem As Variant

Wo hab ich da was vergessen

Danke
Titel: Re: VBA programmieren lassen
Beitrag von: DF6GL am August 23, 2013, 15:36:49
Hallo,

es muss der Verweis auf die MS Office-Library gesetzt werden.


(VBA-Editor/Extras/Verweise)
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 23, 2013, 15:50:57
Und wo muss ich die eingeben , ist jetzt mit Verweis der Pfad gemeint?

Oder anders formuliert, das heisst ich muss dieses Feld anhaken?  

Ich habe hier 3 zur Auswahl
MS Office 14.0 Authorization Control
MS Office 14.0 Object Library (denke mal diese hier ist gemeint)
MS Office Euro converter
Titel: Re: VBA programmieren lassen
Beitrag von: DF6GL am August 23, 2013, 16:00:06
Hallo,


genau, den Haken bei  MS Office 14.0 Object Library setzen.
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 23, 2013, 16:02:22
Ok danke werde das Montag mal versuchen.
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 26, 2013, 10:44:03
Hallo,

So langsam komme ich weiter :) Das mit dem Verweis hat mal weitergeholfen, jetzt stehe ich beim Drucken vor einem Problem, heisst Excel Datei wird aufgerufen, aber der Code springt dann beim Drucken auf GOTO_ERROR mit dem Fehler:

3265 Element in dieser Auflistung nicht gefunden

Was könnte das noch sein?

Danke
Titel: Re: VBA programmieren lassen
Beitrag von: DF6GL am August 26, 2013, 10:51:45
Hallo,

das heißt, dass ein Feld (das Element)  z. B. in einem Recordset nicht existiert....  Poste mal den ganzen Code dieser Prozedur.
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 26, 2013, 11:19:00
Ok Vielen Dank

Jetzt hab ich den Fehler mal beseitig, jetzt läuft der Code durch nur druckt er noch nicht weder PDF noch auf dem Drucker, mal kucken was das noch sein kann :)

Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 26, 2013, 11:50:38
Ich komm hier echt nicht weiter, die Excel Datei wird immer geöffnet und geschlossen aber es kommt nicht zum Druck, das ist echt Wahnsinn.  :'( Wenn es mir möglich wäre die Datenbank zu Ihnen zu mailen würden Sie den Fehler bestimmt finden, aber da die Datenbank aufgeteilt ist in Frontend und Backend, wird das Ihnen wahrscheinlich nicht helfen, denn ich habe schon mal probiert beides auf einen anderen Rechner zu setzen, aber dann funktioniert nichts mehr weil er die Backend nicht mehr findet.
Titel: Re: VBA programmieren lassen
Beitrag von: DF6GL am August 26, 2013, 17:34:15
Hallo,

ok, mail mir BE unf FE an die bekannte Abdresse.  Die Verknüpfungen bekomm ich schon hin...
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 27, 2013, 20:02:07
Hallo, Ich habe es an die private Email von Ihnen gemailt. Einmal FE / BE / Excel Datei

Erklärung steht in der Mail.

Danke
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 28, 2013, 10:43:19
Hi,

Jetzt klappts nachdem ich es geändert habe, jetzt bleibt ein letzter kleiner Wunsch. Es gibt Leute die haben keinen Schichtplan, und wenn ich ALLE auswähle dann werden die mitgedruckt. Wo kann ich da noch ein Kriterium einsetzen dass nur die gedruckt werden deren ROULEMENT Feld nicht LEER ist? Oder ich sage mal so, es wäre besser er würde sogar die Abfrage ausfragen, denn auch die Mitarbeiter mit TMxx müssten rausgefiltert werden.

Mfg

bspw so, aber das löst einen Fehler aus:

Private Sub cmbSPNR_AfterUpdate()
Dim strSQL As String

If Me!cmbSPNR = 0 Then
    strSQL = "select * from tbl_Uebersicht order by [Roulement] WHERE Roulement >=22 , [Nomcomplet]"
Else
    strSQL = "select * from tbl_Uebersicht where Roulement = " & Me!cmbSPNR & " order by [Roulement], [Nomcomplet]"
End If

Me!frm_listeagents_tscopie.Form.RecordSource = strSQL
End Sub
Titel: Re: VBA programmieren lassen
Beitrag von: DF6GL am August 28, 2013, 13:55:29
Hallo,

vermutlich:

Private Sub cmbSPNR_AfterUpdate()
Dim strSQL As String

If IsNull(Me!cmbSPNR) Then
    strSQL = "select * from tbl_Uebersicht order by [Roulement] WHERE Roulement >=22"     'warum hier 22 ??
Else
    strSQL = "select * from tbl_Uebersicht where Roulement = " & Me!cmbSPNR & " order by [Roulement]"
End If

Me!frm_listeagents_tscopie.Form.RecordSource = strSQL
End Sub



"TMxx"  werden doch sowieso nicht gedruckt, solange dieser Prefix nicht auch in tblRoulement mit vorhanden ist...
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 28, 2013, 14:27:48
Ja Sie haben Recht das war ein Gedankenfehler von mir er überprüft ja das Prefix TS stimmt. Die 22 ist die ID aus der Tabelle Roulement, da steht 22 für TM10 23 für TM11 usw.
Ich bekomme nämlich einen Fehler wenn ich "ALLE" drucken will und zwar:
3075 Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ID='
ich dachte das wäre darauf zurückzuführen denn er macht den Fehler nur unter "ALLE"
Titel: Re: VBA programmieren lassen
Beitrag von: DF6GL am August 28, 2013, 14:39:42
Hallo,


ok, habe nochmal die DB angesehen. Dort wird "Alle" mit "0" dargestellt, so dass es so (wie vorher) lauten muss:

If Me!cmbSPNR = 0 Then
   strSQL = "select * from tbl_Uebersicht order by [Roulement] WHERE Roulement >=22"    
Else
   strSQL = "select * from tbl_Uebersicht where Roulement = " & Me!cmbSPNR & " order by [Roulement]"
End If



PS: sehe gerade, dass die Einträge in tbl_roulement nicht korrekt sind und so laten müssen:

ID  Roulement  Prefix
22       10           TM
23       11           TM
24       12           TM



so denn auch diese Bezeichnungen als Excel-Sheet-Namen existieren und gedruckt werden sollen.


In der DB zeigt diese Tabelle die Benamsungen der Excel-Sheets, die  gedruckt werden dürfen. Ist der Name eines Excel-Sheet nicht in der Tabelle aufgeführt, wird das entspr. Sheet nicht gedruckt. Das  Kriterium ">=22"  kann entfallen (u. a. auch deshalb, weil es "falsch herum" ist und eigentlich "<22"  heißen müsste, wenn alle Roulements mit ID <22 gedruckt werden sollen. 


Wenn aber in tblRoulement auch Einträge vorhanden sein sollen, die grundsätzlich nicht für einen Druck des entspr. Excelsheets vorgesehen sind, erfordert das ein weiteres Feld "druckbar" , mit dem eben dies gesteuert wird.



Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 28, 2013, 17:48:57
Das ist ja dann so wie ich es anfangs auch gemacht habe, nur dass ich die Fehlermeldung da bekomme. Oder liegt das an der 2. Ordung vom [Nomcomplet]?
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 30, 2013, 10:11:51
Hallo,
Sorry ein bisschen Verspätung aber lag gestern flach, es ist so wie sie es sagen: Wenn ich ALLE auswähle müssten alle Sheets ausgedruckt werden. Da die Tabelle Roulement aber auch in anderen Formularen genutzt wird, ist es auch wichtig dort Einträge einzutragen wie z.B. TM10 TM11 usw. Diese gelten nämlich für Lehrlinge, die haben keinen festen Schichtplan (Roulement). Die haben daher keine Sheets, und müssen vom Druck ignoriert werden. An sich müsste man festlegen können: Wenn Prefix nicht gleich null ist, dann sollte er auf das entsprechende Excel Sheet zurückgreifen. Ist das Prefix dann Null, dann müsste dies vom Druck ausgeschlossen werden. Somit könnte man die Prefix Spalte gleichzeitig nutzen um die Option "Drucken JA/NEIN" zu nutzen.
Mfg
Titel: Re: VBA programmieren lassen
Beitrag von: wuffwuff2003 am August 30, 2013, 10:57:33
Ich habe es jetzt mal so gelöst. Ich habe eine Abfrage erstellt mit den Spalten Nomcomplet, Matricule, Roulement, Case. Ich habe hier bei Roulement die Kriterie eingebaut ; <22
Im SQL Code habe ich dann die Abfrage genommen:
If Me!cmbSPNR = 0 Then
    strSQL = "select * from qry_tscopie order by [Roulement], [Nomcomplet]"
Else
    strSQL = "select * from qry_tscopie where Roulement = " & Me!cmbSPNR & " order by [Roulement], [Nomcomplet]"
End If
Demnach scheint es nun zu klappen mal abwarten :)