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

Automatisch een werkblad van ander excel bestand

Status
Niet open voor verdere reacties.

frospi

Gebruiker
Lid geworden
13 aug 2009
Berichten
37
Hallo,

Ik heb de volgende vraag;

Hoe kan ik ervoor zorgen dat als ik een excel bestand (A) open dat bij het opstarten een werkblad dat op een andere locatie in een ander excel bestand(B) wordt ingevoegd in excel bestand(A).

Bestand (A) is mijn totaaloverzicht waar ik dus een werkblad van deeladministratie (B) wil invoegen. Dit moet automatisch gebeuren bij het opstarten elke keer opnieuw zodat de gegevens geupdate worden (bestand B wordt dagelijks aangepast) en mij een goed overzicht geeft.

Heb al een tijd rondgezocht en vind alleen maar forum items over het ophalen van gegevens uit andere database programma's etc dus ik hoop dat iemand mij hiermee kan helpen.

Alvast bedankt.

Frospi
 
Excel kun je ook beschouwen als een databaseprogramma.
Maak een Querytable: Menubalk/data/externe gegevens/databasequery/naam van het excelbestand.
 
Laatst bewerkt:
Ook Jeroen bedankt,

Ik ga hier beiden naar kijken.

Groeten Frospi
 
Dag allemaal,

Ik ben een beetje aan het knutselen geweest met jullie suggesties en kwam hier niet helemaal uit. Uiteindelijk ben ik echter verder gekomen door het kijken naar een ander bestand van een collega. Ik kan nu met behulp van een knop (met daaraan gekoppeld de onderstaande macro) de lijst ophalen uit een ander excel bestand en laten plaatsen in het bestand waar ik nu in werk. Dit is precies wat ik wil echter zijn er nog 2 aanpassingen gewenst.

1. De macro wordt nu getriggered door een knop en ik wil graag dat deze macro getriggered wordt door het openen van het bestand, hij moet dus automatisch uitgevoerd worden.

2. Als ik nu de macro uitvoer plaatst hij de gegevens netjes op de juiste plek maar geeft daarna altijd de melding ' er is een grote hoeveelheid informatie aanwezig op het klembord wilt u deze beschikbaar houden voor andere bestanden?' . Deze melding wil ik ook graag weg hebben.

De betreffende macro:

Sub Macro2()
'
' Macro2 Macro
' De macro is opgenomen op 6-11-2009 door Frospi.
'

'
ChDir "S:\Magazijn Stansafdeling"
Workbooks.Open Filename:= _
"S:\Magazijn Stansafdeling\Verzendlijst totaal 2009.xls"
Cells.Select
Selection.Copy
Windows("Registratie DCM werkfile 06-11-209.xls").Activate
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Windows("Verzendlijst totaal 2009.xls").Activate
ActiveWindow.Close
Range("A1").Select
End Sub

PS: 'verzendlijst' is de naam van het werkblad waar de geimporteerde gegevens geplaats worden.

Groeten Frospi
 
Hoi Frospi,

1.
De code zetten in het tabbelad van This Workbook:
Private Sub Workbook_Open()
code
End Sub

De code start nu als het event (Workbook Open) door Excel gestart wordt.

2.
Na Paste
Application.CutCopyMode=False

Dat moet denk ik voldoende zijn.

Jeroen
 
of
Code:
Private Sub Workbook_Open()
  With getobject("S:\Magazijn Stansafdeling\Verzendlijst totaal 2009.xls").sheets(1).Usedrange
     Thisworkbook.sheets(1).range(.address)=.value
     .Parent.Parent.close
  end with
End Sub
 
Laatst bewerkt:
Ik heb de code gezet in ThisWorkbook en krijg bij het openen van de file een compileerfout dat het subscipt buiten het bereik valt. bij foutopsporing krijg je de zin zoals in bijgevoegd plaatje.


wat doe ik fout?

tevens laat excel het bestand waar hij de data uit haalt open staan en sluit deze niet af.

Groeten,
Frospi
 

Bijlagen

  • foutmelding.JPG
    foutmelding.JPG
    30,6 KB · Weergaven: 133
wat er misschien ook mee te maken kan hebben is dat excel aangeeft dat ik een wachtwoord in moet vullen omdat het bestand waar hij de gegevens van wil hebben gereserveerd is door een andere gebruiker. ik kan dan op alleen lezen drukken, de lijst wordt er dan wel ingezet.
 
Hoi Frospi,

Wachtwoord zal het probleem zijn.
Workbook("Verzendlijst totaal 2009.xls").Unprotect Password="1234" of
Worksheet("Verzendlijst totaal 2009.xls").Sheet(1).Unprotect Password="1234"
Zetten voor Windows...Activate

Daarna dezelfde regel maar dan Protect ipv Unprotect

Het werkboek of de sheet wordt even ontdaan van wachtwoord, maar vrijwel direct daarna weer beveiligd.

Jeroen
 
Jzeedijk bedankt,

Ik ga kijken of ik het hiermee kan helpen. Excuses voor late reacties maar dat komt omdat ik hier alleen op vrijdagen aan werk.

Groeten,
Frospi
 
Ok ik heb even geprobeerd en zit nu met het volgende.

wanneer ik deze code in ThisWorkbook toepas:

Private Sub Workbook_Open()
ChDir "S:\Magazijn Stansafdeling"
Workbooks.Open Filename:= _
"S:\Magazijn Stansafdeling\Verzendlijst totaal 2009.xls"
Cells.Select
Selection.Copy
Windows("Registratie DCM werkfile 06-11-209.xls").Activate
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Windows("Verzendlijst totaal 2009.xls").Activate
ActiveWindow.Close
Range("A1").Select

End Sub

heb ik twee problemen namelijk (1) de verzendlijst totaal 2009.xls waar hij de gegevens ophaalt wordt niet afgesloten en blijft open staan en (2) ik krijg Fout 9: Subscript valt buiten bereik. Bij foutopsporing wijst hij naar de regel:

Windows("Verzendlijst totaal 2009.xls").Activate

Daarna heb ik geprobeerd om het wachtwoord eraf te halen op advies van jzeedijk met de volgende code:

Private Sub Workbook_Open()
ChDir "S:\Magazijn Stansafdeling"
Workbooks.Open Filename:= _
"S:\Magazijn Stansafdeling\Verzendlijst totaal 2009.xls"
Cells.Select
Selection.Copy
Worksheet("Verzendlijst totaal 2009.xls").Sheet(1).Unprotect Password = "naj"
Windows("Registratie DCM werkfile 06-11-209.xls").Activate
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Windows("Verzendlijst totaal 2009.xls").Activate
Worksheet("Verzendlijst totaal 2009.xls").Sheet(1).Protect Password = "naj"
ActiveWindow.Close
Range("A1").Select

End Sub

Als ik nu het bestand opstart en ik druk op macro's inschakelen gaat hij meteen naar VB editor en geeft Compileerfout: Sub of function is niet gedefinieerd. Foutopsporing wijst aan:
Private Sub Workbook_Open()
.
Het wachtwoord voor de verzendlijst file is 'naj' dus die had ik ook ingevuld in de code.

Wat kan ik nu het beste doen?

Groeten,
Frospi
 
Laatst bewerkt:
Aangezien de post nu 14 dagen online staat reageer ik even op mijn eigen bericht want hij is nog niet afgesloten. Alle hulp is nog steeds welkom!

Groeten,
Frospi
 
Code:
Private Sub Workbook_Open()
  Workbooks.Open Filename:="S:\Magazijn Stansafdeling\Verzendlijst totaal 2009.xls"
  With GetObject("S:\Magazijn Stansafdeling\Verzendlijst totaal 2009.xls").Sheets(1).UsedRange
  ThisWorkbook.Sheets(1).Range(.Address) = .Value
     .Parent.Parent.Close
  End With
End Sub
 
Warme Bakker, ik heb je code geprobeerd in een nieuw excel file en daar werkt hij. Maar als ik de code in het bestand zet waar het in moet zet deze code alles in de eerste sheet. De sheet waar de data heen moet is sheet 16.

Toen heb ik de code zo aangepast:

Private Sub Workbook_Open()
Workbooks.Open Filename:="S:\Magazijn Stansafdeling\Verzendlijst totaal 2009.xls"
With GetObject("S:\Magazijn Stansafdeling\Verzendlijst totaal 2009.xls").Sheets(1).UsedRange
ThisWorkbook.Sheets(16).Range(.Address) = .Value
.Parent.Parent.Close
End With

End Sub

Sheet 16 wordt nu niet ingevuld en blijft leeg, maar als ik precies dezelfde handeling op een nieuw gemaakt bestand toepas en ik wijzig dan de formule op dezelfde manier en vul dan geen 16 maar 3 in, dan zet excel de waarden netjes in sheet 3. Dit gebeurd dus niet bij het bestand waar ik het in wil hebben!

Er is dus iets met dat bestand waardoor het niet werkt (want in een nieuwgemaakt bestand werkt het wel). Wat kan dit zijn?

Groeten,
Frospi
 
1. Volg een basis cursus Excel
2. Koop een goed Excel VBA-boek en neem dat van voor naar achter door.
3. Excel is te complex om door 'proberen' te leren.
 
Het indexnummer van een blad wordt bepaald door de positie v/h blad op de werkbalk. De naam van een blad wordt weergegeven op de tabs van het werkblad. Dus Sheets(16) is niet hetzelfde als Sheets("Sheet16")
 
Bedankt, ik ga er naar kijken.

En wat betreft de reactie van snb; helemaal gelijk maar helaas heb ik het al druk genoeg met mijn baan en de premaster die ik voornamelijk in de avond uurtjes volg waardoor het voor mij lastig is om ook nog eens VBA op te pakken, maar zou wel het beste zijn.

Groeten,
Frospi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan