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

VB Project

Status
Niet open voor verdere reacties.

RichieL

Gebruiker
Lid geworden
29 nov 2018
Berichten
73
Wanneer ik een worksheet wil exporteren en wil opslaan als *.xlsx krijg ik onderstaande melding:

VBproject.png

Kan je dit met een VBA oplossen? Dus optie "ja" in het script meenemen?
 
Als je een werkboek die VBA code bevat wilt opslaan dan moet dat als .xlsm of .xlsb.
 
Laatst bewerkt:
Met exporteren bedoel je waarschijnlijk het opslaan als xlsx bestand van dat werkblad.
Code:
Sub Exporteer()
[COLOR="#008000"] 'maak een kopie van het werkblad[/COLOR]
 Sheets("te kopieren").Copy After:=Sheets(Sheets.Count)

 Sheets(Sheets.Count).Select
 [COLOR="#008000"]'verwijder de vba code[/COLOR]
 wsName = Sheets(Sheets.Count).CodeName
 With ThisWorkbook.VBProject.VBComponents(wsName).CodeModule
    .DeleteLines 1, .CountOfLines
 End With


 Dim NieuwFact As Variant
    ActiveSheet.Copy
    NieuwFact = "C:\Users\" & Environ("username") & "\Desktop\" & ActiveSheet.Name & ".xlsx"
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs NieuwFact, FileFormat:=51
    ActiveWorkbook.Close
    
 Sheets(Sheets.Count).Delete
End Sub
 
Displayalerts op False en vervolgens .SaveAs werkt niet?
 
Bij mij werkt het gewoon.
Misschien wel nog even application.screenupdating=false erbij zetten.
 
Code:
 Sub Exporteer()
 'maak een kopie van het werkblad
 Sheets("te kopieren").Copy After:=Sheets(Sheets.Count)

 Sheets(Sheets.Count).Select
 'verwijder de vba code
 wsName = Sheets(Sheets.Count).CodeName
 With ThisWorkbook.VBProject.VBComponents(wsName).CodeModule
    .DeleteLines 1, .CountOfLines
 End With

Application.ScreenUpdating = False
 Dim NieuwFact As Variant
    ActiveSheet.Copy
    NieuwFact = "C:\Users\" & Environ("username") & "\Desktop\" & ActiveSheet.Name & ".xlsx"
    ActiveWorkbook.SaveAs NieuwFact, FileFormat:=51
    ActiveWorkbook.Close
 
 Application.DisplayAlerts = False
 Sheets(Sheets.Count).Delete
 Application.ScreenUpdating = True
End Sub
 
Ik heb het niet getest. Ik bedoel, werkt direct SaveAs niet? Ipv eerst leeghalen van de codemodule.
 
Voor het "opslaan als .xlsx" is code verwijderen onzin.
Dit is voldoende:

Code:
 application.displayalerts = false
 thisworkbook.saveas thisworkbook.path & "\hierjebestandsnaam", 51
 
Precies, kon al niet geloven dat dit niet zou werken
 
Als ik de vraag in post #1 goed heb begrepen wil TS slechts 1 Blad opslaan als xlsx.
Of wil hij 1 blad exporteren naar een ander xlsx bestand ?
 
Laatst bewerkt:
Dan veranderd er weinig.

Code:
application.displayalerts = false
[COLOR=#ff0000]blad1.copy[/COLOR]
[COLOR=#ff0000]activeworkbook[/COLOR].saveas thisworkbook.path & "\hierjebestandsnaam", 51

Je code maakt nu ook een nieuw bestand aan met:
Code:
 ActiveSheet.Copy

Onderstaande,.....
Code:
NieuwFact = "C:\Users\" & Environ("username") & "\Desktop\" & ActiveSheet.Name & ".xlsx"
....kan ook zo.
Code:
NieuwFact = Environ("userprofile") & "\Desktop\" & ActiveSheet.Name
 
Ik heb bovenstaande nog niet geprobeerd. Dat ga ik zo proberen.
Wat er kort gezegd zou moeten gebeuren:

Ik heb een Workbook, met verschillende sheets
Een sheet bevat wat macro's. De ene keer moet ik macro 1 andere keer macro 2 gebruiken.
Uiteindelijk staat de sheet precies zoals het moet zijn.
Daarna wil ik de alleen deze sheet naar een nieuwe workbook kopieren, zonder formules etc en daarna "opstaan als" (automatisch) zonder de macro in het document welke geen nut meer hebben daarna vandaar: *.xlsx

Onderstaande werkte inderdaad voor mij. Fout die ik maakte is Application.DisplayAlerts = false onder ActiveWorkbook.SaveAs te zetten.

Code:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=path & Filename & Format(Date, "ddmmyyuummss") & ".xlsx", FileFormat:=51, CreateBackup:=False
ActiveWorkbook.Close

Dank voor jullie hulp!
 
Laatst bewerkt:
Ik heb onderstaande de totale code. Ik maak een copy & paste special van de desbetreffende sheet.


Code:
Sub test()

Dim path As String

path = "G:\test\"
Filename = "test"

ActiveSheet.Copy
Cells.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveSheet.Buttons.Delete

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=path & Filename & Format(Date, "ddmmyyuummss") & ".xlsx", FileFormat:=51, CreateBackup:=False
ActiveWorkbook.Close

End Sub
 
Waarom gebruik je de gegeven suggesties niet? (vooiral die van HSV)
Weinig hoffelijk ten opzichte van helpers.
 
Excuus SNB als je dit zo ziet, maar ik ben heel dankbaar voor de hulp die ieder biedt.
Alleen zit ik nu op mijn werk en bovenstaande is vooral voor privé gebruik. Vooral in de avonden kan ik echt testen en proberen, vandaar dat het misschien zo lijkt, maar nogmaals ik ben erg dankbaar voor alle hulp.
 
Bedankt Ad1957 & HSV voor jullie hulp. Jullie hulp heeft mij erg geholpen.

De activesheet.copy in combinatie met application.displayalerts = false heeft geholpen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan