Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1300to1304
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
UserForm und Datenimport aus externer Datei
13.03.2013 14:53:41
Claudia
Hallo zusammen -
ich möchte gern eine UserForm nutzen, um Teile aus einer anderen Excel-Datei (Datei1.xls) in die aktuelle Arbeitsmappe (Datei2.xls) zu importieren.
Nach dem Aktivieren der Makros von Datei2.xls wird die UserForm angezeigt. Leider ist mir total unklar, mit welchem Steuerelement der Nutzer den Standort (Verzeichnis etc.) von Datei2.xls auswählen kann bzw. wie dann das entsprechende Makro für das Steuerelement/Command Button aussehen sollte (unten habe ich einen leider nicht funktionierenden Vorschlag).
Hat jemand eine Ahnung bzw. geht die Auswahl des Standorts (Verzeichnis) über ein Steuerelemt überhaupt?
Datei1: https://www.herber.de/bbs/user/84320.xls
Datei2: https://www.herber.de/bbs/user/84321.xls
Lieben Dank für eure Hilfe
Claudia

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm und Datenimport aus externer Datei
13.03.2013 14:56:30
Hajo_Zi
Halo Claudia,
verzeichnisauswahl.
Option Explicit                             ' Variablendefinition erforderlich
' damit Makro nicht unter Makro erscheint
Option Private Module
' Projekt weit
Public StOrdner As String                   ' Suchordner
'   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

Anzeige
sehr kompliziert, oder?
13.03.2013 15:05:10
Klaus
Hallo Hajo,
deine (und Nepumuks) API-Künste in allen Ehren, aber warum so kompliziert wenn es
Application.FileDialog(msoFileDialogFolderPicker)
bereits gibt?
Grüße,
Klaus M.vdT.

AW: UserForm und Datenimport aus externer Datei
13.03.2013 14:59:38
Klaus
Hi,
ich hab jetzt deine Dateien nicht geladen, aber einen Folder vom User auswählen lassen geht so:

'* function to let User pick a folder from the windows dialogue.
'* sPathStart is the starting path to pick a folder from
Public Function ChooseAFolder(sPathStart)
Dim sFolder As String
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:\"
.Title = "Pick a Folder"
.ButtonName = "choose..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
sFolder = .SelectedItems(1)
If Right(sFolder, 1)  "\" Then sFolder = sFolder & "\"
Else
sFolder = ""
End If
End With
If sFolder = "" Then
ChooseAFolder = ""
'MsgBox ("no Folder!")
Else
ChooseAFolder = sFolder
End If
End Function
Sub test()
MsgBox ChooseAFolder("C:\")
End Sub
Die Function "ChooseAFolder" gibt dir einen kompletten Pfad zurück, mit dem du dann weiter arbeiten kannst. Der Anfangspfad lässt sich festlegen, meistens macht "C:\" dafür schon Sinn.
Grüße,
Klaus M.vdT.

Anzeige
nicht dieser, sondern der Beitrag drunter!
13.03.2013 15:02:40
Klaus
Hi,
da hab ich grad "EDIT" und "ABSENDEN" verwechselt :-)
Mein zweiter Beitrag ist richtig, der erste hat noch einen Fehler.
Grüße,
Klaus M.vdT.

AW: UserForm und Datenimport aus externer Datei
13.03.2013 15:01:30
Klaus
Hi,
ich hab jetzt deine Dateien nicht geladen, aber einen Folder vom User auswählen lassen geht so:

'* function to let User pick a folder from the windows dialogue.
'* sPathStart is the starting path to pick a folder from
Public Function ChooseAFolder(sPathStart)
Dim sFolder As String
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = sPathStart
.Title = "Pick a Folder"
.ButtonName = "choose..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
sFolder = .SelectedItems(1)
If Right(sFolder, 1)  "\" Then sFolder = sFolder & "\"
Else
sFolder = ""
End If
End With
If sFolder = "" Then
ChooseAFolder = ""
'MsgBox ("no Folder!")
Else
ChooseAFolder = sFolder
End If
End Function
Sub test()
MsgBox ChooseAFolder("C:\Test\")
End Sub
Die Function "ChooseAFolder" gibt dir einen kompletten Pfad zurück, mit dem du dann weiter arbeiten kannst. Der Anfangspfad lässt sich festlegen, meistens macht "C:\" dafür schon Sinn.
Grüße,
Klaus M.vdT.

Anzeige
AW: UserForm und Datenimport aus externer Datei
13.03.2013 15:37:26
Claudia
Vielen Dank für eure Hilfe!!!
Habe es mal umgesetzt...
https://www.herber.de/bbs/user/84323.xls
Leider muss ich einen Fehler gemacht haben: ich kann keine Datei auswählen. =(
Leider ist mir auch unklar, wie ich aus der ausgewählten Datei (z.B. Datei1.xls) die Daten kopiere (Bereich B3:B2500 nach C1)...
Application.Workbooks("Datei1.xls").Worksheets(1).Range("B3:B2500").Copy.Worksheets(2).Range ("C1") ...irgendwie muss ja das Range-Objekt (hier: "Datei1.xls") durch die vorherige Auswahl einer beliebigen Excel-Datei flexibel eingetragen werden...
*help*

Anzeige
AW: UserForm und Datenimport aus externer Datei
13.03.2013 15:40:59
Hajo_Zi
das könnte wohl daran liegen das Du im ersten Beitrag einen Ordner auswählen wolltest und darauf wurde geantwortet.
Dat = Application.GetOpenFilename("Exceldateien von Glausius (*.xls), *.xls", _
Gruß Hajo

AW: UserForm und Datenimport aus externer Datei
13.03.2013 15:53:39
Claudia
Danke, Hajo. Sorry, mein Fehler.
Ich versuche es vielleicht einfach mal allgmeiner. Mit z.B.
Sub BereichKopieren()
Range("A1:A12").Copy Range ("C1")
End Sub
kann ich Zelleninhalte kopieren. Was muss ich tun, damit beim Start einer Arbeitsmappe der Nutzer die Möglichkeit hat über eine UserForm eine beliebige Excel-Datei auszuwählen, aus der dann der Bereich A1.A12 aus Arbeitsblatt 2 in mein Arbeitsblatt 1 kopiert wird?
Danke und liebe Grüße
Claudia
PS: In den Beispieldateien oben habe ich es schon einmal probiert. Leider mit wenig Erfolg. :(

Anzeige
AW: UserForm und Datenimport aus externer Datei
13.03.2013 16:34:27
Hajo_Zi
Hallo Claudia,
Dir ist schon klar das man damit auch Leute vergraulen kann, wenn sich in jedem, Beitrag die Aufgabe ändert.
razelle As Range
razelle = Application.InputBox("Bereich auswählen", "Drucken", 0, Type:=8)
Gruß Hajo

AW: UserForm und Datenimport aus externer Datei
13.03.2013 17:42:05
Claudia
Hallo Hajo,
vielen Dank. Ich nutze wahrscheinlich nicht das richtige Wording... Ich probiere es morgen nochmal.
Gruß Claudia

AW: UserForm und Datenimport aus externer Datei
13.03.2013 18:28:05
Hajo_Zi
Hallo Claudia,
habe ich also 3 Lösungen umsonst gepostet.
Gruß Hajo
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige