valume91
Goto Top

Access Daten in bestimmtes Excel Feld ausgeben

Wie kann ich einen DS in Access per Button in ein bestimmtes Feld in einer Excel Datei einfügen?

Tag zusammen

Ich habe ein Formular in Access (frm_Hauptfehlermeldung).
Nun soll per Button der aktuelle DS in bestimmte Felder einer Excel Datei eingefügt werden.
Also z.B. :
Fehler1 --nach--> B3
Fehler2 --nach--> C2
usw.

Geht das? Und wenn ja, wie?

Lg Valume

Content-ID: 131219

Url: https://administrator.de/contentid/131219

Ausgedruckt am: 25.11.2024 um 14:11 Uhr

83928
83928 08.12.2009 um 15:30:13 Uhr
Goto Top
Ja geht. Such mal nach "CreateObject" in der Officehilfe. Da ist AFAIK auch ein Codebeispiel.
Ansonsten wär es für eine Antwort nicht schlecht zu wissen welche Versionen Du ......................
Valume91
Valume91 08.12.2009 um 16:16:45 Uhr
Goto Top
Hi abaaba

Erstmal danke für die Antwort!
Ich habe mir den Createobject Befehl mal angesehen. Jedoch werde ich nicht richtig schlau daraus...
Ein konkretes Beispiel wäre nett.

Gruss Valume

Edit:
Ich verwende MS Access 2003 mit Microsoft Visual Basic 6.0
83928
83928 08.12.2009 um 16:23:39 Uhr
Goto Top
Ich schau nachher mal ob ich was finde.
Excel ist auch 2003? Tabelle/Mappe soll neu angelegt werden oder besteht schon?
Valume91
Valume91 08.12.2009 um 16:29:08 Uhr
Goto Top
Hi

Ja Excel ist auch 2003. Tabelle/Mappe Bestehen schon.
Die gewünschten Felder sollen "einfach" aus Access abgefüllt werden.

Gruss Valume
83928
83928 08.12.2009 um 19:26:40 Uhr
Goto Top
Hier der leicht abgeänderte Code aus der Hilfe



Dim xlAnw As Excel.Application
Dim xlBuch As Excel.Workbook
Dim xlArbBlatt As Excel.WorkSheet

Set xlAnw = CreateObject("Excel.Application")
Set xlBuch = xlAnw.Workbooks.Open("c:\dest.xls") 'Die Excel-Datei öffnen
Set xlArbBlatt = xlBuch.Worksheets(1) 'erstes Sheet

xlArbBlatt.Range("A1").Value = "Test" 'In Zelle A1 einen Wert eintragen


xlBuch.Save
xlAnw.Quit

Set xlBuch = Nothing
Set xlArbBlatt = Nothing
Set xlAnw = Nothing


Edit: Du musst unter ->Extras-> Verweise im VBA-Editor ein Hacken bei Mircrosoft Excel Object library (oder so ähnlich) machen
Valume91
Valume91 09.12.2009 um 08:32:49 Uhr
Goto Top
Danke! Ich probiers gleich aus.
Valume91
Valume91 09.12.2009 um 14:58:29 Uhr
Goto Top
Hi abaaba

Hat prima funktioniert! Besten Dank!
Jetzt muss ich noch herausfinden wie ich die im Formular
eingebundenen Endlosunterformulare exportieren kann.

lg Valume
83928
83928 09.12.2009 um 15:22:42 Uhr
Goto Top
Erstell Dir ein Recordset-objekt, fülle es mit Daten und benutze die copyFromRecordset-Methode um die Daten einzufügen.

Hier ein paar Beispielzeilen (aus einem Excel-Makro) was die Daten aus einer Access97-DB holt


Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.ConnectionString = "Data Source=\\Server\Datenbank.mdb"
cn.Open
strSQL = "SELECT * from Blablabla"
With rs
.CursorType = adOpenDynamic
.LockType = adLockPessimistic
.CursorLocation = adUseClient
.Open strSQL, cn
End With
Cells(4, 1).CopyFromRecordset rs
Valume91
Valume91 14.12.2009 um 08:41:49 Uhr
Goto Top
Hi abaaba

Danke für deine Hilfe!
Ich verstehe jedoch nicht ganz:
- Wo soll ich den Code einfügen? Access oder Excel?
- Wenn Excel, wie mache ich das da? Ich hab bisher nur mit Access VBA gearbeitet

Gruss Valume

Edit sagt:
Ich bräuchte das ganze natürlich für Access bzw. Excel 2003, ändert sich dabei am Code etwas?
Valume91
Valume91 14.12.2009 um 09:51:45 Uhr
Goto Top
Hey abaaba

Ich hab jetzt mal was von einem alten Code genommen und diesen angepasst:

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL
Set db = CurrentDb

strSQL = "select * from [Ufrm_Mangelbeschreibung] where [QFall_IDFS]=" & Me.Qnummer  
Set rs = db.OpenRecordset(strSQL)

Passt der Code soweit?
Wie kann ich jetzt den Inhalt dieser Abfrage in Excel exportieren? (in bestimmte Felder wie gewohnt)
83928
83928 14.12.2009 um 10:05:28 Uhr
Goto Top
Hallo,
ich versuchs mal auf die Schnelle, da grade wenig Zeit.

Du hast Dir in Access VBA ja schon ein Recordset erstellt. Nun einfügen mit der "copyFromRecordset". Ist eine Methode vom (Excel)-Range Objekt. Kannst Du via Access über den Verweis "Microsoft Excel libary" zugänglich machen (s.o)


Dim xlAnw As Excel.Application
Dim xlBuch As Excel.Workbook
Dim xlArbBlatt As Excel.WorkSheet

Set xlAnw = CreateObject("Excel.Application")
Set xlBuch = xlAnw.Workbooks.Open("c:\dest.xls") 'Die Excel-Datei öffnen
Set xlArbBlatt = xlBuch.Worksheets(1) 'erstes Sheet

xlArbBlatt.Range("A1").CopyFromRecordset rs
Valume91
Valume91 14.12.2009 um 10:17:18 Uhr
Goto Top
abaaba mein Held!!
Funktioniert einwandfrei!

xlArbBlatt.Range("A1").CopyFromRecordset rs
War das was ich noch benötigte!

Nochmals vielen Dank!

Gruss Valume