• 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 opslaan documenten met verschillende argumenten

  • Onderwerp starter Onderwerp starter HBot
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

HBot

Gebruiker
Lid geworden
12 dec 2006
Berichten
325
Ik heb een macro om het document op te slaan en een mail naar betrokkenen te sturen, (het mail stukje werkt)

De bedoeling is;
1. Als men de template(sjabloon) opent krijg deze de naam met een '1''achter de naam en een extensie .xlsx (ipv xltm) dit gaat goed,
2. Nadat men het document heeft bewerkt wordt deze dmv van de Macro opgeslagen onder een nieuwe naam van (cel range C3) in een daarvoor gereserveerde map. (pad1=)
3. div. mensen kunnen hier in werken en via de macro opslaan onder deze zelfde naam.
4. Pas als men klaar is met het document moet deze worden opgeslagen onder een andere naam (cel range D3) in een andere map. (pad2=)
na het opslaan sluit het document en wordt de mail geopend.(dit werkt)

Volgens mij heb ik dit zo ook in de Macro staan, maar,
bij activeren van de macro wordt het eerste argument (If ActiveWorkbook.Name = "Template OFO formulier 20201.xlsx") overgeslagen als zijnde dat de naam niet overeenkomt en gaat deze gelijk door naar (Else) en loopt dan vast.

pad1 = "S:\Projecten\OFO\Masterdata OFO\Nieuwe OFO 2020"
pad2 = "S:\Projecten\OFO\Masterdata OFO\Opzet nieuwe OFO Form\Test"
lnk = "S:\Projecten\OFO\Masterdata OFO\Opzet nieuwe OFO Form\Test"

'Document naam correct opslaan
'Document naam correct opslaan
If ActiveWorkbook.Name = "Template OFO formulier 20201.xlsx" Then
ActiveWorkbook.SaveAs pad1 & Sheets("Opstart door PL-AM").Range("c3") & ".xlsm", FileFormat:=52
Else
If ActiveWorkbook.Name = Sheets("Opstart door PL-AM").Range("c3") & ".xlsm" Then GoTo 1 Else GoTo 2
1 ActiveWorkbook.save
2 If Range("c38") = "Klaar" Then GoTo 3
3 ActiveWorkbook.SaveAs pad2 & Sheets("Opstart door PL-AM").Range("d3") & ".xlsm", FileFormat:=52
End If

wat doe ik niet goed.
gr
 
Naast dat het gebruik van Goto op die manier totaal uit den boze is bevatten die labels geen dubbele punt.
Ik denk dat je ook nog \ tekens mist achter de paden.
 
Laatst bewerkt:
Graag enige hulp ben wat roestig aan het worden :)

ben niet op de hoogte van de nieuwe ontwikkelingen.

BVD
 
Zoiets:
Code:
pad1 = "S:\Projecten\OFO\Masterdata OFO\Nieuwe OFO 2020"
pad2 = "S:\Projecten\OFO\Masterdata OFO\Opzet nieuwe OFO Form\Test"
lnk = "S:\Projecten\OFO\Masterdata OFO\Opzet nieuwe OFO Form\Test"

If ActiveWorkbook.Name = "Template OFO formulier 20201.xlsx" Then
    ActiveWorkbook.SaveAs pad1 & "\" & Sheets("Opstart door PL-AM").Range("c3") & ".xlsm", FileFormat:=52
Else
    If ActiveWorkbook.Name = Sheets("Opstart door PL-AM").Range("c3") & ".xlsm" Then
        ActiveWorkbook.Save
    Else
        If Range("c38") = "Klaar" Then
            ActiveWorkbook.SaveAs pad2 & "\" & Sheets("Opstart door PL-AM").Range("d3") & ".xlsm", FileFormat:=52
        Else
            MsgBox "Document niet opgeslagen", vbInformation
        End If
    End If
End If

NB.
De variabele lnk gebruik je nergens.
 
Edmoor,

Bedankt,
Helaas springt die van de eerste if gelijk door naar else, terwijl de naam; ActiveWorkbook.Name = "Template OFO formulier 20201.xlsx" klopt.

daardoor werkt de rest ook niet.
 
En dat geloof ik dus niet.
Als dat het document met je code is zou het sowieso een .xlsm of .xlsb moeten zijn.

Plaats dan je document.
 
Laatst bewerkt:
Bij deze een simpel voorbeeldje
mag hem niet meesturen als sjabloon.


hopelijk lukt het.
 

Bijlagen

Zoals ik al zei.
Dat document heeft niet de naam waarop je controleert.
 
dit is toch de naam van het document, welke hij krijgt als je het sjabloon opent?

"TEST opslaan1.xlsx"
 
Er staat nergens in die code dat hij een ander document opent dan die je hier hebt geplaatst.
En die heet niet TEST opslaan1.xlsx maar TEST opslaan1.xlsM
 
edmoor,

ik ga het maandag weer proberen,
alvast bedankt en een prettig weekend
 
een sjabloon met macro's heeft volgens mij de extentie "xltm"

Maar dat zal TS waarschijnlijk niet bedoelen met 'sjabloon'
 
Ik weet het, maar dat verwacht ik inderdaad ook niet ;)
 
Klopt, ben er weer.

als je een sjabloon opent krijg deze een andere extensie om overschrijven te voorkomen.
nu wil ik dat deze onder de naam in in cel B1 als XLSM (Excel met macros's) wordt weggeschreven in de daarvoor bestemde map.
als iedereen klaar is dan opslaan onder een andere naam in cel D1 in een andere map.

ik heb de bron (sjabloon) div extensies gegeven xlsx, xltm, xlsm maar hij slaat de eerste regel over.

Kan iemand mij nog iets leren ;-)
 
Het is heel simpel als hij deze regel "overslaat":
Code:
If ActiveWorkbook.Name = "TEST opslaan1.xlsx" Then
Dan heet het geopende bestand dus niet TEST opslaan1.xlsx
Doe net voor die regel eens dit:
Code:
MsgBox ActiveWorkbook.Name
Dan zie je hoe het huidige bestand wel heet.
 
edmoor,

goede tip,

de naam is zonder extensie,
eerste gedeelte werkt nu :-)
ga deze in de originele zetten en verder kijken, hou je op de hoogte.
 
eerste gedeelte loopt nu mooi door maar als ik wil opslaan in een andere map onder een andere naam krijg ik de melding bij regel 3;
Fout 104 tijdens uitvoering:
Methode SaveAs van object_Workbook is mislukt

2 If Range("c38") = "Klaar" Then GoTo 3
3 ActiveWorkbook.SaveAs pad2 & Sheets("Opstart door PL-AM").Range("d3") & ".xlsm", FileFormat:=52

ook als ik in hetzelfde pad wil blijven.
 
Je hebt dus nog steeds die GoTo er in zitten en waarschijnlijk dan ook de andere wijzigingen die ik voorstelde er niet in gemaakt.
 
sorry,

je heb gelijk had de oude aangepast, doe het er "even"tussen door,

maar ook dan loopt ie vast op dezelfde regel.
If ActiveWorkbook.Name = "Template OFO formulier 20201" Then
ActiveWorkbook.SaveAs pad1 & "" & Sheets("Opstart door PL-AM").Range("c3") & ".xlsm", FileFormat:=52
Else
If ActiveWorkbook.Name = Sheets("Opstart door PL-AM").Range("c3") & ".xlsm" Then
ActiveWorkbook.save
Else
If Range("c38") = "Klaar" Then
--> ActiveWorkbook.SaveAs pad2 & "" & Sheets("Opstart door PL-AM").Range("d3") & ".xlsm", FileFormat:=52
Else
MsgBox "Document niet opgeslagen", vbInformation
End If
End If
End If
 
Je weet nu hoe je kan controleren of "Template OFO formulier 20201" wel correct is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan