• 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.

range vanuit een workbook kiezen en naar een ander overzetten

Status
Niet open voor verdere reacties.

ikselle

Gebruiker
Lid geworden
25 mei 2009
Berichten
198
Hallo, ben aan het worstelen met volgend probleem:
Vanuit worksheet master wil ik kunnen kiezen uit welk worksheet (in dit geval is dat "slave") en uit welk werkblad ik de inhoud kopieer naar sheet 1 van master. Ik doe dit nu met het leggen van links maar veronderstel dat arrays veeeel sneller gaan. Kan iemand een zetje geven.
Bijkomende vraag : moet een workbook geopend zijn alvorens je eruit kan kopieren en/of schrijven ? Bedankt alvast.
 

Bijlagen

  • master.xlsm
    18,4 KB · Weergaven: 17
  • Slave.xls
    26 KB · Weergaven: 16
Heb ondertussen de inhoud van sheet(3) naar sheet(1) geregeld. Op sheet(1) heb ik geprobeerd om in N2 en N4 een verwijzing te bekomen naar het extern werkboek mits worksheetformule INDEX. Maar al die " en ' => heb een machete in deze jungle nodig :confused:
 

Bijlagen

  • master.xlsm
    18,8 KB · Weergaven: 22
Laatst bewerkt:
Als je gebruik maakt van Indirect-functies moet het bronbestand open staan, , niet zo voor rechtstreekse benadering.
 
Om te checken of een werkboek bestaat kun je deze functie gebruiken:
Private Function FileExists(fname) As Boolean
'Geeft TRUE terug als een bestand bestaat
Dim x As String

x = Dir(fname)
FileExists = IIf(x <> "", True, False)

End Function
 
Lang geleden, op het net eens een Functie gevonden, om gegevens uit een GESLOTEN bestand te halen.
Bekijk het eens (natuurlijk het pad aanpassen aan uw situatie.)
 

Bijlagen

  • Master.xlsm
    32 KB · Weergaven: 38
  • Slave.xlsx
    11 KB · Weergaven: 25
@Cobbe ; bedankt voor je uitleg en advies
@Wieter ; dit is helemaal wat ik zocht !!! Bedankt.:thumb:
 
Met arrays gaat het vele malen sneller wat volgens mij de vraag is:d


Code:
Private Sub CommandButton2_Click()
pad = "D:\Temp\"
bestand = Sheets("Blad1").Range("B5")
blad = Sheets("Blad1").Range("B6")

With Application
    .ScreenUpdating = False
    .DisplayAlerts = False

    If Dir(pad & bestand) = "" Then
        MsgBox ("Bestand Niet Gevonden!")
        Exit Sub
      Else
        Workbooks.Open pad & bestand
        If IsError(Evaluate(blad & "!A1")) Then
            MsgBox "blad betaat niet"
            Exit Sub
          Else
            ar = Sheets(blad).Cells(1).CurrentRegion
            ActiveWindow.Close 0
        End If
    End If
    Sheets(2).Cells(1).Resize(UBound(ar), UBound(ar, 2)) = ar
    .DisplayAlerts = True
End With
End Sub

Het wordt wel weggezet op het tweede blad omdat het anders jouw parameters overschrijft.
 
Knap VenA, en dan is die ingewikkelde Function ook niet nodig.
 
@VenA bedankt voor jouw oplossing. Ga ik zeker proberen. Was al zeer tevreden met de oplossing van wieter maar hoe sneller hoe beter:D
 
@VenA
Wegzetten naar het eerste blad gaat toch ook?(denk ik???)
Code:
Sheets(1).Cells(8, 1).Resize(UBound(ar), UBound(ar, 2)) = ar
 
Laatst bewerkt:
Heb een bestandje van om en bij 8000 rijen die ik normaal met een lus zou doorlopen. Wil wel een kijken hoeveel tijdswinst ik maak met array. Ga eens uitzoeken hoe ik daarvoor timer moet installeren.:)
 
Zet bovenaan je code
Code:
 t = timer
en onderaan je code
Code:
Msgbox timer - t
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan