Hivatkozás másik munkafüzet munkalapjára excel vba probléma
2022-01-24T16:01:57+01:00
2022-01-25T09:18:01+01:00
2022-08-12T06:55:30+02:00
Pilu88
Sziasztok,

A következő képen szeretnék áthivatkozni egy másik munkafüzet első munkalapjára. 
Viszont a sheet hivatkozásnál method ot data member not found hibát kapok.
Van esetleg ötletetek mi nem stimmel nem jövök rá?

Dim forras As Range Dim swb As Workbooks Dim sws as Worksheet Set forras = Workbooks("Test.xlsb").Sheets("Testadat").Range("D2") Set swb = Workbooks(forras) Set sws = swb.Worksheets(1)
Mutasd a teljes hozzászólást!
Köszönöm a sok segítséget, 
Kipróbáltam amit írtál az is hibára futott, de miután a "forras" rangből kinyert adatot stringként kezeltem már működik is.

Dim forras as range Dim Forraswb dim as string set forras = Workbooks("Test.xlsb").Sheets("Testadat").Range("D2") Forraswb = forras.value
Mutasd a teljes hozzászólást!

  • Szia!
    Meg van nyitva a Test.xlsb munkafüzet,illetve ha meg van nyitva, akkor van benne Testadat nevű munkalap? Mert csak ebben az esetben tud működni a hozzárendelés.
    Üdv.
    Mutasd a teljes hozzászólást!
  • szia,

    igen a másik munkafüzet nyitva van, de nem magyaráztam el megfelelően mit szeretnék megvalósítani ez az én hibám bocsánat.
    két munkafüzetem van az egyik fix ez a Test xlsb. , a másik neve változik. A Test.xlsb testadat sheet d2-es mezőjébe írom bele melyik munkafüzetet kell használni éppen pl Book4.xlsx.
    Ha nem mezőből szedem ki a másik munkafüzet nevét akkor a kód működik, de így nem

    Set forras = Workbooks("Test.xlsb").Sheets("Testadat").Range("D2") 'Másik munkafüzet neve Set swb = Workbooks(forras) 'másik munkafüzet hivatkozása Set sws = swb.Worksheets(1) 'másik munkafüzetben első munkalapja ' set sws = Workbooks("Book4.xlsx").Sheets("Testadat") példa
    Mutasd a teljes hozzászólást!
  • Szia!
    Csak egy picit kell igazítani rajta, mivel egy másik munkafüzetet szeretnél megkapni:

    Set forras = Workbooks("Test.xlsb").Sheets("Testadat").Range("D2") 'Másik munkafüzet neve
    helyett

    Set forras = Workbooks(Workbooks("Test.xlsb").Sheets("Testadat").Range("D2").Value) 'Másik munkafüzet neve
    Üdv.
    Mutasd a teljes hozzászólást!
  • A módosítás után  type mismatch errort kapok
    Mutasd a teljes hozzászólást!
  • Szia!
    Nem csoda, hiszen a forras nevű változódat Range-nek definiáltad.
    Én pedig nem voltam elég figyelmes :(
    Az eredeti kérdésedben szereplő sorok:

    Dim forras As Range Dim swb As Workbooks Dim sws as Worksheet Set forras = Workbooks("Test.xlsb").Sheets("Testadat").Range("D2") Set swb = Workbooks(forras) Set sws = swb.Worksheets(1)
    Ebben az esetben a

    Set swb=Workbooks(forras) 'sort így kell módosítani szerintem: Set swb=Workbooks(forras.Value)
    Egyébként ha mindig ugyanoda írod a forrás fájl nevét, akkor az előző válaszomban írt

    Set forras = Workbooks(Workbooks("Test.xlsb").Sheets("Testadat").Range("D2").Value)
    utasítást 

    Set swb = Workbooks(Workbooks("Test.xlsb").Sheets("Testadat").Range("D2").Value
    utasításra módosítva egy lépésben megkapod forrás munkafüzetet.
    Mutasd a teljes hozzászólást!
  • Köszönöm a sok segítséget, 
    Kipróbáltam amit írtál az is hibára futott, de miután a "forras" rangből kinyert adatot stringként kezeltem már működik is.

    Dim forras as range Dim Forraswb dim as string set forras = Workbooks("Test.xlsb").Sheets("Testadat").Range("D2") Forraswb = forras.value
    Mutasd a teljes hozzászólást!
abcd