Padnaam van eerst geopende bestand 'onthouden'

Status
Niet open voor verdere reacties.

BernieBear

Gebruiker
Lid geworden
15 dec 2011
Berichten
14
Hallo alleskunners,

Ik zoek iets heel simpels volgens mij, maar het werkt maar niet. Situatie: Ik heb een bestand geopend vanuit bijvoorbeeld map x:\orders . Deze map kan echter verschillen, omdat de server meerdere pathnames geeft, afhankelijk van hoe iemand is ingelogd.

Het te bewerken (via macro) bestand kan dus via drie paden geopend zijn:
X:\orders
X:\stp\orders (X:STP is gelijk aan P, maar afhankelijk van hoe de gebruiker is ingelogd geldt de ene of het andere meer afgeschermde gedeelte)
P:\orders


Nu wil ik graag dat het pad onthouden wordt van het reeds geopende bestand, zodat ik daarna via mijn macro de padnaam weer kan gebruiken op het nieuwe bestand op te slaan. Ik ben zo begonnen (zie hieronder), maar het werkt niet. Ik krijg de melding 'object vereist'.:(


Code:
Dim relativePath As String
   
    Set relativePath = ThisWorkbook.Path (Dwz het pad van het dan geopende werkbook; hierdoor weet ik welke van de drie mappen het om gaat)
   
    Windows("Back order.xlsm").Activate (waar dan al eerder in de macro wat bewerkingen zijn uitgevoerd, daarom wil ik deze graag opslaan)
   
       ActiveWorkbook.SaveAs Filename:= _
        relativePath & "\" Range("$A$4") & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False


Kunnen jullie mij helpen met de code?

Dankjewel alvast! :d
 
Laatst bewerkt door een moderator:
Je moet RelativePath gewoon in een variabele opslaan.
 
Helemaal bovenaan je macrovenster zet je
Code:
Public relativePath As String

In je macro zet je dan
Code:
relativePath = thisworkbook.path

Nu kan je deze waarde in elke module voor elke andere macro gebruiken.
 
Kijk eens naar:

Code:
sub M_snb()
   for each wb in workbooks
     c00=c00 & vbLf & wb.fullname
   next
   msgbox c00
end sub
 
Bedankt alledrie voor jullie oplossing. Ik kom al iets dichterbij! De oplossing van Warme bakkertje werkt wel, maar dan wordt het pad van het tweede bestand onthouden (in dit geval de 'template-map' en ik wil nu juist de eerste map onthouden, waar het werkbestand staat. Ik denk dus dat Octafisch helemaal gelijk heeft met het instellen van relativepath als variabele op het moment van starten van de macro. In al mijn blondheid dacht ik dat vast te leggen dmv 'set', maar dan krijg ik nog steeds de foutmelding van een 'object'. Dat lukt mij helaas dus niet.....

De oplossing van SNB heb ik ook geprobeerd. Daarmee genereer ik in de messagebox de full names van alle geopende werkbladen, maar dat hoeft niet direct. Ik heb alleen het pad van het eerste bestand nodig, waar ik in sta op het moment dat ik de macro start (dmv van een Ctrl + letter, de macro zelf staat in het template dat al open staat)).

Misschien willen jullie me op basis hiervan nog een stapje verder helpen?

Dank wederom voor al jullie geduld!
 
Zoek eens in je VBA basisboek of in de hulpbestanden van de VBeditor naar het verschil tussen thisworkbook en activeworkbook...
 
Bedankt, het werkt idd met Activeworkbook.path!

Ik zal 'm sluiten....!

:d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan