• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Tot laatste regel niet helemaal juist

Status
Niet open voor verdere reacties.

Gerard2348

Gebruiker
Lid geworden
24 okt 2013
Berichten
370
Beste allemaal,

Onderstaande code heb ik op het net gevonden en met een aantal kleine aanpassingen werkbaar gemaakt naar bijna tevredenheid. Deze macro kopieert gegevens uit andere aangegeven workbooks. Dit gaat op zich goed. Wat nog niet is gelukt is de aanpassing die ik heb gedaan (in het rood weergegeven. )
Code:
Set destrange = BaseWks.Range("B" & rnum).End(xlUp)
Code:
Sub Ophalen_Gegevens()   
   


 Dim MyPath As String
    Dim SourceRcount As Long, Fnum As Long
    Dim mybook As Workbook, BaseWks As Worksheet
    Dim sourceRange As Range, destrange As Range
    Dim rnum As Long, CalcMode As Long
    Dim SaveDriveDir As String
    Dim FName As Variant
ActiveSheet.Unprotect
    'Change ScreenUpdating, Calculation and EnableEvents
    With Application
       ' CalcMode = .Calculation
      '  .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    SaveDriveDir = CurDir
    ChDirNet "H:\2015"

    FName = Application.GetOpenFilename(fileFilter:="Excel Files (*.xl*), *.xl*", _
                                        MultiSelect:=True)
    If IsArray(FName) Then

        'Add a new workbook with one sheet
        Set BaseWks = ActiveWorkbook.Worksheets(1)
        rnum = 10


        'Loop through all files in the array(myFiles)
        For Fnum = LBound(FName) To UBound(FName)
            Set mybook = Nothing
            On Error Resume Next
            Set mybook = Workbooks.Open(FName(Fnum))
            On Error GoTo 0

            If Not mybook Is Nothing Then

                On Error Resume Next
                With mybook.Worksheets(1)
                    Set sourceRange = .Range("B46:L100")
                End With

                If Err.Number > 0 Then
                    Err.Clear
                    Set sourceRange = Nothing
                Else
                    'if SourceRange use all columns then skip this file
                    If sourceRange.Columns.Count >= BaseWks.Columns.Count Then
                        Set sourceRange = Nothing
                    End If
                End If
                On Error GoTo 0

                If Not sourceRange Is Nothing Then

                    SourceRcount = sourceRange.Rows.Count

                    If rnum + SourceRcount >= BaseWks.Rows.Count Then
                        MsgBox "Sorry there are not enough rows in the sheet"
                        BaseWks.Columns.AutoFit
                        mybook.Close savechanges:=False
                        GoTo ExitTheSub
                    Else

                        'Copy the file name in column A
                      '  With sourceRange
                            'BaseWks.Cells(rnum, "A"). _
                          '          Resize(.Rows.Count).Value = FName(Fnum)
                       ' End With

                        'Set the destrange
                                              
                      [COLOR="#FF0000"]  Set destrange = BaseWks.Range("B" & rnum).End(xlUp)[/COLOR]                  
                        'we copy the values from the sourceRange to the destrange
                        With sourceRange
                            Set destrange = destrange. _
                                            Resize(.Rows.Count, .Columns.Count)
                        End With
                        destrange.Value = sourceRange.Value

                        rnum = rnum + SourceRcount
                    End If
                End If
                mybook.Close savechanges:=False
            End If

        Next Fnum
        'BaseWks.Columns.AutoFit
    End If

ExitTheSub:
    'Restore ScreenUpdating, Calculation and EnableEvents
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
       ' .Calculation = CalcMode
    End With
    ChDirNet SaveDriveDir
    
    Call Samenvoegen
    ActiveSheet.Protect
End Sub
[/CODE]

De gegevens worden nu netjes onder elkaar gezet maar de voorgaande regel wordt steeds verwijderd. Wie heeft de oplossing voor mij?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan