Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit VBA einen Speicherpfad aus Auswahlfenster definieren (EXCEL)

Frage Entwicklung VB for Applications

Mitglied: Joerg18470

Joerg18470 (Level 1) - Jetzt verbinden

22.09.2012 um 09:34 Uhr, 21253 Aufrufe, 11 Kommentare

Hallo zusammen,
Ich habe in einer Tabelle einen Speicherbutton eingebaut und möchte noch ein Auswahlfenster für diesen einrichten.

Das ganze stelle ich mir so vor das ich einen Speicherpfad in einer der Excelzellen hinterlege, an den dann auch der Speicherbutton die Tabelle speichert. Zur Zeit ist es so das ich in dem Button einen festen Pfad eingetragen habe, jetzt möchte ein Kollege von mir auch diese Tabelle und er soll sich dann seinen Pfad via Auswahlfenster in einer Zelle eintragen können, da ja jeder andere Pfade zum speichern nutzen möchte. Wie könnte man das dann so bewerkstelligen ?
Mitglied: bastla
22.09.2012, aktualisiert um 11:53 Uhr
Hallo Joerg18470!

Wozu soll das Auswahlfenster gut sein - wenn ohnehin der Pfad in einer Zelle stehen soll, kann er dort doch auch einfach manuell eingetragen werden ...

... ansonsten:
01.
Pfad = Application.GetSaveAsFilename 
02.
If Pfad <> "Falsch" Then Range("C4").Value = Pfad
Grüße
bastla

P.S.: Falls das noch nicht genügt, solltest Du die Frage als "nicht gelöst" markieren ...
Bitte warten ..
Mitglied: Joerg18470
22.09.2012 um 12:13 Uhr
[Code]
Sub MappeSpeichern()
MsgBox "C:\Users\Joerg\Documents\Stunden " & FileNameToken & ".xlsm"
ActiveWorkbook.SaveAs Filename:="C:\Users\Joerg\Documents\Stunden " & FileNameToken & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
[/code]
Anstatt dieses fest eingetragenen Pfads möchte ich gern das man sich irgendwo seinen persönlichen Pfad auswählen kann der dann in diesem Code anstatt des festen Pfades genommen wird. Sicher kann man den Pfad auch manuell in einer Zelle eingeben. Ich dachte aber das es komfortabler ist wenn man sich diesen in einer Zelle auswählen kann. Via Hyperlink Eintrag sollte es natürlich auch funktionieren das da der richtige Pfad drin steht, nur muß dieser dann auch vom oben stehenden Code übernommen werden.
Bitte warten ..
Mitglied: bastla
22.09.2012 um 15:52 Uhr
Hallo Joerg18470!

Um tatsächlich nur einen Pfad auszuwählen und in einer Zelle zu hinterlegen etwa so:
01.
Sub PfadFestlegen() 
02.
Set Fld = CreateObject("Shell.Application").BrowseForFolder(0, "Datei oder Verzeichnis wõhlen", 16, 17) 
03.
If Not TypeName(Fld) = "Nothing" Then 
04.
    Pfad = Fld.Self.Path 
05.
End If 
06.
Range("C4").Value = Pfad
Verwenden kannst Du den Pfad dann so:
01.
Sub MappeSpeichern() 
02.
Pfad = Range("C4").Value 
03.
If Pfad <> "" Then 
04.
    ActiveWorkbook.SaveAs Filename:=Pfad & FileNameToken & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 
05.
Else 
06.
    MsgBox "Es wurde noch kein Pfad festgelegt!" 
07.
End If 
08.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: Joerg18470
23.09.2012 um 11:21 Uhr
Hallöchen,
mit dem Pfad festlegen das geht schon erst mal prima, nur mit dem speichern harpert da noch was. Die Datei lässt sich nicht finden, aber wenn ich nochmals speichern klicke bekomme ich die Antwort das die Datei schon vorhanden ist. Ich habe schon alle möglichen Anzeigeoptionen versucht nur kann ich diese nicht finden. Denke da habe ich noch was falsch gemacht.Was bedeutet eigentlich die 16,17 bei dir unter Verzeichnis auswählen ? Habe mir jetzt ein Buch gekauft "Einstieg in VBA mit EXCEL" von Thomas Theis nur habe ich da eine solche Deklaration noch nicht gefunden.
Bitte warten ..
Mitglied: Joerg18470
23.09.2012 um 11:35 Uhr
Habe die Datei gefunden und denke mal somit auch den Fehler, er speichert bei einem ausgesuchten Pfad :

D:\Joerg\Desktop

eine Datei unter D:\Joerg mit dem Namen DesktopSeptember.xlsm

so müßte ich doch nur noch irgendwo eine Trennung rein machen das er den z.B Desktop noch zum Pfad nimmt und nicht schon als Namen der Datei. Da kann doch nur irgendwo noch ein Kürzel fehlen.
Trotzdem erstmal schon vielen Dank bis hierher, du hast mir schon sehr viel geholfen... DANKE !!!
Bitte warten ..
Mitglied: Joerg18470
23.09.2012 um 11:52 Uhr
Wenn ich den Pfad per Hand einfüge und nach dem Desktop noch den Bachslash anhänge funktioniert das ganze wirklich prima.
Bitte warten ..
Mitglied: Joerg18470
23.09.2012 um 12:05 Uhr
So habe es hinbekommen. Habe in diesem Fall bei der Namensdeklaration nur noch den Bakslash hinzufügen lassen und es geht prächtig, hier der gesamte Code nochmal komplett für Mappe speichern:

[QUOTE]
Sub MappeSpeichern()
Pfad = Range("G7").Value & "\"
MsgBox Pfad & FileNameToken & ".xlsm"
If Pfad <> "" Then
ActiveWorkbook.SaveAs Filename:=Pfad & FileNameToken & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Else
MsgBox "Es wurde noch kein Pfad festgelegt!"
End If

End Sub



Private Function FileNameToken() As String

Dim i As Integer
With ThisWorkbook
For i = 2 To 13
If .Sheets(i).Cells(40, 3).Value = 0 Then
If i = 1 Then
FileNameToken = .Sheets(i).Name
FileNameToken = "Keiner"
Exit Function
Else
FileNameToken = .Sheets(i - 1).Name
Exit Function
End If
End If
Next i
End With
End Function
[/QUOTE]

Mit welchem Befehl hast du eine solch schöne Codeauflistung hier eingefügt ?
Danke nochmal und somit betrachte ich diesen Thread als gelöst !!!
Bitte warten ..
Mitglied: 76109
23.09.2012, aktualisiert um 12:13 Uhr
Hallo Joerg18470!

Yepp, in etwa so:
01.
If Not TypeName(Fld) = "Nothing" Then 
02.
    Pfad = Fld.Self.Path & "\" 
03.
End If
Gruß Dieter

PS. In Deinem letzten Code ist der Backslash an der falschen Stelle plaziert. Der Test mit 'If Pfad <> "" Then..' funktioniert dann nicht mehr, weil im Fehlerfall der Pafd "\" lauten würde.
Bitte warten ..
Mitglied: Joerg18470
23.09.2012 um 13:15 Uhr
01.
> If Not TypeName(Fld) = "Nothing" Then 
02.
>     Pfad = Fld.Self.Path & "\" 
03.
> End If 
04.
> 

Du hast Recht !
Wenn ich jetzt deinen Code versuche bricht der bei " Pfad = Fld.Self.Path & "\" " mit Laufzeitfehler ab. Objekt ist erforderlich.
Kann es sein das der Befehl objFolder.Self.Path heißen müßte ?
Bitte warten ..
Mitglied: Joerg18470
23.09.2012, aktualisiert um 13:49 Uhr
Sorry Dieter,
hatte nur die falschen Füßchen

Alles in Butter und nochmal Danke Euch beiden

Gruß Jörg
Bitte warten ..
Mitglied: bastla
23.09.2012, aktualisiert um 13:30 Uhr
Hallo Joerg18470!

Das Objekt "Fld" wird in der Zeile
Set Fld = CreateObject("Shell.Application").BrowseForFolder(0, "Datei oder Verzeichnis wõhlen", 16, 17)
erzeugt - wenn es diese Zeile gibt, sollte es auch das Objekt geben ...

Grüße
bastla

[Edit] Hatte Deinen letzten Kommentar noch nicht gesehen ... [/Edit]
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Microsoft Office
Excel VBA: Tranferieren von Werten aus Quelldatei in die Masterdatei mit SVERWEIS (3)

Frage von peter.schroeder zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...