• 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 wel lokaal maar niet op een netwerkdrive

Status
Niet open voor verdere reacties.

turk1453

Gebruiker
Lid geworden
21 okt 2013
Berichten
6
Hallo,

Met behulp van dit topic heb ik de onderstaande code in elkaar geknutseld:

Code:
Sub tst()
  Dim Nr As Integer, Pad As String, c1 As String, x As String, Naam As String, i As Integer, Omschr As String, MijnPad As String
  
  Omschr = "Factuur 2013"                                   'tekst waarmee factuurnummer begint
  MijnPad = ActiveWorkbook.Path                             'directory waar de facturen staan
  
  Pad = MijnPad & IIf(Right(MijnPad, 1) <> "\", "\", "")
  c1 = Dir(Pad & Omschr & "*.pdf*")                        'zoek xls-files (en xlsm,xlsx, ...) die beginnen met bovenstaande omschrijving
  Do Until c1 = ""                                         'zoeken tot je alle files langsgelopen hebt
    x = Replace(c1, Omschr, "")                            'verwijder omschrijving
    i = InStr(1, x, ".pdf")                                'nu nog de file-extensie
    If i > 0 Then x = Left(x, i - 1)
    If IsNumeric(x) Then                                   'is wat overblijft nog numeric
      Nr = WorksheetFunction.Max(Nr, CInt(x))              'zoek hoogste nummer tot nogtoe
    End If
    c1 = Dir
  Loop

  Naam = Omschr & Format(Nr + 1, "000")                    'naam van de factuur (voor het geval je max. 999 facturen per jaar maakt
  [Factuurnummer!A1].Value = Naam
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Pad & Naam & ".pdf"
  Workbooks.Open (Pad & "Origineel_factuur.xlsm")
  ThisWorkbook.Close
End Sub

Mijn code werkt zoals het hoort, wanneer de file op een lokale schijf (C) staat.
Zodra ik de file verplaats naar een netwerkdrive (I) werkt de macro niet.

Nieuwe facturen worden niet meer opeenvolgend opgeslagen als (Factuur 2013001, Factuur 2013002, Factuur 2013003,..) maar Factuur2013001 wordt overgeschreven.

Wie weet waar de probleem ligt?

Is het een instelling in windows of excel? Of moet de code veranderen?
 
Heb je die routine al eens in Debug mode gedraaid en met F8 doorlopen om te kijken waar het verschil zit?
 
Waarschijnlijk bij mijnpad = activeworkbook.path. Heb je wel eens gekeken wat daar terug komt?
 
Dat heb ik getest met een netwerkschijf en daar komt, bij mij althans, keurig het juiste pad met de juiste drive letter terug.
 
Hallo de code was eerst zoals hieronder:

Code:
Option Explicit
Const Omschr = "Factuur 2013"                              'tekst waarmee factuurnummer begint
Const MijnPad = "C:\Facturen\"                             'directory waar de facturen staan

Sub tst()
  Dim Nr As Integer, Pad As String, c1 As String, x As String, Naam As String, i As Integer
  Pad = MijnPad & IIf(Right(MijnPad, 1) <> "\", "\", "")
  c1 = Dir(Pad & Omschr & "*.pdf*")                        'zoek xls-files (en xlsm,xlsx, ...) die beginnen met bovenstaande omschrijving
  Do Until c1 = ""                                         'zoeken tot je alle files langsgelopen hebt
    x = Replace(c1, Omschr, "")                            'verwijder omschrijving
    i = InStr(1, x, ".pdf")                                'nu nog de file-extensie
    If i > 0 Then x = Left(x, i - 1)
    If IsNumeric(x) Then                                   'is wat overblijft nog numeric
      Nr = WorksheetFunction.Max(Nr, CInt(x))              'zoek hoogste nummer tot nogtoe
    End If
    c1 = Dir
  Loop

  Naam = Omschr & Format(Nr + 1, "000")                    'naam van de factuur (voor het geval je max. 999 facturen per jaar maakt
  [Factuurnummer!A1].Value = Naam
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Pad & Naam & ".pdf"
  Workbooks.Open (Pad & "Origineel_factuur.xlsm")
  ThisWorkbook.Close
End Sub

Omdat ik dacht dat het probleem ontstond doordat excel niet met de pad om kon gaan, heb ik de code gewijzigd naar activeworkbook.path.

Dit heeft het probleem niet opgelost.

De macro geeft geen error terug, ongeacht waar de file staat.

Het verschil is dat wanneer de file op een netwerkschijf staat, dan schrijft de macro nieuwe facturen weg als "Factuur 2013001".
 
Pak het anders aan:

- zet op een netwerkplek een bestand met bijv.de naam: "0001{{"

- als je nu een bestand met een oplopend volgnummer wil opslaan gebruik je :

Code:
   sub M_opslaan_snb()
     y=val(dir("G:\OF\*{{"))+1 
     name "G:\OF\" & dir("G:\OF\*{{") as "G:\OF\" & format(y,"0000{{")

     thisworkbook.exportasfixedformat ,xltypePDF,"G:\faktuur\faktuur" & format(y,"0000") &".pdf"
   end sub

Het voordeel hiervan is dat iedereen op het netwerk van dit volgnummerrbestand gebruik kan maken.
 
Dat geeft nog geen antwoord op mijn vraag in #2 m.b.t. je gewijzigde macro.
 
Hallo,

Ik voeg even het bestand toe.

Misschien maakt dat het makkelijker.

Bekijk bijlage Origineel_factuur.xlsm

Edmoor, ik werk sinds 2 dagen met excel en vba. Hoe doe ik dat precies? En waar moet ik het veschil zien?

Snb, ik heb even de tijd nodig om dit weer te verwerken.

PS ik gebruik excel 2010
 
Laatst bewerkt:
Als je op een regel ergens net na de Sub gaat staan druk je op F9.
Er verschijnt dan een zgn. Breakpoint.
Als je nu de routine activeert stop hij daar en kun je met de F8 toets regel voor regel de routine doorlopen en per regel in het Direct venster (CTRL-G) de waarde van een variabele opvragen met: ?variabele

Zo kun je dat doen met een document vanaf de C: schijf en vanaf de netwerkschijf om te zien waar het verschil zit.

Voor een uitgebreide uitleg van Debug mode kun je o.a. hier terecht:
http://www.cpearson.com/excel/DebuggingVBA.aspx
 
Laatst bewerkt:
Edmoor.

Lokaal vs. Network

Lokaal
Code:
? Nr
 4 
? Pad
C:\Users\Administrator\Desktop\facturen\
? c1

? x
004
? Naam
Factuur 2013005
? i
 4 
? Omschr
Factuur 2013
? Mijnpad
C:\Users\Administrator\Desktop\facturen



Network
Code:
? Pad
I:\facturen\

? c1


? x


? Naam
Factuur 2013001

? i
 0 

? Omschr
Factuur 2013
? Mijnpad
I:\facturen


Op de netwerk slaat hij de regels na Do Until c1 = "" over tot Naam = Omschr & Format(Nr + 1, "000")


Is dit wat je bedoelt?
 
Laatst bewerkt:
Staat er wel minimaal 1 PDF bestand in I:\facturen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan