MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 12.10.2017, 19:48   #1
firela112
MOF User
MOF User
Standard Acc2016 - Excel export

Hi,
hab folgenden Code bei click Button:
Code:

Private Sub ExcelRecordset_Click()
Dim oExcel As Excel.Application, DB As DAO.Database, RS As DAO.Recordset, I As Long
  On Error Resume Next
  Err.Clear
  Set oExcel = GetObject(, "Excel.Application ")
  If Err.Number <> 0 Then Set oExcel = CreateObject("Excel.Application")
  On Error GoTo 0
  With oExcel
    .Visible = True
    .Workbooks.Add
    .ActiveSheet.Name = CStr(Me!Blatt)
'    Set RS = Me.RecordsetClone
    Set DB = CurrentDb
    Set RS = DB.OpenRecordset("qryAdresse", dbOpenSnapshot)
    If Me!Spaltenk Then
      For I = 0 To RS.Fields.Count - 1
        .Cells(1, I + 1) = RS.Fields(I).Name
      Next I
      .Range("A2").Select
    Else
      .Range("A1").Select
    End If
    .Selection.CopyFromRecordset RS
    If MsgBox("Speichern?", vbYesNo + vbQuestion) = vbYes Then
      .ActiveWorkbook.SaveAs Me!FName
    Else
      .ActiveWorkbook.Close SaveChanges:=False
    End If
    .Quit
  End With
End Sub
Dabei hab ich noch 2 Textfelder: Blatt und FName
und ein Kontrollkästchen "Spaltenk"
Abfrage lautet "qryAdresse" mit verschiedenen Feldern.
Ich muss dazusagen, dass ich mir das Beispiel von der Homepage:
https://dbwiki.net/wiki/Access_Beispieldatenbanken
geholt hab (AccessToExcel). Mit diesem Beispiel funktionierts auch.
Jedoch wenn ich jetz diesen Code in mein Formular reinhole kommt Fehler:
Fehler beim Komplimieren: Benutzerdefinierter Typ nicht definiert.

Wo isn da der Fehler? (Fehler zeigts bei "oExcel As Excel.Application" in der ersten Zeile an)
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 19:59   #2
daolix
MOF User
MOF User
Standard

Hallo
hast du im VBA-Editor den Verweis auf die Excel XX.0 Object Libary gesetzt?

__________________

(K)ein Plan von nix
daolix ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 19:59   #3
Nouba
MOF Guru
MOF Guru
Standard

Verwende Dim oExcel As Object.
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 20:00   #4
ebs17
MOF Guru
MOF Guru
Standard

Hast Du einen Verweis auf Excel gesetzt? Sowie einen auf die Access Database Engine?

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 20:08   #5
firela112
Threadstarter Threadstarter
MOF User
MOF User
Standard

ne hab i net, muas aber dazusagen, kenn mich damit noch nicht so aus, wo muas ma des setzen?

Hat sich erledigt: Dim oExcel As Object
des wars merci

Geändert von firela112 (12.10.2017 um 20:10 Uhr).
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 21:07   #6
Nouba
MOF Guru
MOF Guru
Standard

Manchmal helfen auch ein paar Kommentare, um den Code zu verstehen.
Code:

Private Sub ExcelRecordset_Click()
   Dim oExcel As Object
   Dim rs As DAO.Recordset
   Dim ExcelWarGeoeffnet As Boolean
   Dim i As Long

   On Error Resume Next
   'versuche laufende Excel-Instanz zu 'greifen'
   Set oExcel = GetObject(, "Excel.Application ")
   If Err.Number <> 0 Then
      'lege neue Excel-Instanz an
      Set oExcel = CreateObject("Excel.Application")
   Else
      'Excel war bereits geöffnet
      ExcelWarGeoeffnet = True
   End If
   On Error GoTo 0

   With oExcel
      'muss nicht, darf aber sein
      .Visible = True

      'neue Mappe
      With .Workbooks.Add

         With .ActiveSheet
            'Blatt umbenennen
            .Name = Me.Blatt
 
            'Recorset öffnen
            Set rs = CurrentDb.OpenRecordset("qryAdresse", dbOpenSnapshot)

            'Spaltenüberschriften verwenden?
            If Me.Spaltenk Then
               'Überschriften ...
               For i = 0 To rs.Fields.Count - 1
                  '... in die erste Zeile und Spalte i + 1 schreiben,
                  'wobei die Feldnamen aus der 0-indizierten Aufzählung
                  'Fields des Recordset-Objekts stammen
                  .Cells(1, i + 1) = rs.Fields(i).Name
               Next
               
               'Daten aus Recordset in Zielbereich kopieren
               .Range("A2").CopyFromRecordset rs
            Else
               'Daten aus Recordset in Zielbereich kopieren
               .Range("A1").CopyFromRecordset rs
            End If
            
            'Recorset schließen
            rs.Close
         End With

         If MsgBox("Neue Excel-Mappe speichern?", _
                   vbYesNo Or vbQuestion) = vbYes Then
            'Mappe unter Dateinamen aus FName speichern und schließen
            .Close SaveChanges:=True, FileName:=Me.FName
         Else
            'Mappe ohne zu speichern schließen
            .Close SaveChanges:=False
         End If
      End With

      'Excel nur schließen, wenn es nicht zuvor geöffnet war
      If ExcelWarGeoeffnet = False Then .Quit
   End With
End Sub
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.