Hallo zusammen
Ich komme hier nicht weiter. Ich möchte einen Bericht abspeichern und dabei den Dateinamen anpassen und den Pfad entweder offen lassen oder eine Vorauswahl anzeigen, aber das Dialogfeld "Speichern unter" soll angezeigt werden.
Automatisch speichern ohne Dialog und mit gewähltem Pfad geht. Aber ohne Pfad oder, dass das Dialogfenster angezeigt wird bringe ich nicht hin. Ich habe lange gesucht aber keine Lösung für Access 2013 gefunden. Mein aktueller Code speichert automatisch.
Private Sub savereport_Click()
DoCmd.OpenReport "Bericht", acViewPreview, , , acHidden
DoCmd.OutputTo acOutputReport, "Bericht", acFormatPDF, "\\...\...\0_Work\02_Planing\" & Reports![Bericht].Caption & ".pdf"
DoCmd.Close acReport, "Bericht"
End Sub
Weiss da jemand eine einfache Lösung? Perfekt wäre, wenn der Speicherort ein Sharelaufwerk wäre, aber das lässt Access nicht zu, da dies nur über eine URL geht.
LG
Hallo,
die Suche nach "Datei-Speichern-Dialog" (evtl. noch mit dem Zusatz "VBA" und "Access") sollte dir eigentlich weiterhelfen können.
Ich habe einiges gefunden, aber nicht für Access. Nur diesen Code, aber bei diesem stürzt mir Access immer ab:
Private Sub savereport_Click()
Dim sB As FileDialog
Set sB = Application.FileDialog(2)
With sB
.InitialView = msoFileDialogViewList
.InitialFileName = "\\Pfad\" & Reports![Bericht].Caption & ".pdf"
'.FilterIndex = 2 / Funktioniert nicht
.Show
.Execute
End With
End Sub
Hallo,
vermutlich fehlt der Verweis auf die Microsoft-Office xx Library
(VBA-Editor/Extras/Verweise)
Und wobei stürzt Access ab (komplett?!) und mit welcher Fehlermeldung?
Schau dir doch einfach mal die Methoden des FileDialog-Objekts und deren Syntax in der Hilfe an, ehe du blind herumprobierst.
Beispiel:
Zitat'Add a filter that includes GIF and JPEG images and make it the second item in the list.
.Filters.Add "Images", "*.gif; *.jpg; *.jpeg", 2
'Sets the initial file filter to number 2.
.FilterIndex = 2
-->> ohne Filter gibt's auch keinen gültigen Index!
Ja, Access stürzt komplett ab, mit der angehängten Meldung. Der Verweis auf die Office 15 Library ist gesetzt.
Den Filter habe ich jetzt weggelassen, da mit der Vorauswahl sowieso nur im PDF Format gespeichert wird.
ZitatDen Filter habe ich jetzt weggelassen,
Und dann läuft's?
Und naja, du hattest ja wie gesagt gar keinen gesetzt...
Nein, dann stürzt es auch ab, sobald ich auf den Button "Speichern" klicke.
Wie steht's denn mit deinem Office, ist das auf dem neuesten Stand?
Und lässt sich der Code fehlerfrei kompilieren?
An welcher Stelle genau erfolgt denn der Absturz? Teste das mal im Unterbrechungsmodus.
Es ist das Office der Firma, ich denke es ist aktuell... Es scheitert beim .Execute. Beim Kompilieren gibt es keine Fehler.
Ich habe das bislang übersehen, was denkst du denn, was beim "Execute" ausgeführt werden soll? Der Dateiauswahldialog sollte durch "Show" gestartet werden, aber davon hast du gar nichts erwähnt.
Normalerweise sieht das folgendermaßen aus:
If .Show = -1 Then
MsgBox "Dateipfad: " & .SelectedItems(1)
Else
MsgBox "Keine Auswahl!"
End If
Ich habe gedacht mit Execute wird die Datei gespeichert. Das Speichern Dialogfenster mit dem vorgewählten Pfad und dem vorgeschlagenen Dateinamen erscheint. Es fragt mich auch, ob es die Datei überschreiben soll, wenn ich eine Datei wähle, die schon vorhanden ist.
Hallo,
vermutlich suchst Du nur eine Verzeichnisauswahl. Der Filename ergibt sich ja aus Deinem Berichtsnamen.
Dim sB As FileDialog, strPath As String
Set sB = Application.FileDialog(msoFileDialogFolderPicker)
With sB
.InitialFileName = "\\...\...\0_Work\02_Planing\"
If .Show = -1 Then strPath = .SelectedItems(1)
End With
..... acFormatPDF, strPath & "\" & Reports![Bericht].Caption & ".pdf"
Jein. Also ich möchte einen Bericht als PDF abspeichern. Dabei wird der Name der pdf Datei angepasst und ein Pfad vorgeschlagen. Ich möchte aber mit einem Dialog speichern, da jeder Nutzer vielleicht den Pfad oder den Namen noch anpassen möchte.
ZitatIch habe gedacht mit Execute wird die Datei gespeichert.
Wie sollte das gehen, denn zu dem Zeitpunkt ist doch völlig unbekannt, WAS überhaupt gespeichert werden soll.
Dies geschieht mit der OutputTo-Methode. Der FileDialog dient lediglich der Auswahl des Zieles.
Ich bin ja wirklich zu doof. Das habe ich irgendwie völlig übersehen. Jetzt sieht der Code so aus:
Private Sub savereport_Click()
Dim sB As FileDialog
Dim saveFileAs As String
DoCmd.OpenReport "Bericht", acViewPreview, , , acHidden
Set sB = Application.FileDialog(msoFileDialogSaveAs)
With sB
'.InitialView = msoFileDialogViewList / Ist das notwendig?
.InitialFileName = "\\Pfad\02_Planing\" & Reports![Bericht].Caption & ".pdf"
If .Show = -1 Then
saveFileAs = .SelectedItems(1)
DoCmd.OutputTo acOutputReport, "Bericht", acFormatPDF, saveFileAs
Else
MsgBox ("Der Plan wurde nicht gespeichert")
Exit Sub
End If
'.Execute / Für was noch execute?
End With
DoCmd.Close acReport, "Bericht"
End Sub
Das Abbrechen funktioniert. Ich muss einfach zweimal auf Speichern klicken, das erste übernimmt es nicht.
Ich habe herausgefunden man muss gar nicht zweimal klicken sondern einfach etwa 20 Sekunden warten. Dieses .show benötigt viel Zeit.
Hallo,
das wird dann wohl am Netzwerk liegen, kannst du die Dateien nicht woanders abspeichern? Eine Wartezeit von 20 Sek. ist schon heftig...
Ich habe die Funktion nur noch bei mir aktiv. Die anderen User können sich den Bericht per Mail senden :)
Jetzt habe ich dann alles geschafft nur noch die besch... bedingte Formatierung treibt mich in den Wahnsinn, aber da habe ich noch ein paar Ideen.
Hi,
kannst du die Probleme mit der bedingten Formatierung näher beschreiben?
Sicher doch. Ich möchte den Hintergrund der Felder im Endlosformular mit ca. 10 verschiedenen Farben einfärben. je nach Zelleninhalt. Mit der bedingten Formatierung aus dem Accessmenü geht es, aber es lädt nicht sauber. Das heisst, manchmal formatiert es die Felder nicht, manchmal nur einzelne Felder und nie schön synchron beim neuladen. Bei erneutem klicken geht es dann meistens. Also wollte ich es via VBA machen, aber das geht irgendwie gar nicht. Laut einigen Foren gehen da nicht mehr als 3 Bedingungen.
Hallo,
mach mal einen Screenshot vom BF-Fenster, damit man die Einstellungen der Regeln sehen kann.
Beziehen sich die Regel-Ausdrücke auf berechnete Felder?
Alle bis auf eine sind Wert = x. Die Daten kommen aus einem ID Feld.
Hallo,
offensichtlich heißt ein Feld "Datum" .. Datum ist ein reserviertes Wort und sollte (darf) nicht verwendet werden.
Meinst Du damit aber das heutige Datum, dann sollte es so lauten:
Wochentag(Datum();2)>5
Ich habe es angepasst und das Feld heisst jetzt Kalendertag. Aber das ganze mit der bedingten Formatierung beeinflusst es nicht.
Hi,
dann musst du wohl mal eine Beispiel-DB hochladen, an der man das austesten kann.
Hier meine Datenbank. Merrci
Hallo,
sorry, aber das ist grausam...
- keinerlei Normalisierung, bzw. gesetzte Beziehungen
- in jedem Modul fehlt (vollständiges)
Option Compare Database
Option Explicit
- Kompilieren bringt fehlende Variablen-Deklaration zu Tage wie auch fehlende Verweise
- immer noch reservierte Wörter (--> Wochentag) als Namen vorhanden, wie auch Sonder- /Leerzeichen in Namen.
Nichtsdestotrotz gibt es bei der BF im Formular "Tourenplan" bei mir (A2010) keinen solchen beschriebenen Effekt.
Merci fürs Anschauen. Wie ist es wenn Du das Hauptformular "Planning" öffnest und ein paar "Touren" änderst?
Zitat- keinerlei Normalisierung, bzw. gesetzte Beziehungen
Beziehungen habe ich jeweils in den Abfragen gemacht, ist das nicht genügend?
Zitat- in jedem Modul fehlt (vollständiges)
Option Compare Database
Option Explicit
Was fehlt denn da was wichtig ist?
Zitat- Kompilieren bringt fehlende Variablen-Deklaration zu Tage wie auch fehlende Verweise
Das macht es bei mir nicht, ich habe auch Access 2013. Vielleicht durchs zippen oder ich habe interne Netzwerkverweise nicht rausgelöscht.
Hallo,
ZitatBeziehungen habe ich jeweils in den Abfragen gemacht, ist das nicht genügend?
Nein. In Abfragen können keine Beziehungen gesetzt werden, allenfalls Verknüpfungen zwischen Tabellenfeldern. Beziehungen werden im Beziehungsfenster erstellt und werden vom Datenbankmodul berücksichtigt/kontrolliert.
Zitat
Was fehlt denn da was wichtig ist?
Wichtig ist, dass beide Zeilen in JEDEM Modulkopf zu stehen kommen und dann die Db kompiliert wird.
ZitatDas macht es bei mir nicht, ich habe auch Access 2013. Vielleicht durchs zippen oder ich habe interne Netzwerkverweise nicht rausgelöscht.
Das macht es deswegen nicht, weil Option Explicit fehlt. Nichtsdestotrotz sind die Fehler vorhanden und sorgen ggfls. für einen DB-Absturz.
"Verweise" in Access sind keine "Netzwerkverweise"....
Ich rate dringend, die Hinweise umzusetzen, sofern Du keinen Murks bauen willst.