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

Macro werkt op 1 Pc maar niet op een andere Pc

Status
Niet open voor verdere reacties.

samabert

Gebruiker
Lid geworden
27 mrt 2010
Berichten
301
Hallo,

Op mij thuis pc werkt het tot zover gebouwde, met hulp van dit forum, bestand voor 100% zonder ook maar enige problemen!

Maar op de pc van het werk doet zich volgende probleem voor:

Een deel van de code die niet volledig zijn werk doet.
Wanneer je vraagt in het eerste werkblad via het rode kruisje om te sluiten moet er een kopie gemaakt worden naar een ander Backup1 bestand, eens de kopie daar geplaatst sluiten van het Backup1 bestand en daarna sluiten van het eerste werkblad. Het Backup1 bestand blijft open staan en zodanig ook het eerste werkblad.
Ik heb via een Usb sleutel de bestanden gewoon overgezet van thuis pc naar werk pc en het pad naar waar opslaan aangepast (op een lokale pc).


De code die daarvoor zorgt is volgende:

ThisWorkbook:
Code:
Dim ws As Worksheet
Const MaxUses As Long = 15   '<- change users
Const wsWarningSheet As String = "Splash"
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    On Error Resume Next

    ToevoegenActie False, sUser
    Application.DisplayAlerts = False
    Call MBE
    Call Kopie
    Application.Save
    

    Application.DisplayAlerts = True


    For Each ws In ThisWorkbook.Sheets
        If ws.Name = wsWarningSheet Then
            ws.Visible = True
        Else
            ws.Visible = xlVeryHidden
        End If
    Next

    With Sheets(wsWarningSheet).Cells(Rows.Count, Columns.Count)
        .Value = .Value + 1

    End With
    ThisWorkbook.Save

End Sub
In een module:
Code:
Option Explicit

Sub Kopie()
    Dim wbDst As Workbook
    Dim Br

    Application.ScreenUpdating = False
    Set wbDst = Workbooks.Open("\\SERVER-BAMG7PMH\Exel\Hrs\Backup1.xlsm")
   
    For Each Br In Application.GetCustomListContents(3)
        With wbDst.Sheets(Br)
            .Unprotect
            ThisWorkbook.Sheets(Br).Range("A1:AL29").Copy .Range("A" & Rows.Count).End(xlUp).Offset(3)
            .Protect
        End With
    Next
    Application.ScreenUpdating = True
    
    wbDst.Close True
    
End Sub

Configuratie Pc thuis:
Windows 10 32 bit
Office Professional 2010 NL 32-bits

Configuratie Pc werk:
Windows 7 64 bit
Office Professional 2010 E 32-bits

In beide Excel versies staan de veiligheid instellingen hetzelfde.
Een verschil is in VBA verwijzingen:
Pc thuis is MS Excel 14.0 Object library
Pc werk is MS Excel 15.0 Object library

Heb volgende gevonden, maar dit helpt niet.
http://www.helpmij.nl/forum/showthread.php/847235-macro-werkt-niet-op-1-PC-op-andere-PC-s-wel


Is het een update van Office die hiervoor verantwoordelijk is?

Alvast bedankt.
Mvg.
Marc
 
Hi marc,


deze regel in je module verwijst naar een custom List
Code:
For Each Br In Application.GetCustomListContents(3)

Custom Lists worden niet mee gekopieerd als je een bestand stuurt naar een andere PC.
Maar wordt alleen lokaal op je PC opgeslagen.
Je moet dus dezelfde Custom List op de PC van het werk aanmaken.

overigens verwijst je code naar Custom List nummer 3.
Let op dat je werk PC dus ook drie Custom Lists bevat en de derde lijst op beide PC's gelijk zijn.



groet,
Lambert
 
Laatst bewerkt:
Hallo Lambert,

Bedankt voor je reactie.

Custom list kende ik niet, deze die voorkomt in de code werd als oplossing gegeven door Timshell.
Ik heb zelf wel geen custom list moeten aanmaken in de oplossing van Timshell.
www.helpmij.nl/forum/showthread.php/908989-Macro-aanpassen-voor-kopiëren-tabbladen-naar-een-gesloten-bestandier de link naar vorige oplossingen:
Post #2

Als ik naar de customlist ga kijken op de thuis pc en de werk pc staan beide lijsten vermeld.

CustomList.JPG
Is er nog iets anders dat ik moet nakijken i.v.m. de customlist?

Misschien een domme vraag, maar het blad wordt netjes gekopieerd op de werk Pc, alleen het bestand sluit gewoon niet automatisch. Kan dit als de customlist niet correct is?



Mvg.
Marc
 
Customlist heeft niets met je probleem te maken. Excel heeft altijd 4 ingebouwde 'custom'lists.
 
@ snb,

Bedankt voor de info, heb jij enig idee wat ik nog zou kunnen nakijken.
Ik heb het volledige bestand bijgevoegd, ontdaan van info.
Bij openen Test, kies je Manager en paswoord is secret.

Bij sluiten met het kruisje wordt een kopie gemaakt naar Backup1 en daarna sluit elk bestand.

Op de pc waar het is gemaakt werkt alles zonder problemen, op een andere pc werkt alles maar blijven beide bestanden openstaan.

Ik geraak er niet uit.
Mvg.
Marc
 

Bijlagen

  • Test.xlsm
    76,8 KB · Weergaven: 27
Laatst bewerkt:
Heeft de andere PC überhaupt toegang tot: "\\SERVER-BAMG7PMH\Exel\Hrs\Backup1.xlsm" ?


Terzijde: waarom gebuik je geen savecopyas om een backup van hetbestadn te maken ?
Dan is 1 regel code weer voldoende.
 
Laatst bewerkt:
snb,

Het pad naar waar te saven pas ik aan op de werk pc. Zelfs met testen op de werk pc start het kopiëren en wordt de kopie effectief geplaatst naar het pad dat ik daar opgeef. Alleen moet dan het bestand naar waar er gekopieerd werd automatisch sluiten en dan het eerste bestand (Test) ook, daar loopt het fout en moet ik handmatig sluiten.

Daar ik dit saven eerder niet in orde kreeg heb ik hier een tijdje terug een vraag gepost en die bewuste code gekregen van Timshell. Uiteindelijk met de test op de thuis pc werkte alles. Ik werk aan het bestand tussentijds thuis en op het werk en zo merkte ik dat het op het werk mis liep.

Is het mogelijk om de code zoals je voorstelt in 1 regel te willen herschrijven?

Alvast bedankt.
Mvg.
Marc
 
In plaats van:

Code:
Sub Kopie()
    Dim wbDst As Workbook
    Dim Br

    Application.ScreenUpdating = False
    Set wbDst = Workbooks.Open("\\SERVER-BAMG7PMH\Exel\Hrs\Backup1.xlsm")
   
    For Each Br In Application.GetCustomListContents(3)
        With wbDst.Sheets(Br)
            .Unprotect
            ThisWorkbook.Sheets(Br).Range("A1:AL29").Copy .Range("A" & Rows.Count).End(xlUp).Offset(3)
            .Protect
        End With
    Next
    Application.ScreenUpdating = True
    
    wbDst.Close True
    
End Sub

Deze:
Code:
sub M_snb()
  ThisWorkbook.savecopyas "C:\" & replace(thisworkbook.name,".xls",format(date,"yyyymmdd") &".xls")
end sub

En test de code elders na eerst alle 'on error resume next' verwijderd te hebben.
 
Laatst bewerkt:
snb,

Bedankt om de code aan te passen.

Ik heb het hier op een andere pc getest waar eerst ook problemen mee waren.
Het probleem van het automatisch sluiten is opgelost, dit werkt mooi, maar nu wordt er een volledige kopie gemaakt van het bestand en als je het back-up bestand opent en sluit maakt hij in dat bestand terug een kopie.

Blijkbaar is die vorige code kopie toch de boosdoener.

Is het dan eventueel niet mogelijk om via jouw idee de code verder aan te passen dat er terug van JAN tot DEC in het werkboek en telkens de range A1:AL29 een kopie gemaakt wordt naar het backup bestand?
In bijlage het bestand Backup1, dit blijkt voor ons het overzichtelijkste te zijn om achteraf te raadplegen en mee verder te werken voor het opstellen van een planning.

Nog eens extra bedankt voor je hulp.
Mvg.
Marc
 

Bijlagen

  • Backup1.xlsm
    81,3 KB · Weergaven: 32
Dat maakt niet veel indruk.

Als de knoppen er niet voor niets in staan blijken de laatst toegevoegde gegevens het meest belangrijk te zijn.
Dan is het eenvoudiger het laatste, via savecopyas opgeslagen bestand te openen en daarvan de gewenste maand(en) af te drukken.

Een bestand waar de meest recente gegevens onderaan de pagina worden toegevoegd, waarvoor dan weer een macro nodig is om erheen te gaan....
Een bestand waarin gegevens worden opgeslagen die niet meer gebruikt zullen worden als er recentere aanwezig zijn.....
Laten we daaraan maar niet onze energie besteden, omdat een eenvoudiger aanpak al klaar staat.
 
Laatst bewerkt:
De bedoeling van het opzet is dat in het test bestand 14 techniekers hun verlof, récupe enz. kunnen invullen en dat dit bij problemen (lees discussies) kan getraceerd worden wie wanneer iets (verkeerd) aangepast heeft, daarvoor dat inloggen.
In het verleden werd dit gewoon op papier gedaan en waren er nogal problemen van wie wat heeft ingevuld. Ik ben zelf een van die techniekers en had het idee om dit via Excel te bouwen met goedkeuring van mijn verantwoordelijke.

Maar inderdaad, je hebt gelijk dat die volledige kopie ook bruikbaar is voor verdere planning.

Dat je zegt, dat maakt niet veel indruk? Dit is helemaal niet de bedoeling.
Ik apprecieer jouw enorme kennis en inzicht, met jouw oplossing van savecopyas ga ik verderwerken aan het bestand.

Nogmaals bedankt voor hulp.
Marc
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan