Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Hvis du skal hente noget fra en anden fil, skal denne være åben. Ellers kan du ikke anvende dynamiske referencer. Dette skyldes at INDIREKTE kun virker på åbne filer.
I modsat fald må du lave en makro, som henter informationen ud af den rigtige celle i det rigtige regneark,.
Nedenstående makro, forudsætter, at regnearket, du skal hente fra, hedder mybook.xls og ligger i roden på c:. Dette kan også gøres dynamisk.
I det ark, hvor du skal bruge info, taster du kolonne i B2 og Række i B3.
Derefter hentes værdien fra den påglældende celle i det lukkede ark, og denne indsættesi C1 i det aktive ark. Systemet kan nok gøres mere dynamisk, hvis du ønsker det.
Sub HentFraArk() Dim xlApp As Object Dim CelVar Dim NewVar
CelVar = Range("B2").Value & Range("B3").Value
Set xlApp = CreateObject("Excel.application") xlApp.Workbooks.Open Filename:="h:\mybook.xls" NewVar = xlApp.Sheets(1).Range(CelVar).Value xlApp.ActiveWorkbook.Close Set xlApp = Nothing
Jeg tror ikke at jeg kan gennemskue andre løsninger end den "hårde", altså indtastning af de forskellige referencer manuelt (evty kopiering og manuel rettelse af sidste led).
okay prøver alligevel - kan man så ikke sende et tal med i funktionen, altså noget i den stil =hentfraark(18)
Function HentFraArk(ind) Dim xlApp As Object Dim CelVar Dim NewVar
CelVar = Range("B2").Value & ind Range("B3").Value '''''?????''''''
Set xlApp = CreateObject("Excel.application") xlApp.Workbooks.Open Filename:="C:\Huskalkulation\styreprogrammer\Roust-de.xls" '''''''''' her skal jeg så vælge det rigtige ark (Opsamling ydervæg) ''''''''''''' NewVar = xlApp.Sheets(1).Range(CelVar).Value xlApp.ActiveWorkbook.Close Set xlApp = Nothing
HentFraArk = NewVar
End Function
Har lige markeret et par steder, der ved jeg ikke lige hvordan og hvorledes, håber at du også kan hjælpe der
nå nu har jeg fået det til at virke, men der er bare et lille proble - den opdatere kun når jeg sener værdien. Den skulle auto-opdatere når jeg ændre i en af variablerne som den bruger
Marks a user-defined function as volatile. A volatile function must be recalculated whenever calculation occurs in any cells on the worksheet. A nonvolatile function is recalculated only when the input variables change. This method has no effect if it's not inside a user-defined function used to calculate a worksheet cell.
Så denne skulle virke, med hensyn til opdatering
Function HentFraArk(ind) Dim xlApp As Object Dim CelVar Dim NewVar Application.Volatile CelVar = Range("B2").Value & ind Range("B3").Value '''''?????''''''
Set xlApp = CreateObject("Excel.application") xlApp.Workbooks.Open Filename:="C:\Huskalkulation\styreprogrammer\Roust-de.xls" '''''''''' her skal jeg så vælge det rigtige ark (Opsamling ydervæg) ''''''''''''' NewVar = xlApp.Sheets(1).Range(CelVar).Value xlApp.ActiveWorkbook.Close Set xlApp = Nothing
Jeg håber ikke det regneark der skal hentes er ret stort, for som kabbak skriver vil application.volatile gøre at enhver nok så lille beregning af dit ark vil tvinge excel til at åbne en ny version af excel og hente regneark ind og hente data fra arket. Dette vil den gøre 1 gang for hver funktion HentFraArk, som du har sat ind. Dvs. at hvis du har sat funktionen ind 10 steder, skal der ved en tilfældig ændring, som ikke engang omfatter de celler funktionen står i åbnes og lukkes 10 excel applicationer.
Et forslag som relaterer sig til kabbak's 1. svar med Indirekte, ville være at indsætte en auto_open makro der henter pågældende regneark ind skrivebeskyttet og skjult for brugeren når dit regneark åbnes. (og en auto_close der lukker den ned sammen med) På denne måde kan du bruge Indirekte alle steder. Da den er åbnet skrivebeskyttet vil andre kunne bruge samme regneark samtidig.
For at gøre dette indsætter du bare disse to makroer i modulet ThisWorkBook Private Sub Workbook_Open() Application.ScreenUpdating = False Workbooks.Open "C:\Huskalkulation\styreprogrammer\Roust-de.xls", False, True ActiveWindow.Visible = False Application.ScreenUpdating = True End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("Roust-de.xls").Close savechanges:=False End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.