Code optimieren
18.10.2020 14:17:41
Andreas
Ich habe folgenden Code aus dem Internet mir in meiner Datei entsprechend anzupassen.
So gesehen funktioniert auch alles.
Mein Problem was ich habe und gern gelöst bekommen würde ist folgendes
in der Codezeile
(Bereich = "B5:IV697" ' aus welchem Bereich soll er holen?)
wird der Bereich "B5:IV697" korrekt aus der geschlossenen Datei kopiert und in die geöffnete Datei wieder eingefügt
da sich aber der Bereich in der Quelldatei in der Zeilenanzahl sich ändern kann hätte ich das Ende gern mit Rows.End(xlUp) gelöst.
Mein Ansatz war dies evtl. mit der CodeZeile
Bereich = .Range("B5", .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count))
zu lösen.
Dies funktioniert aber leider nicht.
Auch mehrere Recherchen im Internet konnten mir nicht wirklich weiterhelfen
Kann mir da vielleicht jemand von Euch helfen und den Code entsprechend anpassen?
bin so langsam am verzweifeln.
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org
' wird durch die HoleDaten aufgerufen
Dim strQuelle As String
Dim Zeilen As Long
Dim Spalten As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range( _
SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from _
closed Workbook"
GetDataClosedWB = False
End Function
Public Sub HoleDatenRessourcenplanungErfassungBearbeitung()
' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Dim Bereich As String
Dim Ziel As Range
'Dim lngZeile As Long
Pfad = "G:\Arbeit_Station und Service\07_Ressourcenplanung\"
Dateiname = "PM aktuelle Ressourcenplanung.xlsm" ' aus welcher Datei soll er holen?
Blatt = "Erfassung_Bearbeitung" ' von welcher Tabelle soll er holen?
'diese CodeZeile funktioniert
Bereich = "B5:IV697" ' aus welchem Bereich soll er holen?
'nehme ich stattdessen diese CodeZeile wird nichts kopiert und eingefügst
'wie müsste der Code abgeändert werden das ich ab Zeile "B5" bis Zeile "IV : Letzte" _
kopieren kann
'Bereich = .Range("B5", .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)) '. _
Select
' in welchen Bereich soll er kopieren? Genauer gesagt:
'Bei welcher Zelle soll er anfangen, Daten reinzukopieren? Bsp: ActiveCell geht auch
Set Ziel = Worksheets("Erfassung_Bearbeitung").Range("B5")
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten Bereich importiert"
End If
End Sub
Für Eure Bemühungen bedanke ich mich bereits jetzt
Gruß Andreas