excel: macro in kopie stopt als origineel sluit*

Pagina: 1
Acties:
  • 117 views sinds 30-01-2008
  • Reageer

  • made
  • Registratie: Juni 2002
  • Laatst online: 09-05 12:21

made

.. made by made ..

Topicstarter
Zit met een probleem.
Ik heb een excel bestand wat op het netwerk staat en waar zo'n 20 mensen mee werken.
Als je dat bestand opent dan wordt het bestand automatisch eerst lokaal gekopieerd en hernoemd.

Het probleem is dat mensen informatie moeten toevoegen aan het orgineel.
Dit doen ze door in de kopie het een en ander in te vullen.

Ik dacht :
Orgineel bescheremn met wachtwoord voor schrijf rechten.
Als orgineel zonder schrijf rechten wordt geopend dan lokaal opslaan.

In het lokale bestand dan : Als er informatie toegevoegd moet worden dan orgineel openen met schrijf rechten

( bovenstaande werkt ! )
Gegevens uit lokaal bestand kopieren en plakken in orgineel.
Werkt ook nog.
lokaal bestand activeren.
orgineel sluiten...... en hiermee wordt ook de macro gestopt.

Ik heb vanalles geprobeerd. Zelfs de userform die openstaat op het moment dat het orgineel wordt geopend wordt afgesloten.

Iemand een idee om dus 1 bestand te gebruiken wat evt door 20 mensen tegelijk geopend kan worden waar een centraal iets in zit.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

En een langslopende mod mag een titel voor je verzinnen? [vb+excel] is nu niet bepaald een pakkende omschrijving van je probleem. ;)

Kijk eens naar een xla - invoegtoepassing (is al eerder geroepen) en post eens een stukje code. Normaal is het namelijk niet dat een macro stopt als een ander bestand wordt gesloten, tenzij natuurlijk je macro in dat bestand staat.

maar dat zou niet slim zijn :X

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Telco
  • Registratie: Juni 2001
  • Laatst online: 29-08-2024

Telco

Biertje?

Waarom beveilig je het origineel dan niet tegen sluiten? Als ik je relaas zo lees dan verzorgt je macro in beginsel het kopieren naar het lokaal bestand en hernoemen ervan, wat meteen verklaart waarom 'ie stopt wanneer je je origineel sluit. Dat is namelijk waar je makro draait (niet in de kopie).

Aan je makro moet je dus in het 'ThisWorkbook' object de volgende funktie opnemen:

code:
1
2
3
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     Cancel = MagIeDicht()
End Sub


Waarbij je funktie MagIeDicht() een boolean retourneerd die bepaald of er nog kopieen openstaan (bijvoorbeeld door het testen van een parameter in een werkblad). Zodra je TRUE teruggeeft wordt het origineel niet gesloten (Cancel = TRUE blokkeerd afsluiten).

Vandaag geen signature


  • made
  • Registratie: Juni 2002
  • Laatst online: 09-05 12:21

made

.. made by made ..

Topicstarter
Hier dan wat meer info:
Orgineel ( staat op netwerk ):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub workbook_open()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
If ReadOnly = False Then
data_invoegen
Else
ChDir "c:\temp"
ActiveWorkbook.SaveAs Filename:="c:\temp.xls", WriteResPassword:=""
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End If
Range("B12").Select
End Sub

Opent het orgineel zodra er geen wachtwoord ingevuld is wordt het bestand opgeslagen op de C schijf. Dit omdat er 20 simultane gebruikers zijn.

Hierin kan een gebruiker leveranciers toevoegen.
Het zou handig zijn als die leverancier ook in het orgineel terecht komt.

Dus ik dacht dan kopieer en plak ik de cellen van het blad leveranciers van de lokale versie naar het orgineel.

code:
1
2
3
4
Sheets("leveranciers").Select
Cells.Select
Selection.Copy
Workbooks.Open Filename:="H:\inkoopformulier_orgineel.xls", WriteResPassword:="test"


Omdat de macro het alleen lezen password invult wordt de macro data_invoegen gestart
code:
1
2
3
4
5
6
7
8
9
10
11
Sheets("leveranciers").Visible = True
Sheets("leveranciers").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("inkoop formulier").Select
Sheets("leveranciers").Visible = False
Application.CutCopyMode = False
ActiveWorkbook.Save
Workbooks("inkoopformulier_tijdelijk").Activate
Sheets("inkoop formulier").Select
Workbooks("Inkoopformulier_orgineel").Close


Nu zie ik wel het probleem, de macro van het ene bestand start de macro van het andere, maar dat bestand wordt afgesloten.
Iemand een idee ?

  • made
  • Registratie: Juni 2002
  • Laatst online: 09-05 12:21

made

.. made by made ..

Topicstarter
Ben er al uit.

Heb een nieuw bestand gemaakt met daarin de leveranciers.

Deze wordt opgehaald / geupdate.

Dus Slotje aub !