Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Excel werkblad opslaan als xlsm dmv vba  (gelezen 55534 keer)

0 leden en 2 gasten bekijken dit topic.

Offline Didier70

  • Lid
  • *
  • Berichten: 22
  • Geslacht: Man
  • Oplossing.be
Excel werkblad opslaan als xlsm dmv vba
« Gepost op: 25 november 2019, 17:11:20 »
Hoi iedereen,

Ik weet dat mijn vraag wellicht in vele facetten is besproken maar heb toch een specifiek vraagje.
In mijn excel werkmap heb ik reeds een vba code die gekoppeld is aan een knop om een dit specifiek werkblad op te slaan als pdf bestand.
Dit werkt correct. Alleen wil ik nu ook een knop om mijn werkblad op te slaan als een xlsm bestand.
Heb dit geprobeerd door de code die ik reeds heb aan te passen, helaas slaag ik er niet in de juiste code te genereren.
Wie kan mij helpen?
Geef alvast hierbij de code code die ik reeds heb. (Om als pdf op te slaan)
Wellicht is dit maar een kleine aanpassing en kijk ik er misschien over.

Alvast bedankt



Sub OpslaanAls_AfdrukpaginaDraaien()
'
' OpslaanAls_AfdrukpaginaDraaien Macro
'
'
Dim StrFilePathAndName As String
With Sheets("Receptfiche + Kostprijs")
  StrFilePathAndName = .Range("O1") & .Range("B3") & ".pdf"
End With
MsgBox StrFilePathAndName
With Sheets("Receptfiche + Kostprijs")
.Range("A2:R50").ExportAsFixedFormat _
    Type:=xlTypePDF, Filename:=StrFilePathAndName, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
End Sub

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #1 Gepost op: 25 november 2019, 18:00:10 »
Hallo Didier,

Je vraag lijkt ingewikkeld, maar is volgens mij reeds opgelost.

In je macro laat je een "Range" van een "Werkblad" in dat bestand opslaan als PDF-bestand.

Dus....is je bestand reeds een .xlsm-bestand, want er staat een macro in.

Mogelijk bedoel je volgende: een  "Range" van een "Werkblad" als een ander bestand op te slaan, een .xlsm.

Maar.... als daar geen macro in zit, heeft het weinig zin (als .xlsm opslaan)

Kan je dit wat nader toelichten?

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Didier70

  • Lid
  • *
  • Berichten: 22
  • Geslacht: Man
  • Oplossing.be
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #2 Gepost op: 26 november 2019, 09:21:38 »
Hoi SoftAid,

Klopt idd wat je zegt. Had het misschien wat te ingewikkeld uitgelegd?
Ik wil nu idd diezelfde "range" opslaan als een "xlsm" document.

Hoop dat je me kan helpen.

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #3 Gepost op: 26 november 2019, 11:57:16 »
Opslaan als xlsm is heel iets anders dan opslaan als pdf.
Range("A2:R50") moet Range("A1:R50") worden daar je O1 gebruikt voor de naam.
Plaats in het vervolg uw code tussen codetags (het # teken), dit maakt het een stuk leesbaarder. ;)
Path = "C:\test\" aanpassen naar de plaats waar jij wilt opslaan.
Set Rng = Range("A1:R50")
Application.Workbooks.Add
Set WS = Application.ActiveSheet
Rng.Copy Destination:=WS.Range("A1")
Path = "C:\test\"
filename = Range("O1") & " " & Range("B3")
WS.SaveAs filename:=Path & filename & ".xlsm", FileFormat:=52

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #4 Gepost op: 26 november 2019, 12:26:38 »
Hallo Didier,

in bijlage een bestandje aan de hand van jou voorbeeld-code.

Ik heb hierin je originele vraag voor opslaan als PDF heel gelaten, en opslaan van de range in een nieuw te maken xlsm-bestand verwerkt.

De macro doet dus beide.

Succes,

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Didier70

  • Lid
  • *
  • Berichten: 22
  • Geslacht: Man
  • Oplossing.be
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #5 Gepost op: 26 november 2019, 13:18:20 »
Hey SoftAid,

Super bedankt in elk geval.
Maar loop even verlopen nu in die code. Weet niet niet goed wat ik moet aanpassen en laten staan  :-\
Ik stuur mijn bestand even mee in bijlage.
Het gaat hier over blad "Receptfiche + kostprijs"
Je zal zien dat de locatie waar het moet opgeslagen worden staat in cel P1
De macro moet dan eigenlijk gekoppeld worden aan de knop Xlsm
Hopelijk is mijn uitleg duidelijk genoeg.
Zou je dit even willen aanpassen voor me aub?
Blijf je eeuwig dankbaar  _/-\o_

Bestand in bijlage

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #6 Gepost op: 26 november 2019, 17:32:24 »
Hallo Didier,

ik wist niet dat je twee afzonderlijke knoppen had. Het bestand doorsturen help dan wel.
Heb de code van Dotchiejack een beetje aangepast.
Probeer bijlage eens uit

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Didier70

  • Lid
  • *
  • Berichten: 22
  • Geslacht: Man
  • Oplossing.be
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #7 Gepost op: 27 november 2019, 10:34:23 »
Hoi SoftAid,

Alvast bedankt voor de moeite.
Op zich doet het nu wel wat het moet doen maar zit toch nog met een probleempje.
Mijn document ziet er nu niet meer uit zoals het origineel. Het is te zeggen, de kolombreedtes worden blijkbaar niet behouden.
Voorbeeld in bijlage.
Daarnaast zou ik ook nog graag hebben dat voor de naam waaronder hij opslaat : Adres= ("B3") de letters "TF" komen te staan.
Dan zou ik eigenlijk ook willen dat het document gewoon wordt gesloten.
Ik weet nu wel dat dit moet met de extra lijn : OpenAfterPublish:=False
Maar weet niet precies waar ik die in mijn code moet plaatsen.

Hopelijk snap je wat ik bedoel.

Zie bijlage

Thx

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #8 Gepost op: 27 november 2019, 18:01:59 »
Hallo Didier,

Je hebt gelijk, die layout moet ook meegenomen worden.

Daarom geen "Range" meer overzetten, maar het werkblad " Recptfiche + kostprijs" overzetten naar het nieuwe werkboek.

Ik heb de variabelen verborgen onder B1 en C1, kwestie van de formules in VBA wat korter te maken.
TF is bijgevoegd, en om het nieuwe bestand op te slaan en te sluiten gebruiken we:
Workbooks(NBName).Close SaveChanges:=True
In bijlage een voorbeeld van wat ik er van gemaakt heb.
Ik ben er zeker van dat dit voor verbetering vatbaar is, zeker omdat je foutmeldingen gaat krijgen als je een nieuw bestand aanmaakt met dezelfde naam als er reeds aanwezig is in de map.

Dus daar moeten we nog een mouw aan passen.

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #9 Gepost op: 27 november 2019, 18:18:01 »
Sub dotch()
Application.ScreenUpdating = False
Path = "C:\Users\Philiep\Documents\oplossing\" 'Uw path hier aanpassen
File_name = Path & ThisWorkbook.ActiveSheet.Range("P1") & ".xlsm"
Range("A2:R50").Copy
Workbooks.Add
With ActiveSheet
    .PasteSpecial
    .PasteSpecial xlPasteColumnWidths
End With
ActiveWorkbook.SaveAs File_name, 52
ActiveWindow.Close
End Sub
Voorbeeldje in bijlage
Je path aanpassen om het uit te testen.
Naam van het document in P1

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #10 Gepost op: 27 november 2019, 18:53:45 »
Hallo Dotchie,

Omdat ik de mappen aangemaakt heb op mijn PC kan ik testen met variabelen.
Dit is na enige aanpassing het resultaat.
Blijft het probleem van dubbele of reeds bestaande gelijke bestandsnamen.
Ofwel moet er een controle komen of een bestandsnaam reeds gebruikt werd, of er moet een automatisme komen in de code (bvb een veranderende cijferreeks in de bestandsnaam) want anders loopt de code vast.

Sub dotch()

Dim Path As String
Dim file_name As String
Application.ScreenUpdating = False             'ook terug inschakelen dan??
Path = Range("C1")                                   'Het pad is variabel, en wordt in het
                                                              'werkblad' in "P1" ingegeven.
file_name = Path                                      'Path staat in "C1"
Range("A2:R50").Copy                               'Range("A2:R50") ipv "A1" laat de knoppen verdwijnen
                                                              'die toch niet nodig zijn in dit bestand, prima...
Workbooks.Add

ActiveSheet.PasteSpecial
ActiveSheet.PasteSpecial xlPasteColumnWidths    'is ook een manier om de opmaak over te brengen  :)

ActiveWorkbook.SaveAs file_name, 52
ActiveWindow.Close
End Sub

Kan je hier een beveiliging bedenken?

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #11 Gepost op: 27 november 2019, 19:26:50 »
Citaat
ook terug inschakelen dan??
De ene zegt ja, de andere zegt nee, ik blijf bij nee maar waarom niet als je ja leuker vindt.
Citaat
Path staat in "C1
Dat moet dan worden:
Path =ThisWorkbook.ActiveSheet.Range("C1")
Citaat
Range("A2:R50") ipv "A1" laat de knoppen verdwijnen die toch niet nodig zijn in dit bestand, prima...
Klopt als een zwerende vinger, de range stond in post #1
Citaat
is ook een manier om de opmaak over te brengen
Euh, ik krijg met mijn code alle opmaak. Je bedoelt lijntjes en zo neem ik aan.
Citaat
Kan je hier een beveiliging bedenken?
Normaal gezien wel, maar daar ik mijn medicijnen heb ingenomen is het bedenken voor morgen. (als niemand mij voor is)
(Dit is nu eenmaal de tol van ongeneeslijk ziek te zijn)









Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #12 Gepost op: 27 november 2019, 19:36:42 »
Euh, ik krijg met mijn code alle opmaak.
Nee, ik bedoel dat je op die manier best de opmaak overbrengt. Ik was overgegaan naar "werkblad kopiëren naar het nieuw werkboek.
Jou manier is beter  :thumbsup:
Normaal gezien wel, maar daar ik mijn medicijnen heb ingenomen is het bedenken voor morgen. (als niemand mij voor is)
(Dit is nu eenmaal de tol van ongeneeslijk ziek te zijn)
Zo ziek als een Dotchie  :D of DotchieZiek   ;D ;D ;D
Tot morgen  ;)

@ Didier,

in bijlage je bestand met 2 VBA-versies, eentje van mij, en een kortere van Dotchiejack.

Laat maar horen of je nog verbeteringen wil, en wat je precies zou willen...

Groeten,

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Didier70

  • Lid
  • *
  • Berichten: 22
  • Geslacht: Man
  • Oplossing.be
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #13 Gepost op: 03 december 2019, 11:15:58 »
Hoi,

Met enige vertraging maar toch.
Heb beide codes geprobeerd maar krijg iedere de volgende melding : Fout 1004 tijdens uitvoering
Microsoft excel kan geen toegang krijgen tot het bestand
G:\MijnDrive\....
De hyperlink die cel P1 staat
Dan komt het volgende lijntje in de code in het geel te staan: ActiveSheet.SaveAs Filename:=Path, FileFormat:=52
In bijlage nog eens mijn bestand

Wat doe ik fout??

Alvast bedankt

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Excel werkblad opslaan als xlsm dmv vba
« Reactie #14 Gepost op: 03 december 2019, 11:32:21 »
Hallo Didier,

Rechtsklik op de link in "P1" en kies voor: "Hyperlink verwijderen".

Dan werkt het wel.

Je adres als hyperlink gebruiken maakt hem onleesbaar voor de VBA-code.
De macro heeft platte tekst nodig om te verwerken tot een map-adres.

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

 


www.combell.com