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

VBA code opslaan als

Status
Niet open voor verdere reacties.

Skinny007

Gebruiker
Lid geworden
10 feb 2016
Berichten
8
Beste forumleden,

ik ben nogal een leek op gebied van VBA. Heb al met succes behoorlijk wat codes kunnen maken door veel zoeken op het net.
Voor mijn 'opslaan als' raak ik er echter niet uit. Je kan voldoende vinden op het net, maar door mijn beperkte kennis kan ik niet tot een sluitend resultaat komen.
Ik zou dus een macro moeten hebben die het bestand opslaat:

met als naam de gegevens uit "blad A" cel "A1"
met als pad: G:\gegevens\"naam uit blad B cel B2"\"naam uit blad B cel A1"
Mocht het mogelijk zijn, indien mapje "naam uit blad B Cel A1" niet bestaat dat dit wordt aangemaakt zou het nog leuker zijn.:p
met als extensie .xlsm

Ik vermoed dat als 1 van de gebruikte cellen leeg zou zijn, de gebruiker nog steeds gewoon kan opslaan en alles zelf ingeven.

Alvast bedankt voor wie het ziet zitten hier een antwoord op te geven.

groetjes
 
Laat dat eens aan de hand van een Excel bestand zien waar wat staat.
 
Dag HSV,

ik zou een fictief bestandje moeten maken daar voor.
Huidig bestand is 13920kB en mag ik niet op het net gooien.

Het komt er op neer dat er verschillende tabbladen zijn.

Van het ene blad heb ik 1 cel waar de bestandsnaam uit komt (hier staat wel een formule, enkel het resultaat mag gebruikt worden)
Van een ander blad zou ik de benamingen uit cel 1 en cel 2 als mapnaam in het pad moeten krijgen gezien er op verschillende plaatsen moet bewaard worden afhankelijk van klantnaam.

Ik kon codes vinden die het bestand opslaan met naam uit cel A1, maar dan kon ik geen specifiek blad aanduiden en werd het eerste blad genomen.
Een vast pad intypen ging ook, maar dit zou dus variabel moeten zijn.
Slaat ook blijkbaar standaard op als .xlsx waardoor een foutmelding kwam dat de macro's niet zouden bewaard worden.

Sorry dat ik niet meer info kan geven.
 
Een leeg bestand met de gegevens voor het opslaan in de juiste cellen en bladen is al genoeg (volgens mij zijn dat maar drie of vier cellen aan gegevens).
Helaas kan ik uit je verhaal in je openingspost niet veel opmaken waar wat staat.
 
Dim strFileName As Variant
Dim strPath As String
strFileName = "bestand" '& Format(Date, " dd-mm-yyyy") 'Range("A2").Value
strFileName = Application.GetSaveAsFilename(InitialFileName:=strPath & strFileName, _
FileFilter:="Excel Files (*.xlsx), *.xlsx, Excel 2007 Files (*.xlsm), *.xslm", _
FilterIndex:=1, _
Title:="Kies de juiste map en pas eventueel de bestandsnaam aan!")
If strFileName = False Then



' MsgBox "Oh oh... je hebt niet opgeslagen! "
Else
Application.DisplayAlerts = False
Sheets("blad1").Activate
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=strFileName, FileFormat:=xlOpenXMLWorkbook
MsgBox "Gelukt! Opgeslagen als: " & strFileName
ActiveWorkbook.Close True
Application.CutCopyMode = False
Application.DisplayAlerts = True
Sheets("blad2").Activate

End If
ErrHandler:
MsgBox "De bewerking is geannuleerd en het bestand is niet opgeslagen."


These are the main file formats in Windows Excel 2007-2016:

51 = xlOpenXMLWorkbook (without macro's in 2007-2013, xlsx)
52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2013, xlsm)
50 = xlExcel12 (Excel Binary Workbook in 2007-2013 with or without macro's, xlsb)
56 = xlExcel8 (97-2003 format in Excel 2007-2013, xls)

In Windows you use this for example to save a file as xlsm

ActiveWorkbook.SaveAs "C:\Users\YourUserName\Desktop\ron.xlsm", fileformat:=52

misschien kun je wat met bovenstaande code.
 
Laatst bewerkt:
amai, wat een lijst chinees :)

HSV,

bestand zou moeten bewaard worden met de naam van cel A1 op blad Verliesberekening

dit in de map U:\verkoop\OFFERTES OT*\'Info uit cel B2 blad Werfinfo' (*: indien D1 op Werfinfo =1; "Z" en indien E1 op Werfinfo =1; "I")

Dus in dit voorbeeld:
Map = U:\verkoop\OFFERTES OTZ\Z16-0125
Bestandsnaam = Z16-0125 - Manuele klant - Skinny.xlsm

Bekijk bijlage BestandHelpMij.xlsx

Alvast bedankt om dit te willen bekijken.

Groetjes
 
@ gober

Gelieve geposte code in post #5 tussen CodeTags te plaatsen.
 
gober,

bedankt voor het bestandje. Veel dingen werken er al van.
Mijn vraag was echter ook om in het pad de "Z" van OFFERTES OTZ variabel te maken volgens de cellen D1 en E1 in tab Werfinfo.
Dit omdat sommigen onder ons opslaan onder OFFERTES OTZ, anderen onder OFFERTES OTI.
Zij zullen dan ook in cel B2 bvb I16-0125 zetten.
Het pad dat jij in de macro had gezet is ook korter. Na map OFFERTES OT(?) komt een mapje met gegevens uit cel B2 (dus de I16-0125 bvb)


groetjes
Skinny
 
Onderstaande code is alleen nog maar als alle mappen al bestaan en alle cellen zijn gevuld.
Welke map(pen) moet(en) er aangemaakt worden?
Code:
Sub hsv()
With Sheets("Werfinfo")
 ThisWorkbook.SaveAs "U:\verkoop\Offertes OT" & Left(.[b2], 1) & "\" & .[b2] & "\" & .[b2] & " - " & .[d3] & " - " & .[b4], 52
End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan