Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Speicherort aus Zelle holen

Speicherort aus Zelle holen
25.12.2007 09:55:14
Wolfgang
Hallo,
zunächst auch von mir allen Forumsmitgliedern, insbesondere den aktiven "Beantwortern", frohe Weihnachtsfeiertage !
Kaum habe ich mit Hilfe des Forums eine Frage klären können, taucht die nächste Frage auf. Wie kann ich den untenstehenden Code ändern, damit der Speicherpfad der im ausgeblendeten Tabellenblatt "Basis", Zelle "A30" enthalten ist, genommen wird und dann das generierte Tabellenblatt "Seriendruck" ohne Nachfrage automatisch gespeichert bzw. überschrieben wird. Danke schon jetzt wieder für die Rückmeldungen.
Herzliche Grüße
Wolfgang

Sub Serienbrief()
' Variablendeklaration
Dim intCounter As Integer
Dim shSource As Worksheet
Dim lngRow As Long
Dim wb As Workbook
Dim fd As FileDialog
Dim vrtSelectedItem As Variant
Dim strUser As String
strUser = Environ("Username")
strUser = Trim$(Replace(strUser, ".GST", ""))
'neue Tabelle für gefiltere Datensätze anlegen
' Objektvariable für aktives Blatt festlegen
Set shSource = ActiveSheet
' Schleife über 14 TextBoxes
For intCounter = 1 To 14
'Wenn eine Auswahl erfolgte, dann
If Controls("cbbKriterium" & intCounter).ListIndex  -1 Then
'Kriterium festlegen
If intCounter = 3 Then
Range("A1").AutoFilter Field:=intCounter, _
Criteria1:=CDate(Controls("cbbKriterium" & intCounter).Value)
Else
Range("A1").AutoFilter Field:=intCounter, _
Criteria1:=Controls("cbbKriterium" & intCounter).Value
End If
End If
Next intCounter
' Alle sichtbaren Zellen kopieren
Range("A1").CurrentRegion.Copy
' Neues Arbeitsblatt hinzufügen
Set wb = Workbooks.Add(1)
ActiveSheet.Paste
' Autofilter ausschalten
shSource.Range("A1").AutoFilter
' Kopiermodus ausschaltern
Application.CutCopyMode = False
' Zwischenspeicher einfügen
' Zelle A1 auswählen
Range("A1").Select
wb.Activate
Rows("1:1").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.Range("V1")
.Value = "Infodatum"
.Font.Size = 10
.Font.Bold = True
End With
With ActiveSheet.Range("W1")
.Value = "Infouhrzeit"
.Font.Size = 10
.Font.Bold = True
End With
With ActiveSheet.Range("X1")
.Value = "Inforaum"
.Font.Size = 10
.Font.Bold = True
End With
With ActiveSheet.Range("Y1")
.Value = "sonstig1"
.Font.Size = 10
.Font.Bold = True
End With
With ActiveSheet.Range("Z1")
.Value = "sonstig2"
.Font.Size = 10
.Font.Bold = True
End With
With ActiveSheet.Range("AA1")
.Value = "sonstig3"
.Font.Size = 10
.Font.Bold = True
End With
With ActiveSheet.Range("S:S")
.NumberFormat = "dd. mmmm yyyy"
End With
With ActiveSheet.Range("T:T")
.NumberFormat = "dd. mmmm yyyy"
End With
With ActiveSheet.Range("V:V")
.NumberFormat = "dd. mmmm yyyy"
End With
With ActiveSheet.Range("W:W")
.NumberFormat = "hh:mm"
End With
' Dialog beenden
Unload Me
Unload frmNavigator
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
'hier wird der Speicherort vorgegeben
.AllowMultiSelect = False 'Mehrfachauswahl
.InitialFileName = "C:\Dokumente und Einstellungen\" & strUser & "\Desktop\Test\Seriendruck"
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
spOrt = vrtSelectedItem
Next vrtSelectedItem
Else
Exit Sub
End If
End With
Dim dName$
dName = ActiveWorkbook.Name
dName = ("Seriendruck")
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs dName
Application.DisplayAlerts = True
Set fd = Nothing
End Sub


12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speicherort aus Zelle holen
25.12.2007 12:10:52
Gerd
Hallo Wolfgang,
meinst Du so ? Speichern kannst immer nur eine Datei, kein einzelnes Tabellenblatt.

Sub test()
Dim WbA As Workbook
Dim WbB As Workbook
Dim strPfad As String
Dim strDatei As String
Set WbA = ActiveWorkbook
strDatei = "Irgendwas" & ".xls"
Worksheets("Tabelle1").Range("A1").CurrentRegion.Copy
Set WbB = Workbooks.Add
ActiveSheet.Paste
Application.DisplayAlerts = False
WbB.SaveAs CStr(WbA.Worksheets("Basis").Range("A30").Value & "\" & strDatei)
WbB.Close
Application.DisplayAlerts = True
End Sub


Gruß Gerd

Anzeige
AW: Speicherort aus Zelle holen
25.12.2007 12:48:00
Wolfgang
Hallo Gerd,
Danke für Deine Rückmeldung. Irgendwie macht der Code nicht das, was ich möchte - eigentlich noch gar nichts. Ich habe ihn wahrscheinlich irgendwie falsch eingebunden. Im von mir beigefügten Code ist ja grundsätzlich der Pfad schon vorgegeben. Gäbe es da nicht irgendwie die Möglichkeit eines "Platzhalters", der dann auf die Zelle A30 verweist? - So öffnet der Code momentan das Fenster "Speichern unter" und zeigt schon den vorgegebenen Pfad an. Hier wäre schön, wenn das Speichern direkt unter den in Zelle A30 angegebenen Pfad erfolgen könnte. Ich habe schon versucht, unter ".InitialFileName = "C:\Dokumente und Einstellungen\" & strUser & "\Desktop\Test\Seriendruck" den Verweis auf Zelle A30 einzubauen, kriege das aber irgenwie nicht hin. Danke schon jetzt wieder für die Rückmeldung.
Herzliche Grüße
Wolfgang

Anzeige
PathName = Worksheets("Basis").Range("E30").Value
25.12.2007 22:10:00
Matthias
Hallo
hilf Dir das weiter?

Option Explicit
Sub speichern()
Dim PathName As String, strDatei As String
On Error GoTo Fehler
PathName = ThisWorkbook.Worksheets("Basis").Range("E30").Value
'Der Pfad aus Basis!E30 muss vorhanden sein!
'sonst wird Error ausgelöst
strDatei = "Irgendwas"
MsgBox PathName & "\" & strDatei & ".xls", , "gespeichert wird als Dateiname aus Basis!E30 " ' _
kann dann gelöscht werden
Application.DisplayAlerts = False
ThisWorkbook.SaveAs PathName & "\" & strDatei & ".xls"
Application.DisplayAlerts = True: Exit Sub
Fehler:
Application.DisplayAlerts = True
MsgBox "bitte erst sicherstellen, das der Pfad " & PathName & " vorhanden ist!", vbCritical, " _
Abbruch"
End Sub


Userbild

Anzeige
AW: PathName = Worksheets("Basis").Range("E30").Value
26.12.2007 08:13:34
Stefan
Hallo Matthias,
das hilft mir leider nicht richtig weiter, denn dann hab ich den Pfad wieder in einer Zelle stehen.
Aber ich werde jetzt den Pfad in eine Textbox packen und diese gut verstecken. Hilft zwar auch nur bedingt, den wenn man den VBA-Zugangscode "geknackt" hat (und das soll nicht schwer sein?!?), kommt man auch hier wieder ran, aber es ist besser, als nichts zu machen und wie das ganze "gestrickt" ist, weiß ja nur ich.
Nochmals Danke für deine Hilfe.
Ich wünsche dir noch einen schönen Feiertag und einen guten Rutsch in neue Jahr.
Gruß
Stefan

speichert nun die Ursprungsmappe
26.12.2007 08:36:00
Wolfgang
Hallo Matthias,
Danke für die Rückmeldung; Ich habe Deinen Code angepaßt - er rennt auch grundsätzlich, allerdings speichert er nun die Mappe, aus der eigentlich auf Grund der Filterfunktion ein neues Tabellenblatt mit den gefilterten Daten generiert wird, erneut. Erreichen möchte ich, dass das neu generierte Blatt (so wie es im von mir beigefügten Code läuft) gespeichert wird. Was müßte ich noch evtl. verändern? - Danke schon jetzt wieder für die Rückmeldung.
Herzliche Grüße
Wolfgang

Anzeige
Ursache gefunden - Errorhandler?
26.12.2007 08:53:00
Wolfgang
Hallo Matthias,
habe die Ursache gefunden und wie folgt (siehe unten) geändert. Was müßte ich noch bei "Fehler"verändern? Ich habe die Zelle Basis A 30 einmal geleert, dennoch erschien die Fehlermeldung nicht.
Danke nochmals und
herzliche Grüße
Wolfgang
hier die Änderung:
Application.DisplayAlerts = False
With ActiveSheet
.SaveAs PathName & "\" & strDatei & ".xls"
End With
Application.DisplayAlerts = True: Exit Sub

If PathName = "" Then goto Fehler
26.12.2007 09:09:00
Matthias
Hallo
Ich tippe mal die Datei wurde im Laufwerk als irgendwas.xls gespeichert.
Es is ja kein Fehler aufgetreten, lediglich die Variable PathName war leer.
Durch ThisWorkbook.SaveAs PathName & "\" & strDatei & ".xls"
gibt es kein Error
Baue Dir eine if-Abfrage ein!
in der Art
'...

Application.DisplayAlerts = False
If PathName = "" Then GoTo Fehler
With ActiveSheet
.SaveAs PathName & "\" & strDatei & ".xls"
End With
Application.DisplayAlerts = True: Exit Sub
Fehler:
Application.DisplayAlerts = True
MsgBox "bitte erst sicherstellen, das der Pfad " & PathName & " vorhanden ist!", vbCritical, " _
Abbruch"
End Sub


Userbild

Anzeige
Danke Matthias, eine Frage noch
26.12.2007 09:29:49
Wolfgang
Hallo Matthias,
erneut herzlichen Dank, das funktioniert soweit prima. Vielleicht eine Frage noch, wie kann ich erreichen, dass sowohl bei der Fehlermeldung, als aber auch bei erfolgreichem Speichern die generierte Tabelle, also das aktive Blatt dann geschlossen wird. Mit Unload Me oder ähnlichem kriege ich das nicht hin.
Schon jetzt auch wieder Danke für Deine Rückmeldung.
Gruß - Wolfgang

ThisWorkbook.Close
26.12.2007 09:46:00
Matthias
Hallo Wolfgang
Du kannst nicht nur ein Blatt schließen!
geschlossen wird immer das ganze Workbook.
Ich habe Deine Mappe ja nicht nachgebaut, da hätte ich ja 14 Textboxen bauen müssen usw.
das war mir dann zuviel Aufwand ;o)
Probier mal ThisWorkbook.Close

Application.DisplayAlerts = False
If PathName = "" Then GoTo Fehler
With ActiveSheet
.SaveAs PathName & "\" & strDatei & ".xls"
End With
Application.DisplayAlerts = True: ThisWorkbook.Close: Exit Sub
Fehler:
Application.DisplayAlerts = True
MsgBox "bitte erst sicherstellen, das der Pfad " & PathName & " vorhanden ist!", vbCritical, " _
Abbruch"
ThisWorkbook.Close
End Sub


Userbild

Anzeige
Danke Matthias - kleine Änderung
26.12.2007 10:14:00
Wolfgang
Hallo Matthias,
erneut herzlichen Dank für Deine Rückmeldung und Hinweise. Unter ThisWorkbook.Close wurde immer die Ursprungsmappe gelöscht. Habe ein wenig versucht und mit ActiveWorkbook.Close schließt sich nun die neu generierte Tabelle bzw. Mappe. Nochmals recht herzlichen Dank für die Zeit, die Du Dir genommen hast und noch weiterhin frohe (Rest)-Feiertage.
Gruß - Wolfgang

Die Mappe wurde nur geschlossen nicht gelöscht!
26.12.2007 10:50:00
Matthias
Hallo
Die Mappe wurde aber nur geschlossen nicht gelöscht!
Das hatte ich leider verdreht mit ActiveWorkbook.Close und ThisWorkbook.Close (sorry)
Wie schön das Dein Problem gelöst ist.
Auch Dir einen schönen Rest vom Fest ;o)
Userbild

Anzeige
Sorry, Schreibfehler - natürlich geschlossen.
26.12.2007 11:47:00
Wolfgang
Hallo Matthias,
das war ein Schreibfehler, gemeint war natürlich geschlossen und nicht gelöscht. In dem Sinne, sorry und bis dahin 'mal
Gruß - Wolfgang

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige