Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten in neues Tabellenblatt Autofilter

Daten in neues Tabellenblatt Autofilter
05.10.2021 13:44:47
Christina
Der Beitrag ist die Fortsetzung von einem bereits geschlossenen Thema:
Hallo,
teste mal:
Option Explicit
Const strPfad = "C:\Users\cg\Desktop\"

Private Sub CommandButton_OK_Click()
Dim Bestellung As Workbook, Basisdaten As Workbook
Dim strFileName As Variant, i As Long, j As Long
Dim raFund As Range, sh As Shape
Const strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
Application.ScreenUpdating = False
'Vorlage öffnen
Set Bestellung = Workbooks.Open(strDateiname, UpdateLinks:=False, ReadOnly:=True)
'Basis öffnen
Set Basisdaten = BasisDatei_öffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Bestellung unter Zielname speichern
Bestellung.SaveAs strPfad & ThisWorkbook.Worksheets("fenster").Range("B2").Value & " " _
& ThisWorkbook.Worksheets("fenster").Range("D2").Value & ".xls"
'neue Zuweisung, da die Datei ja jetzt unter einem anderen Namen gespeichert wurde
Set Bestellung = Workbooks(ThisWorkbook.Worksheets("fenster").Range("B2") & " " _
& ThisWorkbook.Worksheets("fenster").Range("D2").Value & ".xls")
'Prüfen ob in Basisdaten in Spalte D AJ vorhanden ist
If WorksheetFunction.CountIf(Basisdaten.Worksheets("Fenster- und Terrassentüren").Columns("D"), "AJ") > 0 Then
'Wenn ja, Spalte D nach AJ filtern und Filterergebnis (Spalte A) kopieren
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
.Range("A2").AutoFilter field:=4, Criteria1:="AJ"
With .AutoFilter.Range
.Offset(1).Resize(.Rows.Count - 1).Columns(1).Copy
Bestellung.Worksheets("AJ Warema").Range("A19").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
.Range("A2").AutoFilter
Bestellung.Save
End With
Else
MsgBox "Fehler: Suchbegriff ""AJ"" ist in Spalte D nicht vorhanden."
End If
End If
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
For i = 3 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A")  "" Then
Bestellung.Worksheets("fenster").Cells(i + 6, "A") = .Cells(i, "A").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "B") = .Cells(i, "B").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "C") = .Cells(i, "C").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "D") = .Cells(i, "D").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "E") = Split(.Cells(i, "E").Value, "×")(0)
Bestellung.Worksheets("fenster").Cells(i + 6, "F") = Split(.Cells(i, "E").Value, "×")(1)
Bestellung.Worksheets("fenster").Cells(i + 6, "G") = .Cells(i, "H").Value
End If
Next i
End With
'Suchen und kopieren der Bilder
Bestellung.Worksheets("fenster").Activate
With Bestellung.Worksheets("Fenster")
.Columns("H").ColumnWidth = 37.6
For j = 9 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(j, "A")  "" Then
Set raFund = Basisdaten.Worksheets("Fenster- und Terrassentüren").Columns("A").Find(what:=.Cells(j, "A"), _
LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
For Each sh In Basisdaten.Worksheets("Fenster- und Terrassentüren").Shapes
If sh.TopLeftCell.Address = raFund.Offset(, 8).Address Then
sh.Copy
.Paste
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.Top = .Cells(j, "H").Top
Selection.Left = .Cells(j, "H").Left
.Rows(j).RowHeight = 150
Selection.Height = .Rows(j).Height
Selection.Width = 200
End If
Next sh
End If
End If
Next j
.Range("A12").Select
End With
Bestellung.Save
Set raFund = Nothing
End Sub
Gruß Werner
Hallo Werner!
Ich habe den Code probiert und das Problem mit der ungültiger Index Fehlermeldung ist damit wunderbar behoben.
Allerdings bekommen ich beim Code für das Einfügen der Bilder folgende Fehlermeldung: Laufzeitfehler 1004: Die Paste-Methode des Worksheet-Objektes konnte nicht ausgeführt werden.
Weißt du was hier das Problem sein könnte?
Danke!
LG
Christina
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Sorry: noch offen (owT)
05.10.2021 14:57:14
Yal
AW: Daten in neues Tabellenblatt Autofilter
05.10.2021 23:28:11
Werner
Hallo,
versuch mal so:

'Suchen und kopieren der Bilder
Bestellung.Worksheets("fenster").Activate
With Bestellung.Worksheets("Fenster")
.Columns("H").ColumnWidth = 37.6
For j = 9 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(j, "A")  "" Then
Set raFund = Basisdaten.Worksheets("Fenster- und Terrassentüren").Columns("A").Find(what:=.Cells(j, "A"), _
LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
For Each sh In Basisdaten.Worksheets("Fenster- und Terrassentüren").Shapes
If sh.TopLeftCell.Address = raFund.Offset(, 8).Address Then
sh.Copy
.Cells(j, "H").Select
ActiveSheet.Pictures.Paste.Select
Selection.ShapeRange.LockAspectRatio = msoFalse
.Rows(j).RowHeight = 150
Selection.Height = .Rows(j).Height
Selection.Width = 200
End If
Next sh
End If
End If
Next j
.Range("A12").Select
End With
End Sub
Gruß Werner
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
06.10.2021 12:04:32
Christina
Hallo Werner,
danke für den Versuch.
Es kommt nun leider wieder eine Fehlermeldung:
Laufzeitfehler 1004: Das Paste-Eigenschaft des Pictures-Objektes kann nicht zugeordnet werden.
Es wird folgende Zeile im Code markiert:
ActiveSheet.Pictures.Paste.Select
LG
Christina
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
06.10.2021 12:57:08
Werner
Hallo,
dann zeig mir mal den kompletten Code, so wie du ihn jetzt in deiner Datei in Benujtzung hast.
Gibt es in dieser Datei weiteren Code, den du im Einsatz hast?
Wenn ja, den auch zeigen.
Bei mir funktionieren beide Versionen.
Gruß Werner
AW: Daten in neues Tabellenblatt Autofilter
06.10.2021 13:18:36
Christina
Hallo Werner,
das ist der verwendete Code in der Mappe:
Option Explicit
Const strPfad = "C:\Users\cg\Desktop\"

Private Sub CommandButton_OK_Click()
Dim Bestellung As Workbook, Basisdaten As Workbook
Dim strFileName As Variant, i As Long, j As Long
Dim raFund As Range, sh As Shape
Const strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
Application.ScreenUpdating = False
'Vorlage ?ffnen
Set Bestellung = Workbooks.Open(strDateiname, UpdateLinks:=False, ReadOnly:=True)
'Basis ?ffnen
Set Basisdaten = BasisDatei_?ffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde ge?ffnet.", vbInformation, "Hinweis"
'Bestellung unter Zielname speichern
Bestellung.SaveAs strPfad & ThisWorkbook.Worksheets("fenster").Range("B2").Value & " " _
& ThisWorkbook.Worksheets("fenster").Range("D2").Value & ".xls"
'neue Zuweisung, da die Datei ja jetzt unter einem anderen Namen gespeichert wurde
Set Bestellung = Workbooks(ThisWorkbook.Worksheets("fenster").Range("B2") & " " _
& ThisWorkbook.Worksheets("fenster").Range("D2").Value & ".xls")
'Pr?fen ob in Basisdaten in Spalte D AJ vorhanden ist
If WorksheetFunction.CountIf(Basisdaten.Worksheets("Fenster- und Terrassent?ren").Columns("D"), "AJ") > 0 Then
'Wenn ja, Spalte D nach AJ filtern und Filterergebnis (Spalte A) kopieren
With Basisdaten.Worksheets("Fenster- und Terrassent?ren")
.Range("A2").AutoFilter field:=4, Criteria1:="AJ"
With .AutoFilter.Range
.Offset(1).Resize(.Rows.Count - 1).Columns(1).Copy
Bestellung.Worksheets("AJ Warema").Range("A19").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
.Range("A2").AutoFilter
Bestellung.Save
End With
Else
MsgBox "Fehler: Suchbegriff ""AJ"" ist in Spalte D nicht vorhanden."
End If
End If
With Basisdaten.Worksheets("Fenster- und Terrassent?ren")
For i = 3 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A")  "" Then
Bestellung.Worksheets("fenster").Cells(i + 6, "A") = .Cells(i, "A").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "B") = .Cells(i, "B").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "C") = .Cells(i, "C").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "D") = .Cells(i, "D").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "E") = Split(.Cells(i, "E").Value, "?")(0)
Bestellung.Worksheets("fenster").Cells(i + 6, "F") = Split(.Cells(i, "E").Value, "?")(1)
Bestellung.Worksheets("fenster").Cells(i + 6, "G") = .Cells(i, "H").Value
End If
Next i
End With
'Suchen und kopieren der Bilder
Bestellung.Worksheets("fenster").Activate
With Bestellung.Worksheets("Fenster")
.Columns("H").ColumnWidth = 37.6
For j = 9 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(j, "A")  "" Then
Set raFund = Basisdaten.Worksheets("Fenster- und Terrassent?ren").Columns("A").Find(what:=.Cells(j, "A"), _
LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
For Each sh In Basisdaten.Worksheets("Fenster- und Terrassent?ren").Shapes
If sh.TopLeftCell.Address = raFund.Offset(, 8).Address Then
sh.Copy
.Cells(j, "H").Select
ActiveSheet.Pictures.Paste.Select
Selection.ShapeRange.LockAspectRatio = msoFalse
.Rows(j).RowHeight = 150
Selection.Height = .Rows(j).Height
Selection.Width = 200
End If
Next sh
End If
End If
Next j
.Range("A12").Select
End With
Bestellung.Save
Set raFund = Nothing
End Sub

Private Function BasisDatei_?ffnen() As Workbook
Dim strFileName As Variant
Const strFilter = "Excel-Dateien(*.xls*), *.xls*" 'Dateifilter
ChDrive "C"
ChDir strPfad 'Laufwerk und Pfad definieren, welcher ge?ffnet werden soll"
strFileName = Application.GetOpenFilename(strFilter) 'Datei ausw?hlen
If VarType(strFileName) = vbString Then
Set BasisDatei_?ffnen = Workbooks.Open(strFileName) 'Gew?hlte Datei ?ffnen und ?bergeben
End If
End Function

Anzeige
AW: Daten in neues Tabellenblatt Autofilter
06.10.2021 14:25:45
Werner
Hallo,
entsprechen deine Original-Dateien in ihrem Aufbau exakt den Dateien, die du hier hochgeladen hattest?
Wenn ja, dann bin ich mit meinem Latein am Ende.
Bei mir funktioniert das mit beiden Versionen des Codes in deinen Beispieldateien.
Gruß Werner
AW: Daten in neues Tabellenblatt Autofilter
07.10.2021 10:06:29
Christina
Hallo Werner,
ich verstehe es nicht. Es kommt sowohl bei den Testdateien, die ich hochgeladen habe, als auch bei meinen Originalen die gleiche Fehlermeldung.
Ich lade zur Sicherheit noch einmal die drei Dokumente mit dem angepassten VBA-Code hoch.
Hier die Links:
https://www.herber.de/bbs/user/148481.xlsm
https://www.herber.de/bbs/user/148482.xlsx
https://www.herber.de/bbs/user/148483.xls
Das erste Dokument ist das mit dem Kommandofeld, das zweite ist die Bestellung, das dritte die Basisdatei.
Vielleicht ist doch noch wo in dem von mir übernommenen Code ein Fehler? Oder es gibt ein Problem in irgendwelchen Einstellungen, das ich nicht kenne. Ich versuche es in der Zwischenzeit auf einem anderen PC.
Danke für deine Mühen!!
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
07.10.2021 10:12:18
Christina
Hallo Werner,
siehe da, auf meinem Privat-PC funktioniert es.
Hast du eine Idee, was da auf meinem Arbeits-PC eingestellt sein könnte? Irgendein Schutz? Firewall?
Danke!
LG
Christina
AW: Daten in neues Tabellenblatt Autofilter
07.10.2021 11:14:58
Christina
Ich kläre das mit den Systemadministratoren, schätze dann wird sich das Problem lösen, ich gebe euch Bescheid, wenn es geklärt ist.
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
07.10.2021 12:55:24
Christina
Hallo!
Wir konnten das Problem leider noch nicht lösen. Die Einstellungen von Excel sind bei beiden PCs gleich. Nur auf dem privaten PC ist das Betriebssystem Microsoft 365 installiert, Firmen-PC Windows 10 Pro.
Hat von euch noch wer eine Idee, wo noch ein Problem sein könnte?
Danke!
LG
Christina
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
07.10.2021 12:56:51
Christina
Excel-Version auf Firmen-PC ist 2016 nicht 2010 wie ursprünglich angegeben.
AW: Daten in neues Tabellenblatt Autofilter
07.10.2021 16:52:40
Werner
Hallo,
hast du mal geschaut, ob in beiden Versionen im VBA-Projekt die gleichen Verweise gesetzt sind, oder ob du in der nicht funktionierenden Version irgendwelche "gebrochenen" Verweise drin hast?
VBA-Projektexplorer - Extras - Verweise
Bei gebrochenen Verweisen steht da nicht vorhanden oder nicht gefunden (weiß ich jetzt nicht so genau) dahinter. Dann dort den Haken entfernen.
Gruß Werner
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
11.10.2021 08:06:29
Christina
Hallo Werner,
ja, das habe ich auch überprüft und wie gesagt alle Trust Center Einstellungen. Bis jetzt konnten mir die IT-Zuständigen in meiner Firma leider auch nicht weiterhelfen. Ich befürchte, dass ich das mit den Bildern weg lassen muss, wenn nicht noch eine zündende Idee kommt, was hier der Grund sein könnte.
Trotzdem danke!!
LG
Christina
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige