collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 76
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 3
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13976
  • stats Beiträge insgesamt: 66568
  • stats Themen insgesamt: 8973
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Bericht aus Access von Excel öffnen  (Gelesen 269 mal)

Offline itaflo

  • Access-User
  • *
  • Beiträge: 81
Bericht aus Access von Excel öffnen
« am: Mai 29, 2018, 15:43:58 »
Hallo,

ich würde gerne Wissen ob es möglich wäre ein Bericht bzw. eine Befehlsschaltfläche von Access direkt in Excel zu betätigen?

Gruß
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1248
Re: Bericht aus Access von Excel öffnen
« Antwort #1 am: Mai 29, 2018, 17:56:35 »
Im Prinzip kannst Du Dein Access-Frontend von Excel aus automatiseren. Um guten Stil zu bewahren, sollte man den Code, der sich hinter dem Knopf-Klick verbirgt, in einer öffentlichen Methode zugänglich machen und den Knopf diese Methode aufrufen lassen. Mittels Automation kann diese öffentliche Methode des Formulars aufgerufen werden.
In einem Excelmodul:Sub Test()
   With GetObject("c:\temp\Datenbankname.mdb") 'oder ..\Datenbankname.accdb
      'Mitarbeiterformular öffnen
      .DoCmd.OpenForm "frmMitarbeiter"      'Mitarbeiterformular wieder schließen
      .Forms("frmMitarbeiter").SchliesseFormular      'Datenbank + Access schließen ohne Design-Änderungen abzuspeichern
      .Quit 2 'SaveNone
   End With
End Sub
Im Access-Formularmodul:'Diese Methode wird von Excel aufgerufen
Public Sub SchliesseFormular()
   If Me.Dirty Then
      MsgBox "Bearbeitete Daten vor dem Schließen des Formulars speichern?", vbExclamation
   Else
      DoCmd.Close acForm, Me.Name, acSaveNo
   End If
End Sub

Private Sub cmdClose_Click()
   SchliesseFormular
End Sub
Grüße von der (⌒▽⌒)
 

Offline itaflo

  • Access-User
  • *
  • Beiträge: 81
Re: Bericht aus Access von Excel öffnen
« Antwort #2 am: Mai 30, 2018, 06:20:29 »
Hallo,

das funktioniert ja schon mal sehr gut  :)

jetzt fehlt nur noch die Funktion mit der ich direkt aus Excel aus dem geöffnetem Formular noch eine Befehls Schaltfläche betätigen kann.
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1248
Re: Bericht aus Access von Excel öffnen
« Antwort #3 am: Mai 30, 2018, 07:29:38 »
Im Normalfall stünde der Code der öffentlichen (Public) Methode SchliesseFormular() innerhalb der privaten (Private) Methode cmdClose_Click(). Um keine Artefakte auszulösen (das ist zwar beim Knopfklick-Ereignis nicht zu erwarten), sollte man nie (auch intern intern) eine Ereignis-Prozedur direkt aus dem Code aufrufen, sondern den Code in eine entsprechende Methode auslagern, die dann sowohl von der entsprechenden Ereignis-Prozedur als auch von anderen Stellen im Code aufgerufen werden kann. Weil es sich hier um diese öffentliche Methode der Formular-Klasse handelt, kann dsiese natürlich auch extern aus einem anderen Modul und auch per Automation aufgerufen werden.

Access-Code zur Verdeutlichung mit einem fiktiven Knopf namens cmdDruckeAlleMitarbeiter:

(Ausgangslage)Private Sub cmdDruckeAlleMitarbeiter_Click()
   DoCmd.OpenReport "rptMitarbeiterliste"
End Sub

(schlechter Stil - funktioniert aber)Public Sub cmdDruckeAlleMitarbeiter_Click()
   DoCmd.OpenReport "rptMitarbeiterliste"
End Sub

(guter Stil - erfordert eine neue Methode)
Private Sub cmdDruckeAlleMitarbeiter_Click()
   'Modifikation: Code wird umgeleitet
   DruckeAlleMitarbeiter
End Sub

'neu anlegen. Weil Public, kann die Methode automatisiert werden.
Public Sub DruckeAlleMitarbeiter()
   DoCmd.OpenReport "rptMitarbeiterliste"
End Sub

PS: am besten zeigst Du einmal den bisherigen Access-Code hinter dem Knopf. Vielleicht kann man sich das Öffnen des Formulars auch ganz sparen.
Grüße von der (⌒▽⌒)
 

Offline itaflo

  • Access-User
  • *
  • Beiträge: 81
Re: Bericht aus Access von Excel öffnen
« Antwort #4 am: Mai 30, 2018, 08:18:35 »
das habe ich aktuell in meiner Ecxel:Sub Schaltfläche1_Klicken()
  With GetObject("C:\Users\mancflor\Desktop\Excel, Accses\Label_Generator_V6.accdb") 'oder ..\Datenbankname.accdb
      'Mitarbeiterformular öffnen
      .DoCmd.OpenForm "Tabelle"      'Mitarbeiterformular wieder schließen
     
   End With
End Sub
und in Access Habe ich einen Makro-Generator der so aufgebaut ist
AusführenMenübefehl
Befehl Aktualisieren
ÖffnenBericht
Berichtsname Regallabel_FC
Ansicht Seitenansicht
Fenstermodus Normal
AusführenMenüBefehl
Befehl DruckenObjekt
FensterSchließen
Objekttyp Bericht
Objektname Regallabel_FC
Speichern Nachfragen

kann man in den bestehenden VBA Code nicht erweitern? 
da ich für den Button bzw. für meine Befehlsschaltfläche kein VBA Code habe.

Mein Grundgedanke war, um es zu verstehen, Daten aus Excel in Access zu Importieren davor aber die Tabelle leeren und anschließend das was in der Tabelle ist aus einem Bericht drucken.

Ich wollte mir das manuelle öffnen der Access ersparen.

Zum leeren der Tabelle habe ich folgendes benutzt:

Private Sub Bild56_Click()

DoCmd.RunSQL "DELETE * from Label;", False 'Löschen aller DS


End Sub
 

Offline itaflo

  • Access-User
  • *
  • Beiträge: 81
Re: Bericht aus Access von Excel öffnen
« Antwort #5 am: Mai 30, 2018, 08:21:36 »
für den Import habe ich folgendes Benutzt:

Private Sub Bild52_Click()
    'Unset warnings
    DoCmd.SetWarnings False
   
    'SQL delete statement
    DoCmd.RunSQL "DELETE * FROM Label"
   
    'Import spreadsheet
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Label", selectFile, True
           
    DoCmd.SetWarnings True
Dim tdf As DAO.TableDef
For Each tdf In CurrentDb.TableDefs
   If IsNumeric(Right(tdf.Name, 1)) Then
      CurrentDb.TableDefs.Delete tdf.Name
      End If
Next
DoCmd.DeleteObject acTable, "Fehler beim AutoSpeichern von Objektnamen"
DoCmd.DeleteObject acTable, "Vorlage$_Importfehler"

End Sub

ich weiss nicht ob das möglich ist alles in allem auch in der Reihenfolge mit einem Knopfdruck in Excel funktionieren zu lassen.
 

Offline itaflo

  • Access-User
  • *
  • Beiträge: 81
Re: Bericht aus Access von Excel öffnen
« Antwort #6 am: Mai 30, 2018, 11:10:09 »
soweit bin ich mittlerweile

das öffnen und leere der Tabelle funktioniert auch soweit

das Importieren wird komplett übersprungen weis leider nicht warum :(

das öffnen der Tabelle geht dann aber

Fehlermeldung bekomme ich hier auch keine

Sub Schaltfläche1_Klicken()
  With GetObject("C:\Users\mancflor\Desktop\Excel, Accses\Label_Generator_V6.accdb") 'oder ..\Datenbankname.accdb
      'Mitarbeiterformular öffnen
      'Unset warnings
    .DoCmd.SetWarnings False
   
    'SQL delete statement
    .DoCmd.RunSQL "DELETE * FROM Label"
   
           Exit Sub
     On Error GoTo 0
 
    .DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Label", _
         CurrentProject.Path & "C:\Users\mancflor\Desktop\Excel, Accses\Labelvorlage_Neu.xlsx", True
           
     .DoCmd.OpenForm "Tabelle"      'Mitarbeiterformular wieder schließen

End With
End Sub
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1248
Re: Bericht aus Access von Excel öffnen
« Antwort #7 am: Mai 30, 2018, 12:08:19 »
Exit Sub, sorgt dafür, dass die Methode bedingungslos beendet wird.
Prinzipell würde ich die Geschichte neu strukturieren und auch keine Mischung von VBA- und Makro-Code vornehmen.

Vorschlag: Verknüpfe die Excel-Liste im Frontend der DB. Dann sollten immer aktuelle Daten vorliegen und es kann auf Löschen/Import verzichtet werden. Im Endeffekt sollte dann ein einfaches   .DoCmd.OpenReport "DerBerichtsname"zum Ausdrucken genügen - ein Formularhandling ist dazu nicht notwendig.
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: itaflo

Offline itaflo

  • Access-User
  • *
  • Beiträge: 81
Re: Bericht aus Access von Excel öffnen
« Antwort #8 am: Mai 30, 2018, 13:23:02 »
Ich habe deinen Ratschlag mal berücksichtigt

Funktioniert wunderbar!