Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1548to1552
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
Inhaltsverzeichnis

Sheets über Dateiexplorer einzeln auswählen?

Sheets über Dateiexplorer einzeln auswählen?
26.03.2017 10:39:43
Leon

Hallo, habe folgendes Problem.
Mit unten stehenden Code kann ich über den Dateiexplorer eine Mappe auswählen.
Es befinden sich in der Mappe aber mehrere "Tabellenblätter".
Die Mappe soll nicht "sichtbar" geöffnet werden, sondern im Hintergrund nur von einem bestimmten Tabellenblatt - dessen Inhalt- kopiert werden.
Ist es möglich, folgendes über ein "Auswahlfenster" ,einer MSG Box oder über ein Dialog- Feld folgendes zu Realisieren?
* Feststellung welche Worksheet existieren
* Nun die einzelnen Worksheet anzeigen und für den Kopiervorgang markierbar machen.
es würde auch reichen, wenn hier nur Worksheet "Tabelle1" und "Bearbeiten" - angezeigt - aufgelistet -werden. Um diese zwei geht es, alle anderen in der Mappe vorkommenden "Blätter" können ignoriert werden.
* wenn dieses dann Markiert wurde- dessen Inhalt Kopieren - und in das "aktive Tabellenblatt" mit dem Namen " Bearbeiten " einfügen.

Option Explicit
_______________________________________________________________________
Sub Zum_Testen_Datei_öffnen()  ' so testen
Dim myFile As String
Dim myWrkb As Workbook
myFile = SelectFile
Set myWrkb = GetWorkbook(myFile)
End Sub
____________________________________________________________________________________
Function SelectFile() As String ' Datei Explorer Öffnen
Dim fileDlg As FileDialog
Set fileDlg = Application.FileDialog(msoFileDialogOpen)
With fileDlg
.InitialFileName = "D:\Eigene_Datein"
.Filters.Add "Excel File", "*.xl*", 1
.AllowMultiSelect = False
If fileDlg.Show = False Then
SelectFile = ""
Else
SelectFile = fileDlg.SelectedItems(1)
End If
End With
End Function
____________________________________________________________________________________
Function GetWorkbook(ByVal sFullName As String) As Workbook  ' hiermit die Datei öffnen
Dim sFile As String
Dim wbReturn As Workbook
sFile = Dir(sFullName)
On Error Resume Next
Set wbReturn = Workbooks(sFile)
If wbReturn Is Nothing Then
Set wbReturn = Workbooks.Open(sFullName)
End If
On Error GoTo 0
Set GetWorkbook = wbReturn
End Function
__________________________________________________________________________________
Function CopySheet(Sh As Worksheet, trgWrkb As Workbook) As Boolean ' kopieren
On Error GoTo EH
Sh.Copy before:=trgWrkb.Sheets(1)
CopySheet = True
Exit Function
EH:
MsgBox Sh.Name & " was not copied", vbCritical, "Sheet copy failed"
CopySheet = False
End Function
____________________________________________________________________________________
Sub Dateiauswahl_Bearbeitung() 'Dateiauswahl für Bearbeitung als Ausführungsbefehl
Dim myFile As String
Dim myWrkb As Workbook
myFile = SelectFile
Set myWrkb = GetWorkbook(myFile)
CopySheet myWrkb.Sheets(1), ThisWorkbook
myWrkb.Close savechanges:=False
CloseWorkbook myFile, False
______________________________________________________________________________________
End Sub
Function CloseWorkbook(ByVal sFullName As String, saveWrkBk As Boolean) As Boolean ' _
Dateiauswahl wieder schließen
Dim sFile As String
Dim wbReturn As Workbook
sFile = Dir(sFullName)
On Error Resume Next
Set wbReturn = Workbooks(sFile)
On Error GoTo 0
If wbReturn Is Nothing Then
CloseWorkbook = False
Else
wbReturn.Close savechanges:=saveWrkBk
CloseWorkbook = True
End If
End Function
________________________________________________________________________________

Kann mir jemand beim Code helfen?
Grüße Leon

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheets über Dateiexplorer einzeln auswählen?
27.03.2017 12:42:45
ChrisL
Hi Leon
Es gibt keinen Standarddialog zum Wählen von Tabellenblättern. Im Anhang ein Beispiel mit Userform und ListBox.
https://www.herber.de/bbs/user/112450.xlsm
Public myWrkb As Workbook
Public myFile As String
Function SelectFile() As String ' Datei Explorer Öffnen
Dim fileDlg As FileDialog
Set fileDlg = Application.FileDialog(msoFileDialogOpen)
With fileDlg
.InitialFileName = "D:\Eigene_Datein"
.Filters.Add "Excel File", "*.xl*", 1
.AllowMultiSelect = False
If fileDlg.Show = False Then
SelectFile = ""
Else
SelectFile = fileDlg.SelectedItems(1)
End If
End With
End Function
Function GetWorkbook(ByVal sFullName As String) As Workbook  ' hiermit die Datei öffnen
Dim sFile As String
Dim wbReturn As Workbook
sFile = Dir(sFullName)
On Error Resume Next
Set wbReturn = Workbooks(sFile)
If wbReturn Is Nothing Then
Set wbReturn = Workbooks.Open(sFullName)
End If
On Error GoTo 0
Set GetWorkbook = wbReturn
End Function
Function CopySheet(Sh As Worksheet, trgWrkb As Workbook) As Boolean ' kopieren
On Error GoTo EH
Sh.Copy before:=trgWrkb.Sheets(1)
CopySheet = True
Exit Function
EH:
MsgBox Sh.Name & " was not copied", vbCritical, "Sheet copy failed"
CopySheet = False
End Function
Sub Dateiauswahl_Bearbeitung() 'Dateiauswahl für Bearbeitung als Ausführungsbefehl
myFile = SelectFile
Set myWrkb = GetWorkbook(myFile)
Call PickWS
End Sub
Private Sub PickWS()
Dim WS As Worksheet
Load UserForm1
For Each WS In myWrkb.Worksheets
If WS.Name = "Tabelle1" Or WS.Name = "Bearbeiten" Then _
UserForm1.ListBox1.AddItem WS.Name
Next WS
UserForm1.Show
End Sub
Function CloseWorkbook(ByVal sFullName As String, saveWrkBk As Boolean) As Boolean ' _
Dateiauswahl wieder schließen
Dim sFile As String
Dim wbReturn As Workbook
sFile = Dir(sFullName)
On Error Resume Next
Set wbReturn = Workbooks(sFile)
On Error GoTo 0
If wbReturn Is Nothing Then
CloseWorkbook = False
Else
wbReturn.Close savechanges:=saveWrkBk
CloseWorkbook = True
End If
End Function
' Userform **************************************
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then _
CopySheet myWrkb.Sheets(ListBox1.List(i)), ThisWorkbook
Next i
myWrkb.Close savechanges:=False
CloseWorkbook myFile, False
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
myWrkb.Close savechanges:=False
CloseWorkbook myFile, False
End Sub
Private Sub ListBox1_Change()
CommandButton1.Enabled = True
End Sub

cu
Chris
Anzeige
AW: Sheets über Dateiexplorer einzeln auswählen?
27.03.2017 20:04:12
Leon
Hallo ChrisL,
ich bin Sprachlos. Das hat bestimmt viel Arbeit gemacht- Es funktioniert tadellos.
Eine kleine Veränderung könnte noch etwas mehr Sicherheit bringen. Sinnvoll ist es, wenn das Blatt "Bearbeiten"- nur überschrieben wird- statt ein neues zu erzeugen, wenn in aktueller Mappe bereits vorhanden ist.
Vielleicht mittels Msg Box
If MsgBox("Das Blatt Bearbeiten existiert schon." & vbCrLf _
& "Überschreiben?", vbQuestion + vbYesNo, = vbYes Then
Oder ich belasse es so- erstelle ein Makro was mir im Anschluss die alte Tabelle "Bearbeiten" löscht und die Erzeugte umbenennt.
Aber ich glaube so komme ich in Kollision mit den anderen Makros wegen dem (in Klammern stehenden Tabellennamen).
Ich werde mal Testen.
Danke erst mal-
LG Leon
Anzeige
AW: Sheets über Dateiexplorer einzeln auswählen?
28.03.2017 08:37:33
ChrisL
Hi Leon
Ich habe im Moment leider keine Zeit, aber...
Lösche einfach vorsorglich das Tabellenblatt sowieso. Wenn kein Blatt vorhanden ist, dann kommt eine Fehlermeldung, die du Quick&Dirty mittels "On Error Resume Next" überspringen kannst.
cu
Chris
AW: Sheets über Dateiexplorer einzeln auswählen?
29.03.2017 08:32:32
ChrisL
Hi Leon
So...
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
If MsgBox("Wollen sie Tabelle " & ListBox1.List(i) & " ersetzen?", vbYesNo) = vbYes  _
Then
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Worksheets(ListBox1.List(i)).Delete
Application.DisplayAlerts = True
On Error GoTo 0
CopySheet myWrkb.Sheets(ListBox1.List(i)), ThisWorkbook
Else
CopySheet myWrkb.Sheets(ListBox1.List(i)), ThisWorkbook
End If
End If
Next i
myWrkb.Close savechanges:=False
CloseWorkbook myFile, False
Unload Me
End Sub

cu
Chris
Anzeige
AW: Sheets über Dateiexplorer einzeln auswählen?
29.03.2017 21:06:44
Leon
Ich bedanke mich ganz sehr für die Hilfe-
Hätte ich so nicht hinbekommen- funktioniert für beide Tabellen.
LG Leon

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige