range.select und selection.copy umgehen
Sandra
Ich komme ohne Eure Hilfe nicht weiter.
Mein Makro ist inzwischen ziemlich umfangreich, weshalb ich den Code nur zum Teil unten anfügen werde. Vorab aber erst einmal mein Problem.
Ich erstelle mit dem Makro aus einer xlsm-Datei eine xlsx-Datei. Dazu wird in der xlsm in Zeile 2 nach vorher definierten Spaltenüberschriften gesucht. Werden diese gefunden werden diese ab Zeile 2 in die xlsx-Datei eingefügt. Das klappt supper. Nun muss aber auch noch (ohne Prüfung - als feste Angabe) die Zelle c1 mit übertragen werden.
Ich hatte das mit dem Makrorekorder versucht. Da sind dann aber die Dateinamen fix. Das darf natürlich nicht sein. Kann ich diesen Code:
Set oXlSM = ThisWorkbook 'ThisWorkbook = die xlsm-Datei, in der dieser Code steht
For nIndex = LBound(ArrayQuelle) To UBound(ArrayQuelle)
With oXlSM.Sheets("Mängel vor der Abnahme") 'Name des Tabellenblattes, welches in der xlsm- _
_
Datei benutzt wird
nIndexXLSM = Application.Match(ArrayQuelle(nIndex), .Rows(2), 0) 'sucht in der Zeile 2 _
_
nach den Spaltenbeschriftungen
If IsNumeric(nIndexXLSM) Then
MaxRow = .Cells(.Rows.Count, nIndexXLSM).End(xlUp).Row 'letzte Zeile in Spalte
Set rngXLSM = .Range(.Cells(3, nIndexXLSM), .Cells(MaxRow, nIndexXLSM))
If MaxRow > 3 Then
ArrayXLSM = rngXLSM
ElseIf MaxRow = 3 Then
ArrayXLSM = rngXLSM.Resize(, 2)
ReDim Preserve ArrayXLSM(1 To UBound(ArrayXLSM), 1 To 1)
End If
'Fehlermeldung die ausgegeben wird, wenn eine festgelegte Spaltenüberschrift nicht in der xlsm- _
_
Datei gefunden werden konnte
strFehler = strFehler & sListZeichen & "Die Spalte'" & _
ArrayQuelle(nIndex) & "' wurde nicht in der Quell-Datei gefunden" & _
vbCr
End If
End With
If IsArray(ArrayXLSM) Then
With oXLSX.Sheets("Mängel vor der Abnahme") 'Name des Tabellenblattes, welches in der _
_
xlsx-Datei benutzt wird
nIndexXLSX = Application.Match(ArrayZiel(nIndex), .Rows(2), 0) 'sucht in der Zeile _
_
2 nach den Spaltenbeschriftungen
If IsNumeric(nIndexXLSX) Then
'alle Inhalte der Zellen ab Zeile 3 werden für neue Daten gelöscht
.Range(.Cells(3, nIndexXLSX), .Cells(.Rows.Count, nIndexXLSX)).ClearContents
Set rngXLSX = .Cells(3, nIndexXLSX) 'erste Einfügezelle
rngXLSX.Resize(UBound(ArrayXLSM), 1) = ArrayXLSM 'Daten aus Array einfügen
Else
strFehler = strFehler & sListZeichen & "Die Spalte'" & _
ArrayZiel(nIndex) & "' wurde nicht in der Ziel-Datei gefunden" & _
_
vbCr
End If
End With
End If
ArrayXLSM = Empty
Next nIndex
irgendwie so ergänzen, dass dieses hier:
Datum der Begehung wird übertragen
Range("C1").Select
Selection.Copy
Windows("110708 Mustervorlage Maengelliste - noch in Bearbeitung MB.xlsx"). _
Activate
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Windows("110708 Mustervorlage Maengelliste - noch in Bearbeitung.xlsm"). _
Activate
mit ausgeführt wird?Ich würde mich freuen, wenn Ihr mir mal wieder aus der Patsche helfen könntet.
Liebe Grüße
Sandra