Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
908to912
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
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datei per VBA in bestimmtes Verzeichnis speichern

Datei per VBA in bestimmtes Verzeichnis speichern
19.09.2007 09:14:00
Marta
Hallo Excelfreunde,
ich hoffe, dass mir jemand bei folgendem Problem helfen kann. Ich habe eine Arbeitsmappe, aus der ich ein Arbeitsblatt "per Knopfdruck" exportieren und unter einem bestimmten Namen, den ich in der Quellarbeitsmappe in ein Textfeld eingebe, speichern möchte. Gespeichert werden soll das Ganze unter dem eingegebenen Namen in ein bestimmtes Verzeichnis, was sich aus dem angemeldeten Benutzer ergibt. Bei mir wäre es C:\user\mv\meine bestellungen. mv wird dabei durch die Initialen des jeweils angemeldeten Nutzers ersetzt. Die Initialen müssen dazu in der Quellarbeitsmappe aus einer Zelle ausgelesen werden, in der sie zu diesem Zweck natürlich drinstehen ;-). Der Ordner "Meine Bestellungen" so bei Bedarf, also wenn er noch nicht besteht, möglichst ohne Rückfrage angelegt werden. Die neue und gespeicherte Arbeitsmappe soll geschlossen werden und nach Rückkehr in die Quellarbeitsmappe soll noch eine Meldung kommen "Die Datensätze wurden erfolgreich unter dem Namen ... in das Verzeichnis ... exportiert!".
Soweit die Theorie. Bei der Umsetzung in die Praxis würde ich mich über Hilfe freuen.
Ich habe mal eine Demoarbeitsmappe hochgeladen, die zur Verdeutlichung beitragen könnte.
https://www.herber.de/bbs/user/46154.xls
Vielen lieben Dank im Voraus.
Marta

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei per VBA in bestimmtes Verzeichnis speichern
19.09.2007 09:46:00
DirkP
Hallo Marta, was fehlt Dir genau - der komplette Code oder nur die Anweisung zum Speichern unter einem bestimmten Namen ?
Letzteres lässt sich in jedem Fall mit
ThisWorkbook.SaveAs ("PfadUndDateiname.xls")
durchführen!
Grüße

AW: Datei per VBA in bestimmtes Verzeichnis speich
19.09.2007 09:53:00
Marta
Hallo Dirk,
vielen Dank für die schnelle Antwort. Mir fehlt noch der komplette Code. V. a. weil der Pfad sich ja dynamisch anpasst. Wenn anderer Benutzer dann anderer Pfad zum Speichern.

AW: Datei per VBA in bestimmtes Verzeichnis speichern
19.09.2007 12:30:00
DirkP
Ok .. ich hätte da einen kleinen Vorschlag, vielleicht hilft Dir das:
Füge ein Modul im Basic-Umfeld von Deiner Arbeitsmappe ein, das so aussieht:
Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) _
As Long

Public Function UserName() As String
Dim strName   As String
Dim nSize     As Long
Dim lngResult As Long
nSize = 100
strName = Space$(100)
lngResult = GetUserName(strName, nSize)
If lngResult  0 Then
UserName = Left$(strName, nSize - 1)
End If
End Function


Danach schreibst Du dann in Deiner Speicher-Funktion irgendwas wie dies hier:


Private Sub Speicher_Click()
Dim Pfad As String
Dim sPrüf As String
Dim DateiName As String
'UserName ist die Funktion siehe oben
Pfad = "c:\user\" & UserName & "\Meine bestellungen"
sPrüf = Dir(Pfad, vbDirectory)
If sPrüf = "" Then
MkDir (Pfad)
End If
' worksheets("Tabelle1").cells(1,1) ist durch Deine Tabelle
' und die entsprechende Zelle zu ersetzen, wo der Dateiname eingetragen wird
DateiName = Pfad & "\" & Worksheets("Tabelle1").Cells(1, 1) & ".xls"
ThisWorkbook.SaveAs (DateiName)
End Sub


Hoffe das hilft weiter!
Grüße

Anzeige
AW: Datei per VBA in bestimmtes Verzeichnis speich
20.09.2007 09:52:47
mv@ilk.mw.tu-dresden.de
Hallo Dirk,
vielen Dank für Deine Hilfe. Habe das Ganze versucht zu modifizeren.
Die erste Funktion sollte vermutlich den Benutzernamen des momentan angemeldeten Benutzers ermitteln. Das hat leider nicht funktioniert. So habe ich diese Funktion wegrationalisiert und lasse den Dateinamen nun aus einer Zelle in der Arbeitsmappe auslesen.
Funktioniert alles prächtig. Leider wird aber die gesamte Arbeitsmappe gespeichert und nicht nur das eine Tabellenblatt exportiert und als neue Datei gespeichert. Das muß es aber. Vielleicht hatte ich mich aber auch zu kompliziert (um nicht laienhaft zu verwenden) ausgedrückt! ;-)
Und wie bekomme ich am Ende die Meldung hin, dass die Datei ins Verzeichnis X unter dem Namen y erfolgreich exportiert wurde?
Hier ist meine Variante bis jetzt:

Sub Export_ausführen()
Dim Pfad As String
Dim sPrüf As String
Dim DateiName As String
Pfad = "c:\user\" & Worksheets("Tabelle1").Cells(1, 1) & "\Meine Textbausteine"
sPrüf = Dir(Pfad, vbDirectory)
If sPrüf = "" Then
MkDir (Pfad)
End If
DateiName = Pfad & "\" & Worksheets("Tabelle1").Cells(1, 2) & ".xls"
ThisWorkbook.SaveAs (DateiName)
End Sub


Danke Marta

Anzeige
AW: Datei per VBA in bestimmtes Verzeichnis speich
20.09.2007 13:24:24
DirkP
Hi .. das mit dem "Nur das aktive Tabellenblatt speichern" ist so ein kleines Problem, wenn ich mich recht erinnere gibt es da nur den Trick, eine Kopie des aktuellen Blatts zu erzeugen und dann zu speichern.
Codiert ausgedrückt in etwa so:

Private Sub SpeichernEinesBlatts()
ActiveSheet.Copy
ActiveWorkbook.saveas ("neuesblatt.xls")
activeworkbook.close
End Sub


zuckt nen bissl aber funktioniert ;-)

AW: Datei per VBA in bestimmtes Verzeichnis speich
20.09.2007 13:25:34
DirkP
Ah sorry .. da fehlt noch ne info zu der Meldung
Kannst Du einfach eine Message-Box ausgeben ?
MsgBox ("Hat gespeichert unter " & pfad & Dateiname)

Anzeige
AW: Datei per VBA in bestimmtes Verzeichnis speich
02.10.2007 09:57:46
Marta
Hallo Dirk,
bin leider erst jetzt zum Antworten gekommen. Vielen Dank für Deine Tipps. Habe es mir auf deren Grundlage zwischenzeitlich so zurechtgebastelt, dass der Export reibungslos funktioniert. Und was folgt nach dem Export? Na klar, der Import! Da hatte ich gedacht, dass ich schon eine Lösung habe (die hatte ich auch schon aus diesem tollen Forum ;-). Leider hat sich meine Annahme nicht bestätigt.
Das liegt daran, dass ich in meiner bisherigen Lösung daran gebunden bin, dass die Datei, in die die Daten importiert werden sollen, immer den gleichen Namen hat. Das ist hier jedoch nicht der Fall.
Folgenden Ablauf beim Import wollte ich erreichen:
Über einen Button "Importieren" in der Verarbeitungsdatei öffnet sich das Dialogfeld "Datei öffnen", wobei schon zum entsprechenden Pfad und in das Verzeichnis, in das ich meine Daten mal irgendwann exportiert habe, gewechselt werden soll. Das ist ja bekanntlich immer gleich C:\user\Benutzername\Meine Textbausteine, wobei sich Benutzername aus einem Feld auf einem Tabellenblatt der Verarbeitungsarbeitsmappe befindet. Hier die Funktion, die ich zum Exportieren genommen habe:

Private Sub Worksheet_Activate()
Dim Pfad As String
Dim sPrüf As String
Dim DateiName As String
Dim wb As Workbook
Dim fn, vorgabe As String
Pfad = "c:\user\" & Worksheets("01").Cells(17, 6) & "\Meine Textbausteine"
sPrüf = Dir(Pfad, vbDirectory)
On Error GoTo errhandler
If sPrüf = "" Then
MkDir (Pfad)
End If
DateiName = Pfad & "\" & Worksheets("Exportdateiname").Cells(10, 5) & ".xls"
ThisWorkbook.Sheets("Export").Copy 'Name des ersten Tabellenblattes
Set wb = ActiveWorkbook
ActiveWorkbook.SaveAs (DateiName)
ActiveWorkbook.Close
MsgBox ("Die Daten wurden erfolgreich nach " & Pfad & " exportiert und unter dem Namen " &  _
DateiName & " gespeichert!")
Application.Run "Export_verwerfen"
Exit Sub
errhandler:
MsgBox Err.Description, vbCritical, "Fehler " & Err.Number
End Sub


Das funktioniert wie gesagt problemlos. Und aus diesem Verzeichnis sollen die Daten wieder importiert werden. Wenn der Nutzer über das Dialogfenster "Datei öffnen" die zu importierende Datei gewählt hat soll aus dieser, die ja nur ein Tabellenblatt enthält, der Bereich A1 bis L60 kopiert und in die Verarbeitungsdatei in den gleichen Bereich auf dem Tabellenblatt "Export"kopieren. Danach soll die Quelldatei (die importiert wurde) geschlossen werden und die Verarbeitungsdatei wieder aktiviert werden.
Alles weitere bekomme ich selbst hin. Die Funktion, die vielleicht als Grundlage dienen könnte, ist folgende:
Sub datensatz01_importieren()
'
'
Dim DatName As String
DatName = Application.GetOpenFilename
Workbooks.Open Filename:= _
DatName, UpdateLinks:= _
3
DatName = Right(DatName, Len(DatName) - InStrRev(DatName, "\", , vbTextCompare))
ActiveWindow.SmallScroll Down:=-15
Windows(DatName).Activate
Range("A1:L60").Select
Selection.Copy
Aber wie jetzt weiter?
Ich wäre für weitere Hilfe sehr dankbar!
Marta

Anzeige

42 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige