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

Excel opslaan m.b.v. knop

Status
Niet open voor verdere reacties.

hoogteijling

Terugkerende gebruiker
Lid geworden
12 aug 2005
Berichten
4.261
Hallo allemaal,
We gebruiken hier op kantoor een Excel bestand om wekelijks de besteedde uren per project in te vullen.
Wat ik nu zou willen is een knop in het Excel bestand, wanneer je op die knop drukt moet ie het bestand opslaan ergens op het netwerk met een bestandsnaam die hij maakt van een 2-tal cellen, In dit geval B7-V7.
Het opgeslagen bestand moet dus na een druk op de knop opgeslagen worden in de map T:\Secretariaat\Urenadministratie\49-177.xlsx

Groeten Marcel

Bekijk bijlage Weekstaat.xlsx
 
Laatst bewerkt:
Code:
ThisWorkbook.SaveAs "T:\Secretariaat\Urenadministratie\" & [B7] & "-" & [V7] & ".xlsx"

Met vriendelijke groet,


Roncancio
 
Bedankt Roncancio,

na het veranderen van xlsx in xlsm in de code werkt dit heel goed.
(Zal wel komen door de macro's die er al in zitten)

Is het nu mogelijk dat dit bestand m.b.v. de knop opgeslagen wordt als een xlsx bestand en dan zonder formules maar alleen de door de formules gegenereerde waardes.
(eigenlijk plakken speciaal>>waardes plakken)

Groeten Marcel
 
Laatst bewerkt:
Je zou voor het opslaan de formules dmv VBA kunnen vervangen voor waardes en vervolgens als xlsx opslaan.

Met vriendelijke groet,


Roncancio
 
Aangezien ik niks weet van VBA zou ik je willen vragen of je me iets verder kunt helpen ?

Groeten Marcel
 
Code:
Dim rCell As Range
    For Each rCell In ActiveSheet.UsedRange
        If rCell.HasFormula Then rCell.Value = rCell.Value
    Next

Met vriendelijke groet,


Roncancio
 
OK, en waar moet ik deze code precies zetten.
Als volgt ? :
Code:
Private Sub CommandButton1_Click()
ThisWorkbook.SaveAs "T:\Secretariaat\Urenadministratie\" & [B7] & "-" & [V7] & ".xlsx"
Dim rCell As Range
    For Each rCell In ActiveSheet.UsedRange
        If rCell.HasFormula Then rCell.Value = rCell.Value
    Next
End Sub

Groeten Marcel
 
Bijna.
Ik zou namelijk eerst de omzetting van de formules doen en dan pas het bestand opslaan.
Anders komt Excel alsnog met de melding of het bestand opgeslagen moet worden omdat je naderhand een wijziging hebt gemaakt.

Code:
Private Sub CommandButton1_Click()

Dim rCell As Range
    For Each rCell In ActiveSheet.UsedRange
        If rCell.HasFormula Then rCell.Value = rCell.Value
    Next
ThisWorkbook.SaveAs "T:\Secretariaat\Urenadministratie\" & [B7] & "-" & [V7] & ".xlsx"
End Sub

Met vriendelijke groet,


Roncancio
 
of korter:
Code:
[a1:c10] = [a1:c10].Value
met uiteraard links en rechts je eigen bereik.
 
Is er nog iets aan deze foutmelding te doen, de macro's hoeven niet opgesklagen te worden.

vbafoutmelding.jpg


@Robdgr,
Welk stukje code moet ik vervangen door jouw code, gaat dat om het stuk waarin die de formules door waardes vervangt ?, dan moet ik dus de cellenrange van mijn gehele werkblad invullen denk ik (A1:U28)

Groeten Marcel
 
Laatst bewerkt:
Wat Rob bedoelt is als volgt:

Code:
Private Sub CommandButton1_Click()

[a1:U28] = [a1:U28].Value
ThisWorkbook.SaveAs "T:\Secretariaat\Urenadministratie\" & [B7] & "-" & [V7] & ".xlsx"
End Sub
Met mijn code maakte het niet uit tot hoever het bereik is.

Je kunt toch opslaan als xlsm?
Of eventueel als .xls.

Met vriendelijke groet,


Roncancio
 
Marcel,

Misschien kun je die melding voorkomen met
Code:
Application.DisplayAlerts = False
Inderdaad gaat het om het hele bereik, dus A1:U28
 
Jullie zijn fantastisch,

Code:
Application.DisplayAlerts = False
[A1:V28] = [A1:V28].Value
ThisWorkbook.SaveAs "T:\Secretariaat\Urenadministratie\" & [B7] & "-" & [V7] & ".xlsx"
Deze code werkt 100%.

Nu zitten er in het wekblad ook nog een aantal verborgen kolommen die ik eigenlijk niet opgeslagen wil hebben.
Is er een mogelijkheid om alleen de cellenrange A1:V28 op te slaan ?

Groeten Marcel
 
Je kunt bijvoorbeeld de overige bereiken verwijderen of eventueel het bereik A1:V28 naar een aparte bestand kopieren.

Met vriendelijke groet,


Roncancio
 
Ik begrijp weer precies wat je bedoelt, ik weet alleen niet hoe ik dit in VBA moet doen.

Groeten Marcel
 
Code:
Application.DisplayAlerts = False
[A1:V28] = [A1:V28].Value
Range("W:XFD").Delete
Range("A29:XFD" & Rows.Count).Delete
ThisWorkbook.SaveAs "T:\Secretariaat\Urenadministratie\" & [B7] & "-" & [V7] & ".xlsx"

Met vriendelijke groet,


Roncancio
 
Alweer bedankt,

Wat ik ook nog graag zou willen is dat wanneer de cel B7 niet is ingevuld er een melding verschijnt Datum niet ingevuld.
En wanneer de cel V7 niet is ingevuld er een melding verschijnt Personeelsnummer niet ingevuld.

Is het nu ook mogelijk dat er een melding verschijnt wanneer het bestand opgeslagen is in de map T:\Secretariaat\Urenadministratie\.
Zoiets als Weekstaat is opgeslagen en dan een OK knopje.
Gewoon als een soort bevestiging, anders gaan de mensen 6 keer op het knopje drukken om zeker te weten dat het opgeslagen is.

Groeten Marcel
 
Code:
Application.DisplayAlerts = False
If [B7] = "" Then MsgBox "Datum niet ingevuld!", vbExclamation, "Geen datum"
If [V7] = "" Then MsgBox "Personeelsnummer niet ingevuld!", vbExclamation, "Geen Personeelsnummer"
If [B7] <> "" And [V7] <> "" Then
    [A1:V28] = [A1:V28].Value
    Range("W:XFD").Delete
    Range("A29:XFD" & Rows.Count).Delete
    ThisWorkbook.SaveAs "T:\Secretariaat\Urenadministratie\" & [B7] & "-" & [V7] & ".xlsx"
    MsgBox "Het bestand " & [B7] & "-" & [V7] & ".xlsx" & " is opgeslagen.", vbInformation, "Bestand opgeslagen"
End If

Met vriendelijke groet,


Roncancio
 
Nogmaals fantastisch !!!

Ik moet nu even nadenken of het nu echt is zoals ik wil of dat ik nog iets mis.
Ik hou julllie/je op de hoogte.

Groeten Marcel
 
Ik kan hier voorlopig mee uit de voeten.

Groeten Marcel
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan