4.9k Aufrufe
Gefragt in Datenbanken von
Halli hallo!
ich weiss, das thema ist veraltet etc.pp aber mein problem ist, dass ich KEINE ahnung vom programmieren hab... habe versucht mit all den im Netz kursierenden Codeschnipsel was brauchbares zu basteln, jedoch ohne jegliche erfolg...

Die idee ist die:
Ich habe in meiner Access Datenbank verschiedene Angaben zu Kunden und Aufträgen jener. Nun möchte ich es möglich machen, die nötigen Angaben, die auch im Access vorhanden sind (wie etwa Name, Vorname, Abteilung, Adresse) in unsere Lieferscheinvorlage einzubauen... sodass wir am ende per Knopfdruck einen Lieferschein offen haben mit der entsprechenden Anschrift...
Am schönsten wäre dann noch das abspeichern in einen Ordner, evtl auch mit generiertem namen...

Kann mir da jemand helfen??

14 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
Das ist alles kein Problem, ne Menge Arbeit aber und Du kannst nicht erwarten, dass Dir das hier jemand fertig programmiert. Also fang mal an und probier mal alles aus und wenn Du Detailfragen hast, dann fragste hier wieder. Postest am besten den Code hier rein, der nicht so funktioniert wie Du es willst und wir helfen Dir den Fehler zu suchen.

Klar helfen wir Dir dann

Gruß Marie
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo steeh,

um mal eine Idee zu bekommen, poste mal aus welcher Tabelle du welches Feld in welche Zelle eines Sheets einer Exceltabelle einfügen willst. Ideal wären Angaben wie
[list]
- Exceltemplate (also die Datei mit der Excelvorlage)
- Exceldatei (wohin soll die ausgefüllte Vorlage geschrieben werden
- Tabellenname (aus welcher Tabelle bzw. Abfrage sollen die Daten kommen)
- eine Liste mit Sheetname, Spalte, Reihe und Feld aus der Tabelle
[/list] Ich habe da so eine generische Idee...

@Marie: Ich muss dir Recht geben, dass man nicht erwarten kann, hier alles komplett programmiert zu bekommen, aber ich kann so was gerade selbst gebrauchen ;-)

Gruß
Ralf
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Hi Ralf, ich hab sowas, also frag halt konkreter wo Du hängst, gilt auch für Dich :-))

Gruß Marie
0 Punkte
Beantwortet von
ok also meine tabelle wäre TabAnsprechpers, daraus müsste ich Feld Name, Vorname, Adresse, PLZ, Ort übergeben.
Zieldatei wäre in etwa Z:\verwaltung\lieferscheine\vorlage.xls

Name Vorname muss nach A3
Adresse muss nach A4
PLZ Ort muss nach A5

dann sollte das ganze mit der Auftragsnummer abgespeichert werden die aus TabAuftagsNr Feld AuftragsNr geholt wird... also zb 9034.xls
am schönsten wäre, wenn der name schon vorhanden ist einfach ein (1) dazu etc...
tut mir leid, bin momentan noch zu hause, werde meinen bisherigen code ma nachschieben sobald ich im geschäft bin!
0 Punkte
Beantwortet von
ok hier mal, was ich bisher habe... bitte nicht auslachen, ich hab geschrieben, dass ich KEINE ahnung habe von dem mist... ^^
wäre nett wenn ihr mich auf die fehler hinweisen würdet und evtl nen kurzen input für mich habt wie das in dieser schleife überhaupt passiert bzw. passieren sollte... zudem habe ich darin auch nichts hinbekommen weil ich auch die befehle zum ein/auslesen ich kenne :(((((


Private Sub Befehl31_Click()


Sub ExportInExcel(pvarZahl1 As Variant, pvarZahl2 As Variant)
Dim appXL As New Excel.Application
Dim wbDeineDatei As Workbook
Dim wsTabelle As Worksheet
Set wbLS = appXL.Workbooks.Open("C:\tt\Vorlage.xlsx")
Set wsTabelle = wbDeineDatei.Worksheets(1)

With wbLS
.Visible = True
.ActiveSheet.Name = "Arbeitsblatt1"
Set rs = db.OpenRecordset(Me.RecordSource, dbOpenSnapshot)
For i = 0 To rs.Fields.Count - 1
.Cells(1, i + 1) = rs.Fields(i).Name
Next i
.Range("A2").SELECT
.Selection.CopyFromRecordset rs
End With


wbLS.Close
Set wbDeineDatei = Nothing
appXL.Quit
End Sub

End Sub
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Also bevor ich irgendetwas ausprobiere und Dir helfe: Wieso willst Du
Name Vorname muss nach A3
Adresse muss nach A4
PLZ Ort muss nach A5
?

Normal hast Du Zeilenüberschriften in Excel und benutzt Spalte A für Nachname B für Vorname C für PLZ D für Ort.

Du Kannst doch nicht als Zeilenüberschriften Kunde 1 Kunde 2 Kunde 3 machen?

Bitte sag mir zuallererst, ob das auch okay ist, dass die Spalte A für Nachname usw steht, wie oben beschrieben.

Ferner solltest Du das Wort Name nicht benutzen, weil das ein in VBA benutzter Ausdruck ist, also lieber Zuname oder Nachname.

Gruß Marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Ja, jetzt fällt mir ein weshalb Du das so wolltest. Du willst immer nur einen Kunden einlesen in Excel? Ich habe das so gemacht, dass ich beim Öffnen der Exceldatei alle Kunden in ein anderes Arbeitsblatt einlese und dann in excel ein Kombifeld habe, wo ich auswähle wer eine Rechnung oder einen Lieferschein bekommt. Ich kann also dann ohne jedesmal aus Access neu einzulesen 10 Rechnungen schreiben, indem ich die fertige Rechnung abspeichere, das Arbeitsblatt leere und den nächsten Kunden auswähle ohne neu die Daten aus Access auszulesen.

Gruß Marie
0 Punkte
Beantwortet von
das klingt eigentlich ganz cool, aber kansnt du mir davon mal einen code zeigen? wenn ich weiss wo der code hingehört werd ich das wohl hinbringen... aber leider bin ich mindestens auf beispielcode angewiesen... :(
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo steeh,

ich habe mal einen generischen tabellengesteuerten Ansatz implementiert. Unter dem Link findest du eine MS Access 2000 Datenbank "data2excel.mdb"
www.file-upload.net/download-1625218/data2excel.mdb.html
Nach dem Öffnen findest du zwei Menüenträge mit Formularen. Im Formular "frm_excelmain_edit" kannst du neben dem SQL-Statement, der Excelvorlage und der Zieldatei, die Felder aus dem SQL-Statement Feldern in Excel zuordnen, wobei du auch das Sheet angeben musst.
Ich habe zwei Beispiele drin gelassen aber die Vorlagen raus genommen (geht auch ohne Vorlage).
Im zweiten Formular "frmDatenNachExcel" kannst du dann anhand meiner Beispieldaten die Zuordnungen ausprobieren. Falls es zu schwierig ist so ein SQL-Code zu basteln, kannst du auch eine Abfrage graphisch erstellen und den Code im SQL-Modus raus kopieren. Achte aber darauf, dass du das Semikolon am Ende löschst, da ich noch eine Where-Bedingung anfügen muss.
Das Ganze hat keine große Fehlerbehandlung, ist aber offen für nette Erweiterungen.
Eventuell ist das "oversized" für deine Anwendung, allerdings kannst du das Ganze ja individuell abändern. Sag mir bitte, ob du was damit anfangen konntest. Es ist immer so eine Sache, on man meinen Code auch versteht ;-)

Viel Spaß beim Test
Ralf
0 Punkte
Beantwortet von
danke vielmals!! :D ich werde mich gleich mal dahinter machen und dir, sobald ich das mal angeschaut habe feedback geben! =)
...