2.1k Aufrufe
Gefragt in Tabellenkalkulation von Einsteiger_in (61 Punkte)
Hallo Zusammen

Ich habe noch eine zweite Frage:

Ist es möglich eine Pfadangabe per Eingabemaske zu
machen(wie Speichern unter nur mit zeigen des Ordners) die es mier automatisch ins VBA Macro schreibt?

Brauche dies um Werte von einer Vorhandenen Tabelle die nicht immer dieselbe ist (für diese den Pfad) in Meine Tabelle zu kopieren.

Vielen Dank für die Hilfe MfG
Roger

6 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Roger,


Option Explicit
Option Private Module
' von Nepumuk
Private Type InfoT
hwnd As Long
Root As Long
DisplayName As Long
Title As Long
Flags As Long
FName As Long
lParam As Long
Image As Long
End Type

Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As InfoT) As Long
Private Declare Function CoTaskMemFree Lib "ole32" (ByVal hMem As Long) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpStr1 As String, ByVal lpStr2 As String) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pList As Long, ByVal lpBuffer As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassname As String, ByVal lpWindowName As String) As Long

Function GetAOrdner() As String
Dim xl As InfoT, IDList As Long, RVal As Long, FolderName As String
With xl
.hwnd = FindWindow("xlmain", vbNullString)
' .hwnd = FindWindow("", "Auswahl") ' Userform Auswahl
.Title = lstrcat("Bitte wählen Sie ein Verzeichnis", "")
.Flags = 1
End With
IDList = SHBrowseForFolder(xl)
If IDList <> 0 Then
FolderName = Space(256)
RVal = SHGetPathFromIDList(IDList, FolderName)
CoTaskMemFree (IDList)
FolderName = Trim(FolderName)
FolderName = Left(FolderName, Len(FolderName) - 1)
End If
GetAOrdner = FolderName
End Function

' nicht verwendeter Code
' Aufruf mit
Sub test()
StOrdner = GetAOrdner ' Verzeichnis auswählen
End Sub

Gruß Hajo
0 Punkte
Beantwortet von Einsteiger_in (61 Punkte)
Hallo Hajo

Vielen Dank für die Hilfe

Da ich nicht der Profi bin in VBA muss ich nachfragen:

Ich will die Dateien aus einer Mappe mit der Maske hollen
und in die Aktelle kopieren

Leider sehe ich noch nicht ganz durch in deiner Anwendung
wen du kurz erklären könntest würde mir das weiterhelfen

Vielen Dank bereits jetzt für diene Arbeit!!!
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Roger,
in Deinem esten Beitrag habe ich gelesen das Du enen Ordner auswählen willst und dafür habe ich den Code gepostet. Zum kopieren mußt Du die entsprechende Datei öffnen. Eine Auswahl einer Datei erfolgt nicht da dies nicht die Frage war.

Gruß Hajo
0 Punkte
Beantwortet von Einsteiger_in (61 Punkte)
Stimmt soweit, ich habe die Frage falsch gestellt sorry

wie ist es den möglich eine Datei auszuwählen mit deiner Maske?
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Roger,

das ist nicht möglich.
dat = Application.GetOpenFilename("Textdateien (*.txt), *.txt")
‚ Auf die Variable dat wird der Dateinamen geschrieben

Gruß Hajo
0 Punkte
Beantwortet von Einsteiger_in (61 Punkte)
Hallo Hajo

Vielen Dank für die Antwort das hilft mir weiter.

Ich wünsche dir noch einen schönen Tag!

Grüsse Roger
...