Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1880to1884
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
Werte in neue Datei kopieren
12.05.2022 10:16:32
Andreas
Hi zusammen,
habe einen Code, den ich gerne für eine andere Datei verwenden würde.
Allerdings brauche ich nur ein Stück davon und bin mir nicht sicher, welches genau.
Mein Ziel ist es, Werte aus der Zeile 2 im Tabellenblatt "Übergabe" der Arbeitsmappe "Test" in eine weitere Datei "ISF" in das Tabellenblatt "fällig" in die nächste freie Zeile zu kopieren.
Dachte das ginge so:

Private Sub CommandButton1_Click()
Dim Datei As File
Dim Erg As Range
Dim wsPL As Worksheet
Const cNrAdr = "A2"
With Workbooks("ISF.xlsm").Worksheets("fällig")
Set Erg = .Range("A2:A" & .Range("A99999").End(xlUp).Row).Find(wsPL.Range("A2").Value)
If Erg Is Nothing Then Set Erg = .Range("A99999").End(xlUp).Offset(1, 0) 'wenn kein Treffer, dann als neue Zeile am Ende
wsPL.Range("A2:M2").Copy
Erg.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End With
End Sub

Gibt aber eine Fehlermeldung beim Kompilieren:
Benutzerdefinierter Typ nicht definiert
Hier mein Ursprünglicher Code:

Private Sub CommandButton1_Click()
Dim Datei As File
Dim Erg As Range
Dim wsPL As Worksheet
Const cNrAdr = "A2" 'Adresse der Zelle, wo der Planungsnummer zu lesen ist
Hier noch der Ursprüngliche Code aus meiner anderen Datei. Da funktioniert alles, sind aber noch Funktionen dabei, die ich bei dieser Mappe nicht brauche:
'unter Anbindung von Bibliothek "Microsoft Scripting Runtime":
'Extras, Verweise..., Hacken bei "Microsoft Scripting Runtime"
Dim FSO As New FileSystemObject
Dim DateiPfad As String
Const sPfadErledigt As String = "Dateipfad\"
Const DateinamenMuster = " K xxx.xlsm"

Private Sub CommandButton1_Click()
Dim Datei As File
Dim Erg As Range
Dim wsPL As Worksheet
Const cNrAdr = "AN31" 'Adresse der Zelle, wo der Planungsnummer zu lesen ist
'1. Prüfen, dass der Pfad gültig ist
'2. Prüfen, ob Dateinummer gültig ist
'3. Prüfen ob Datei bereit existiert
'4. + 5. Vorhandensein prüfen und an der richtige Stelle kopieren
'6. Datein Speichern
'1.
If Pfad_prüfen(sPfadErledigt) Is Nothing Then
MsgBox "Verzeichnis """ & sPfadErledigt & """ nicht vorhanden oder nicht gefunden.", vbExclamation
Exit Sub
End If
'2.
Set wsPL = ThisWorkbook.Worksheets("Planung")
If Not IsNumeric(wsPL.Range(cNrAdr).Value) Then
MsgBox "Nummer """ & wsPL.Range(cNrAdr).Value & """ ist für diese Datei nicht gültig.", vbExclamation
Exit Sub
End If
'3
DateiPfad = sPfadErledigt & Replace(DateinamenMuster, "xxx", wsPL.Range(cNrAdr).Value)
Set Datei = Datei_prüfen(DateiPfad)
If Not Datei Is Nothing Then
If MsgBox("Datei """ & Datei.ShortPath & """ existiert bereits. " & vbCr & vbCr & "Überschreiben?", vbYesNo + vbQuestion)  vbYes Then
Exit Sub
End If
End If
'4. + 5.
With Workbooks("Übersicht.xlsm").Worksheets("Übersicht")
Set Erg = .Range("A32:A" & .Range("A99999").End(xlUp).Row).Find(wsPL.Range("FR32").Value)
If Erg Is Nothing Then Set Erg = .Range("A99999").End(xlUp).Offset(1, 0) 'wenn kein Treffer, dann als neue Zeile am Ende
wsPL.Range("FR32:LA32").Copy
Erg.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End With
With Workbooks("Übersicht.xlsm").Worksheets("Aufträge")
For Each Quelle In wsPL.Range("FR35:FR59").Cells
If Quelle.Value  "" Then
Set Erg = .Range("A2:A" & .Range("A99999").End(xlUp).Row).Find(Quelle.Value)
If Erg Is Nothing Then
Set Erg = .Range("A99999").End(xlUp).Offset(1, 0) 'neue Zeile unten
Else
Set Erg = Erg.EntireRow.Range("P1") 'die Spalte P innerhalb der Zeile des gefundenen Ergebnisses
If Erg.Value  "" Then Set Erg = Erg.EntireRow.Range("AE1") 'die Spalte AE innerhalb der Zeile des gefundenen Ergebnisses
If Erg.Value  "" Then Set Erg = Erg.EntireRow.Range("AT1")
If Erg.Value  "" Then Set Erg = Erg.EntireRow.Range("BI1")
End If
Quelle.Resize(1, 14).Copy
Erg.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End If
Next
End With
'6.
ThisWorkbook.SaveAs DateiPfad, xlOpenXMLWorkbookMacroEnabled
'    ThisWorkbook.Close
End Sub


Private Sub SuchenErsetzen(Quelle As Range)
Dim Erg As Range
Set Erg = Range(Quelle.EntireColumn.Range("A32"), Quelle.Offset(-1, 0)).Find(Quelle.Value)
If Not Erg Is Nothing Then
Quelle.EntireRow.Copy Erg.EntireRow
Quelle.EntireRow.Delete
End If
End Sub

Function Pfad_prüfen(Pfad As String) As Folder
'gibt einen Folder-Objekt zurück, wenn Pfad vorhanden, sonst Nothing
On Error Resume Next
Set Pfad_prüfen = FSO.GetFolder(Pfad)
End Function

Function Datei_prüfen(Pfad As String) As File
'gibt einen File-Objekt zurück, wenn Pfad vorhanden, sonst Nothing
On Error Resume Next
Set Datei_prüfen = FSO.GetFile(Pfad)
End Function

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AN31")) Is Nothing And Not Range("AN31") = "" Then _
Workbooks.Open "X:\Dateipfad"
End Sub

Danke vorab
Gruß Andreas

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in neue Datei kopieren
12.05.2022 12:10:15
peterk
Hallo
Dim Datei as File
Gibt es nicht!
Peter
AW: Werte in neue Datei kopieren
12.05.2022 12:27:09
Andreas
Hi Peter,
Danke für die Rückmeldung.
Die Zeile hab ich gelöscht.
Code sieht jetzt aus wie unten.
Bekomme aber eine Fehlermeldung:
Laufzeitfehler 91
Objektvariable oder With-Blockvariable nicht festgelegt.
Kannst du mir weiterhelfen?
Gruß Andreas

Private Sub CommandButton1_Click()
Dim Erg As Range
Dim wsPL As Worksheet
Const cNrAdr = "B2" 'Adresse der Zelle, wo der Planungsnummer zu lesen ist
'4. + 5.
With Workbooks("ISF Tabelle.xlsm").Worksheets("ISF fällig")
Set Erg = .Range("A2:A" & .Range("A99999").End(xlUp).Row).Find(wsPL.Range("A2").Value)
If Erg Is Nothing Then Set Erg = .Range("A99999").End(xlUp).Offset(1, 0) 'wenn kein Treffer, dann als neue Zeile am Ende
wsPL.Range("A2:M2").Copy
Erg.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End With
End Sub

Anzeige
AW: Werte in neue Datei kopieren
12.05.2022 14:34:14
Andreas
Konnte es selber lösen, aber Danke für deine Hilfe Peter :)
Gruß Andreas

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige