Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
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

Implicit ... As Variant

Implicit ... As Variant
09.09.2014 11:30:57
MaddyHa
Hallo zusammen :)
Ich habe mal wieder ein kleines Problem und hoffe hier ist ein kluger Kopf, der mir helfen kann!
Ich baue derzeit ein kleines Tool (nach) und stecke gerade an einer Stelle fest:
Es geht darum, bei einer bestimmten Auswahl aus der ComboBox und der Listbox eine Datei zu finden und lokal zu speichern (es sind mehrere Dateien in einem Ordner).
Bei meiner Beispieldatei ist "Ordner" mit "Implicit Ordner As Variant" deklariert, bei mir jedoch nur mit "Ordner As Variant". Kann es sein das ich deshalb nicht zu einem Ergebnis komme, es kommt immer die Meldung die Variable sei nicht richtig deklariert.
Falls ja wie wäre es möglich diese Variable "Implicit" zu machen? Finde leider im Internet nicht so richtig was..
Hier ist der Code dazu:
Private Sub CommandButton1_Click()
If ComboBox1.Text = "Gruppe 1" And ListBox1.Text = "ABC" Then
Ordner = Application.GetSaveAsFilename(Format(Date, "yyyy-mm-dd") & "" & ComboBox1.Text & "" &   _
_
ListBox1.Text)
If Ordner = False Then
Unload Me
Else
' Ordner kopieren
Dim FSO As New FileSystemObject
Dim Folder As Folder
Dim sFolderPath As String
Dim sDestPath As String
' Welcher Ordner soll kopiert werden?
sFolderPath = "..."
' Wohin soll der Ordner kopiert werden?
sDestPath = Ordner
' Kopiervorgang starten
Set Folder = FSO.GetFolder(sFolderPath)
Folder.Copy sDestPath
MsgBox "Gewählter Ordner wurde erfolgreich gespeichert."
End If
Unload Me
End If
End Sub
Ich danke jetzt schon für Hilfe und bedanke mich noch bei vorigen Helfern (ich kann irgendwie unter ältere Posts nichts mehr schreiben - vielleicht liest es ja hier jemand) :)
Gruß, Maddy

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Implicit ... As Variant
09.09.2014 14:06:14
fcs
Hallo Maddy,
irgendwie ist das Ganze noch sehr konfus.
1. Variablen deklaration.
Der korrkete Variablentyp für Variable Ordner ist hier Variant.
Dim Ordner As Variant
Die Deklarationsanweisung Implicit für Variablen gibt es unter VBA.
Es gibt außerhalb von Prozeduren noch Deklarationen mit Public (Variable ist im gesamten VBA-Projekt verfügbabar) und Private (Variable ist innerhalb eines Moduls verfügbar.
Wo hast du die Variable Ordner denn deklariert?
2. Im SaveAsDialog wählst du einen Dateinamen aus
Im weiteren Code werden dann aber ganze Ordner kopiert.
Dabei ist mir dann der Ordenername "..." als Quellordner sehr suspekt.
Was hast du denn genau vor?
Bitte genaue Schrittbeschreibung!
Gruß
Franz

Anzeige
AW: Implicit ... As Variant
09.09.2014 14:58:54
MaddyHa
Hallo Franz,
vielen Dank für deine Meldung.
ZU: "1. Variablen deklaration.
Der korrkete Variablentyp für Variable Ordner ist hier Variant.
Dim Ordner As Variant"

=> Ist beim kopieren wohl irgendwie untergegangen:
Private Sub CommandButton1_Click()
Dim Ordner As Variant
If ComboBox1.Text = "Gruppe 1" And ListBox1.Text = "ABC" Then

muss es richtig heißen.
Mir ist nur bei der anderen (die ich versuche nachzubasteln) aufgefallen, dass diese es Implicit benutzt haben, ich jedoch nicht weiß wie ich es rein formal einfügen kann.
ZU: 2. Im SaveAsDialog wählst du einen Dateinamen aus
Im weiteren Code werden dann aber ganze Ordner kopiert.
Dabei ist mir dann der Ordenername "..." als Quellordner sehr suspekt.

=> Wo genau meinst du wähle ich nur eine einzelne Datei aus? Hier:

Ordner = Application.GetSaveAsFilename(Format(Date, "yyyy-mm-dd") & "" & ComboBox1.Text & "" &  _
ListBox1.Text)
? Das dient doch nur zur Auswahl des Speichernamens?
Der sFolderPath ... habe ich nur verkürzt aufgeschrieben, da es sich um interne Daten handelt. Habe es der Einfachkeit halber mit "..." abgekürzt. (Pfad wo gewünschter Ordner liegt)
Nochmal zusammenfassend - ich hoffe ich kann es nun besser ausdrücken =)
Es existiert eine UserForm. Diese UserForm hat eine Combobox1, Listbox1 und einen CommandButton1.
Nun habe ich die ComboBox1, bei der ich z.B. "Vogel" auswähle.
Die ListBox1 zeigt mir dann alle Vögel aus einer Liste und ich wähle mir z.B. den Spatz aus.
Nun möchte ich den lokal gelegenen Ordner "Spatz" (der viele einzelne Dateien, auch unterschiedlicher Art, z.B. .doc .pdf etc. hat) mit einem Klick auf den CommandButton1 speichern. Dazu soll sich der Dialog "Speichern unter..." öffnen und mit die einzelnen Dateien aus dem Ordner Spatz. speichern.
Puh ich hoffe das ist nun verständlicher :)
Vielen, vielen Dank für die Hilfe!

Anzeige
AW: Implicit ... As Variant
09.09.2014 17:20:53
fcs
Hallo Maddy,
Das mit der Auswahl des Zielordners über den SaveAs-Dialog funktioniert es nicht 100%ig.
2-stufig funktioniert es glatter
1. Stufe: Auswahl des übergeordneten Zielordners
2. Stufe: bestätigen/anpassen des Ordnernamens in den die Dateien kopiert werden sollen.
Gruß
Franz
'Damit das Makro funktioniert muss im VBA-Editor für die Datei unter Extras--Verweise
'der Verweis auf
'Windows Script Host Object Model
'aktiviert werden - erforderlich für die Deklaration der Variablen FSO und Folder
Private Sub CommandButton1_Click()
Dim Ordner As Variant
If ComboBox1.Text = "Gruppe 1" And ListBox1.Text = "ABC" Then
'Ordner-Auswahldialog anzeigen
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte den übergeordneten Zielordner auswählen"
If .Show = -1 Then
Ordner = .SelectedItems(1)
'Name Zielordner bestätigen/anpassen
Ordner = Ordner & Application.PathSeparator _
& InputBox(Prompt:="Zielordner (ggf. korrigieren)", _
Title:="Übergeordneter Ziel-Ordner: " & Ordner, _
Default:=Format(Date, "yyyy-mm-dd") & "" & ComboBox1.Text & "" & ListBox1.Text)
If Ordner = .SelectedItems(1) Then Ordner = False
Else
Ordner = False
End If
End With
Weiter:
If Ordner = False Then
Unload Me
Else
' Ordner kopieren
Dim FSO As New FileSystemObject
Dim Folder As Folder
Dim sFolderPath As String
Dim sDestPath As String
' Welcher Ordner soll kopiert werden?
sFolderPath = "..."
sFolderPath = "D:\Test\Daten\" & ListBox1.Text     'Testzeile
' Wohin soll der Ordner kopiert werden?
sDestPath = Ordner
' Kopiervorgang starten
Set Folder = FSO.GetFolder(sFolderPath)
'Prüfen, ob Zielordner schon vorhanden
If Dir(Ordner, vbDirectory) = "" Then
'Ordner anlegen wenn nicht vorhanden
VBA.MkDir Path:=Ordner
End If
Folder.Copy Destination:=sDestPath, OverwriteFiles:=True
MsgBox "Gewählter Ordner wurde erfolgreich gespeichert."
End If
Unload Me
End If
End Sub

Anzeige
AW: Implicit ... As Variant
11.09.2014 07:29:19
MaddyHa
Hallo Franz,
ich habe deinen Code einmal eingefügt und mit meinen Gegebenheiten versehen:
'Windows Script Host Object Model
=> eingefügt
If ComboBox1.Text = "Gruppe 1" And ListBox1.Text = "ABC" Then
=> Gruppe 1 und ABC angepasst
Ordner = Ordner & Application.PathSeparator _
& InputBox(Prompt:="Zielordner (ggf. korrigieren)", _
Title:="Übergeordneter Ziel-Ordner: " & Ordner, _
Default:=Format(Date, "yyyy-mm-dd") & "" & ComboBox1.Text & "" & ListBox1.Text)
=> "ggf. korrigieren entfernt
 ' Welcher Ordner soll kopiert werden?
sFolderPath = "..."
=> Lokalen Workspace eingefügt
Leider öffnet sich bei mir nicht der "Speichern unter"-Dialog.
Weißt du vielleicht woran das liegen könnte?
Irgendwas habe ich bestimmt vergessen :/

Anzeige
AW: Implicit ... As Variant
11.09.2014 11:04:52
fcs
Hallo Maddy,
Dies ist/war deine Beschreibung was du vorhast:
Es existiert eine UserForm. Diese UserForm hat eine Combobox1, Listbox1 und einen CommandButton1.
Nun habe ich die ComboBox1, bei der ich z.B. "Vogel" auswähle.
Die ListBox1 zeigt mir dann alle Vögel aus einer Liste und ich wähle mir z.B. den Spatz aus.
Nun möchte ich den lokal gelegenen Ordner "Spatz" (der viele einzelne Dateien, auch unterschiedlicher Art, z.B. .doc .pdf etc. hat) mit einem Klick auf den CommandButton1 speichern. Dazu soll sich der Dialog "Speichern unter..." öffnen und mit die einzelnen Dateien aus dem Ordner Spatz. speichern.

Das hab ich jetzt wie folgt interpretiert:
1. Mit der Auswahl Combobox1 (z.B. Gruppe1) und Listbox1 (z.B. Spatz) wählst du du den Unterordner "Spatz" in einem Verezeichnis "C:\ABC\XYZ", das im Code fest vorgegeben oder irgendwie anders ermittelt wird.
2. Jetzt möchtest du den Ordner "C:\ABC\XYZ\Spatz" inklusive aller darin enthaltenen Dateien woanders speichern (anderes Laufwerk/anderes Verzeichnis?). Aber nicht in einem Ordner Namens "Spatz", sondern in einem Unter-Ordner mit vorgeschlagenem Namen
Format(Date, "yyyy-mm-dd") & "" & ComboBox1.Text & "" & ListBox1.Text
also z.B.: T:\CBA\ZYX\2014-09-11Gruppe1Spatz
Dies leistet das Makro, indem zunächst der übergeordnete Ordner in einem Ordner-Auswahldialog ausgewählt werden kann.
z.B. T:.\CBA\ZYX
Anschließend kann der Name des Unter-Ordners, in den die Dateien aus dem Ordner "Spatz" kopiert werden sollen, in einer Input-Box angepasst werden. Ist der Unter-Ordner noch nicht vorhanden, dann wird er angelegt.
Der SaveAs-Dialog ist hier nicht geeignet, da dieser auf eine einzelne Datei zugeschnitten ist und nicht auf Ordner/Verzeichnisse.
Ansonsten solltest die Beschreibung der umzusetzen Aktionen nochmals genau überdenken, konkreter beschreiben.
Gruß
Franz

Anzeige
AW: Implicit ... As Variant
11.09.2014 12:38:54
MaddyHa
Hallo Franz,
1. Mit der Auswahl Combobox1 (z.B. Gruppe1) und Listbox1 (z.B. Spatz) wählst du du den Unterordner "Spatz" in einem Verezeichnis "C:\ABC\XYZ", das im Code fest vorgegeben oder irgendwie anders ermittelt wird.
= Ja, ich wähle aus Combobox1 Gruppe1 und aus Listbox1 Spatz - der Ordner Spatz liegt als Link (Sharepoint) in einer Tabelle "Untergruppe".
2. Jetzt möchtest du den Ordner "C:\ABC\XYZ\Spatz" inklusive aller darin enthaltenen Dateien woanders speichern (anderes Laufwerk/anderes Verzeichnis?). Aber nicht in einem Ordner Namens "Spatz", sondern in einem Unter-Ordner mit vorgeschlagenem Namen
Format(Date, "yyyy-mm-dd") & "" & ComboBox1.Text & "" & ListBox1.Text
also z.B.: T:\CBA\ZYX\2014-09-11Gruppe1Spatz
= Ich möchte diesen Ordner Spatz lokal speichern und dies mit dem vorgeschlagenen Namen wie du bereits geschrieben hast.
Dies leistet das Makro, indem zunächst der übergeordnete Ordner in einem Ordner-Auswahldialog ausgewählt werden kann.
z.B. T:.\CBA\ZYX
Anschließend kann der Name des Unter-Ordners, in den die Dateien aus dem Ordner "Spatz" kopiert werden sollen, in einer Input-Box angepasst werden. Ist der Unter-Ordner noch nicht vorhanden, dann wird er angelegt.
= Es soll praktisch der Spatz-Ordner genommen und unter eigenem Namen lokal gespeichert werden. Dazu ist doch ein Dialogfeld nötig?!
Der SaveAs-Dialog ist hier nicht geeignet, da dieser auf eine einzelne Datei zugeschnitten ist und nicht auf Ordner/Verzeichnisse.
= Ist es nicht vielleicht möglich, diese Dateien aus dem Ordner auszulesen und praktisch als "Sammelspeicherung" in einem neuen wie oben angegebenen Ordner zu speichern?
Kurze Zusammenfassung:
- Combobox: - Vogel
- ListBox1: Spatz
- CommandButton 1: Speichern unter
- Speichern unter-Fenster öffnen
- Speicherort frei wählen können
- ganzen Ordner Spatz lokal speichern
Vielen Dank für die Mühe, Franz! Ich hoffe ich habs jetzt etwas besser beschrieben.

Anzeige
AW: Implicit ... As Variant
11.09.2014 12:58:51
MaddyHa
Hallo Franz,
1. Mit der Auswahl Combobox1 (z.B. Gruppe1) und Listbox1 (z.B. Spatz) wählst du du den Unterordner "Spatz" in einem Verezeichnis "C:\ABC\XYZ", das im Code fest vorgegeben oder irgendwie anders ermittelt wird.
= Ja, ich wähle aus Combobox1 Gruppe1 und aus Listbox1 Spatz - der Ordner Spatz liegt als Link (Sharepoint) in einer Tabelle "Untergruppe".
2. Jetzt möchtest du den Ordner "C:\ABC\XYZ\Spatz" inklusive aller darin enthaltenen Dateien woanders speichern (anderes Laufwerk/anderes Verzeichnis?). Aber nicht in einem Ordner Namens "Spatz", sondern in einem Unter-Ordner mit vorgeschlagenem Namen
Format(Date, "yyyy-mm-dd") & "" & ComboBox1.Text & "" & ListBox1.Text
also z.B.: T:\CBA\ZYX\2014-09-11Gruppe1Spatz
= Ich möchte diesen Ordner Spatz lokal speichern und dies mit dem vorgeschlagenen Namen wie du bereits geschrieben hast.
Dies leistet das Makro, indem zunächst der übergeordnete Ordner in einem Ordner-Auswahldialog ausgewählt werden kann.
z.B. T:.\CBA\ZYX
Anschließend kann der Name des Unter-Ordners, in den die Dateien aus dem Ordner "Spatz" kopiert werden sollen, in einer Input-Box angepasst werden. Ist der Unter-Ordner noch nicht vorhanden, dann wird er angelegt.
= Es soll praktisch der Spatz-Ordner genommen und unter eigenem Namen lokal gespeichert werden. Dazu ist doch ein Dialogfeld nötig?!
Der SaveAs-Dialog ist hier nicht geeignet, da dieser auf eine einzelne Datei zugeschnitten ist und nicht auf Ordner/Verzeichnisse.
= Ist es nicht vielleicht möglich, diese Dateien aus dem Ordner auszulesen und praktisch als "Sammelspeicherung" in einem neuen wie oben angegebenen Ordner zu speichern?
Kurze Zusammenfassung:
- Combobox: - Vogel
- ListBox1: Spatz
- CommandButton 1: Speichern unter
- Speichern unter-Fenster öffnen
- Speicherort frei wählen können
- ganzen Ordner Spatz lokal speichern
Vielen Dank für die Mühe, Franz! Ich hoffe ich habs jetzt etwas besser beschrieben.

Anzeige
AW: Implicit ... As Variant
13.09.2014 11:47:24
fcs
Hallo Maddy,
der Knackpunkt liegt hier:
... der Ordner Spatz liegt als Link (Sharepoint) in einer Tabelle "Untergruppe"
Das Makro funktioniert mit "normalen" Ordnern/Verzeichnissen.
Ich hab keine Ahnung, wie man via VBA den Zugriff auf Ordner via Links realisieren kann. Und mit dem Umgang von Sharepoints hab ich Null Wissen.
Gruß
Franz

AW: Implicit ... As Variant
16.09.2014 13:43:55
MaddyHa
Vielen Dank trotzdem, tut mir leid, dass ich das so schlecht beschrieben hatte!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige