habe folgendes Problem:
Ich wähle eine Datei mit einem Button Klick mit folgendem code aus:
Private Sub protokoll_Click()
Dim strFull As String, strDatei As String, strPfad As String
strPfad = "d:\" 'anpassen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
If .Show = -1 Then
strFull = .SelectedItems(1)
Else
strFull = ""
End If
End With
If strFull "" Then
strDatei = Right(strFull, Len(strFull) - InStrRev(strFull, "\")) 'Dateiname
Range("B15") = strfull
myPfad = strFull 'Pfad wird übergeben
myDatei = strDatei 'datei wird übergeben
End If
End sub
Den kompletten Pfad schreibe ich in die Globale Variable myDatei und in "B15" rein. Soweit so gut!Dann fülle ich weitere Felder aus und über ein weiteren Button schreibe ich die ausgefüllten Inhalte sortiert in eine andere Tabelle und in einen Ordner.
Solange im Programm alle gut läuft wird dieser Pfad als Hyperlink in eine Tabelle rein geschrieben.
Sub copy_File(ZeilenNr As Integer)
Dim fso As Object
Dim sourceFile As String
Dim targetFile As String
Dim answer As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
sourceFile = myPfad
targetFile = MyOrdner_neu & "\" & myDatei
fso.copyfile sourceFile, targetFile
'Hyperlink
Worksheets("Eintrag").Hyperlinks.Add Worksheets("Liste").Cells(ZeilenNr, 13), MyOrdner_neu & _
"\" & myDatei
Set fso = Nothing
End Sub
Wenn jedoch vorher im Programm (beim 2te button) z.B. der Ordner angelegt wird und dieser vorhanden ist, breche ich den Vorgang ab und bestimme einen neuen Ordner.
In Zeile "B15" steht ja weiter der Pfad zur meiner myDatei die ich kopieren mächte.
Wenn ich erneut die Einträge übergeben möchte (2te button) wird ein neuer Ordner angelegt usw.
Aber die Datei wird ja nicht neu ausgewählt.
Und jetzt kommt das Problem: in der Sub copy_File kommt die Fehlermeldung:
Laufzeitfehler 5:
Ungültiger Prozeduraufruf oder ungültige Argument!
bei
fso.copyfile sourceFile, targetFile
Dort sehe ich dann, dass die Variablen myPfad & myDatei leer sind. Im MyOrdner_neu steht der neue Pfad, da diese Prozedur beim letzten button klick (2te button) durchlaufen wird.
Was kann ich machen, damit die Variablen nicht leer sind?
Habe die ja schon Global gesetzt!
Hoffe habe mich richtig ausgedrückt.......?
g