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

Data ophalen uit ander excel bestand in netwerk

Status
Niet open voor verdere reacties.

john0112

Gebruiker
Lid geworden
24 feb 2012
Berichten
8
Dames en Heren,

Ik heb tweetal excel bestanden op verschillende plekken in het netwerk.

Het eerste bestand InvullijstPortier.xlsx wordt door de portier ingevuld.
Het tweede bestand InkijklijstTP.xlsx wordt alleen gebruikt door de grondstofontvangers om te kijken wat er in de wacht staat om daarmee ook de prioriteit kunnen vaststellen.

Nu zou het fijn zijn dat de data van het eerste excel bestand (InvullijstPortier.xlsx ) automatisch in het tweede excel bestand zou komen ( InkijklijstTP.xlsx )

Ik heb al diversen VBA voorbeelden proberen te gebruiken maar ik kom er niet aan uit.
Het automatisch vernieuwen van een Excel bestand lukt wel maar de data ophalen niet

Is er iemand die me kan helpen?
Voor de duidelijkheid heb ik beide bestanden er bij gedaan.

Mijn dank zal groot zijn.
 

Bijlagen

  • InkijklijstTP.xlsx
    10,8 KB · Weergaven: 41
  • InvullijstPortier.xlsx
    13,5 KB · Weergaven: 30
Met wat puzzelen ben ik wat verder.
Ik kan nu de data vanuit een gesloten bestand ophalen.

Dit gebeurt iedere keer als ik het bestand openen automatisch.

Maar hoe kan ik het voorelkaar krijgen dat zeg maar iedere 10 minuten dit automatisch gebeurd.
dus bij het verversen van het scherm de routine laten lopen zodat we de altijd de laatste informatie op het scherm hebben?

Code:
'Hiermee kun je data halen uit een gesloten excel file
 
Private Sub Workbook_Open()
     
    Dim FilePath$, Row&, Column&, Address$
     
     'De constanten & FilePath kun je veranderen naar het juiste pad
     '***************************************
    Const FileName$ = "InvullijstPortier.xlsx"
    Const SheetName$ = "Sheet1"
    Const NumRows& = 75
    Const NumColumns& = 10
    FilePath = ActiveWorkbook.Path & "\"
     '***************************************
     
    DoEvents
    Application.ScreenUpdating = False
    If Dir(FilePath & FileName) = Empty Then
        MsgBox "Het bestand " & FileName & " is niet gevonden", , "Bestand bestaat niet"
        Exit Sub
    End If
    For Row = 1 To NumRows
        For Column = 1 To NumColumns
            Address = Cells(Row, Column).Address
            Cells(Row, Column) = VerkrijgDataTP(FilePath, FileName, SheetName, Address)
            Columns.AutoFit
        Next Column
    Next Row
    ActiveWindow.DisplayZeros = False
End Sub
 
 
Private Function VerkrijgDataTP(Path, File, Sheet, Address)
    Dim Data$
    Data = "'" & Path & "[" & File & "]" & Sheet & "'!" & _
    Range(Address).Range("A1").Address(, , xlR1C1)
    VerkrijgDataTP = ExecuteExcel4Macro(Data)
End Function
 
Ben weer wat verder gekomen maar nu loop ik helemaal vast.

Ik kan nu het bestand wat gevuld wordt door anderen en daarna gesloten updaten om de tijd dat ik wil.
Maar nu moet ik ook nog uit kolom G de rijen verwijderen waarvan de cellen gevild zijn.

Kan iemand mij hiermee helpen a.u.b.

Onderstaande code die ik gebruik.

Het eerste stuk code staat in ThisWorkbook en het tweede deel code zit in een module


De code die in ThisWorkBook staat

Code:
Private Sub Workbook_Open()

  Application.OnTime Now + TimeValue("00:00:30"), "Begin"

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

     Application.OnTime dTime, "Begin", , False

End Sub

De code die in de module 1 staat

Code:
Public dTime As Date
Sub Begin()
    dTime = Now + TimeValue("00:00:30")
    Application.OnTime dTime, "Begin"
     
    Dim FilePath$, Row&, Column&, Address$
     
     'De constanten & FilePath kun je veranderen naar het juiste pad
     '***************************************
    Const FileName$ = "InvullijstPortier.xlsx"
    Const SheetName$ = "Sheet1"
    Const NumRows& = 75
    Const NumColumns& = 10
    FilePath = ActiveWorkbook.Path & "\"
     '***************************************
     
    DoEvents
    Application.ScreenUpdating = False
    If Dir(FilePath & FileName) = Empty Then
        MsgBox "Het bestand " & FileName & " is niet gevonden", , "Bestand bestaat niet"
        Exit Sub
    End If
    For Row = 1 To NumRows
        For Column = 1 To NumColumns
            Address = Cells(Row, Column).Address
            Cells(Row, Column) = VerkrijgDataTP(FilePath, FileName, SheetName, Address)
            Columns.AutoFit
        Next Column
    Next Row
    ActiveWindow.DisplayZeros = False
End Sub

 
Private Function VerkrijgDataTP(Path, File, Sheet, Address)
    Dim Data$
    Data = "'" & Path & "[" & File & "]" & Sheet & "'!" & _
    Range(Address).Range("A1").Address(, , xlR1C1)
    VerkrijgDataTP = ExecuteExcel4Macro(Data)
End Function
 
Dit is standaard functionaliteit in Excel, geen macro's nodig.
In tab Gegevens kies gegevens ophalen van Access. Zoek je excel bestand op en volg de instructies.
Als de verbinding eenmaal is gelegd kun je hiervan de eigenschappen aanpassen. Eén ervan is dat de gegevens verbinding om de x minuten ververst moet worden.

Aandachtspunt: de gegevens die de portier op zijn scherm ziet hoeven niet overeen te komen met de gegevens op schijf.
 
Pixcel bedankt voor je reactie maar als ik die functie probeer dan kan ik het bestand InkijklijstTP niet open laten staan omdat ik dan de melding krijg dat het bestand al door een andere gebruiker wordt gebruikt.

Ik zal de situatie schetsen waar ik mee te maken heb

. Het bestand Invullijst komt per mail binnen bij de portier.
. De portier slaat het bestand op als InvullijstPortier.xlsx in een map
. De tankenparkermedewerkers die aan de ander kant van de locatie zit leest in het bestand Inkkijklijst.xlxs wat er op het terrein staat om te lossen.

Nu werkt de code die ik gebruik goed als de bestanden in dezelfde map staan en niet als ze verschillende plekken in het netwerk staan.
en de reden dat regels verwijdert moeten worden wanneer ze aan een bepaalde voorwaarde hebben voldaan. ( als er ik kolom G een waarde is ingevuld ) is dat die wagen al is gelost en niet meer op het terrein is.

Ik heb de bestande met de code erin erbij gedaan. ( code zit in Inkijklijst.xlsm )
Ikzelf kom er niet aan uit hoe ik het zo krijg dat het pad klopt en ook niet hoe ik de regels verwijder.
 

Bijlagen

  • InvullijstPortier.xlsx
    13,5 KB · Weergaven: 28
  • InkijklijstTP.xlsm
    24,1 KB · Weergaven: 26
Ik moet je teleurstellen: de suggestie van Pixcel werkt als je in de inkijklijstTP.xlsm een querytabel maakt naar bestand invullijstportier.xlsx.
Het bestand dat open moet blijven staan is invullijstportier.xlsx.

Het is verreweg de eenvoudigste konstruktie.
 
Het probleem is dat Invullijst niet open kan blijven staan en dat Inkijklijst open moet blijven staan.
De invullijst wordt via mail aangeleverd en kan dus geen code of verwijzing bevatten aangezien er iedere keer een nieuwe lijst komt.

daarom ben ik tot de huidige constructie gekomen
 
Lees mijn svp post nog eens goed.
 
Snb,

Sorry maar dit is voor mij niet zo makkelijk.

Ik doe wat je zegt en maak querytabel.

dat lukt allemaal maar zoals al eerder gezegd invullijst kan niet open blijven staan dus ik weet niet hoe ik dit moet oplossen.

Ik krijg nu onderstaande melding als hij het bestand wil verversen
 

Bijlagen

  • error.png
    error.png
    9,4 KB · Weergaven: 60
Laatst bewerkt:
Ga naar Gegevens > Verbindingen, kies de verbinding en kies Eigenschappen.
Ga naar de tab Definitie en vervang in de verbindingsreeks de tekst "Mode=Share Deny Write" door "Mode=Read"
Save, sluit en opnieuw opstarten.
(Ben niet helemaal zeker of dit hier helemaal gaat helpen maar dit is een stap die je altijd zou moeten maken.)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan