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

Opslaan met VBA

Status
Niet open voor verdere reacties.

DeArie

Gebruiker
Lid geworden
15 jul 2016
Berichten
126
Goedemiddag,

Ik probeer het voor elkaar te krijgen dat ik door een sneltoets mijn Excelblad kan opslaan in een door mij gekozen map.
Nu is dat wel gelukt alleen hij slaat hem op onder de naam/gegevens die in cel I15 staan dat is allemaal prima alleen op het moment
dat ik de gegevens uit het oorspronkelijke blad wis wist hij ook de gegevens uit mijn opgeslagen blad, Kan iemand daar iet tegen doen?
Heb niet heel veel verstand van vba maar dit is wat ik tot dusverre heb.

Public Sub OpslBestand()

ActiveSheet.Copy
NieuwFact = "C:\Users\D-post\OneDrive\Documenten\D-post\d-post\factuurnummers" & Range("I15").Value & ".xlsx"
ActiveWorkbook.SaveAs NieuwFact, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close

End Sub

Hoor het graag.
 
Normaal zou dat niet kunnen met die code.
In die code staat nergens dat je iets wist.
Als je handmatig iets wist nadat de kopie is opgeslagen kan het niet.

Wat voor handelingen doe je allemaal?
 
Waarom het altijd moeilijk is om even code tussen codetags te plaatsen blijft een raadsel.
Staan er formules in het niet geplaatste bestand zo ja waar verwijzen deze naar? Met geen of halve informatie wordt het speculeren.

Code:
Public Sub OpslBestand()
  ActiveSheet.Copy
  NieuwFact = "C:\Users\D-post\OneDrive\Documenten\D-post\d-post\factuurnummers" & Range("I15").Value & ".xlsx"
  With ActiveWorkbook
    .Sheets(1).UsedRange = .Sheets(1).UsedRange.Value
    .SaveAs NieuwFact, FileFormat:=xlOpenXMLWorkbook
    .Close
  End With
End Sub
 
Laatst bewerkt:
Ik gebruik de sneltoets ctrl en shift N dan zet hij dus het werkblad neer in "factuurnummers" als je er dan naar toe gaat en je gaat met je muis staan waar gegevens staan zie je ook dat er staat ( =som (van het gekopieerde werkblad) en als ik dan dus in t orgineel de ingevulde gegevens wis wist hij ze ook in de kopie....?
 
Lees #3 nog eens. En probeer even of het dan beter gaat. Zo niet dan even het bestandje plaatsen en anders even een terugkoppeling geven dat het wel werkt en het draadje op opgelost zetten.

@HSV, Af en toe de glazen bol wat oppoetsen wil wel eens helpen:d
 
Ik bedoel jouw speculaties om daar direct een code voor te schrijven.
Misschien wil Ts helemaal geen values.
Je houdt jezelf mooi bezig zo.
 
Mijn excuus dat ik code niet tussen codetags heb geplaatst. Gebruik het forum niet heel vaak. Ik zal die ander code morgen even proberen en als het gelukt is of niet horen jullie t van mij. In elk geval bedankt voor de reacties.
 
@DeArie: Je vraag moet een volgende keer echt (veel) duidelijker gesteld worden. Bijvoorbeeld: In je huidige vraag komt de actie om (eerst) het huidige werkblad te kopiëren terug in je VBA-code en 'ergens achteraan'/terloops vermeld terug in je tekst, terwijl je probleem niet gaat over het opslaan van het werkboek maar om de koppeling van de gegevens van het originele werkblad met die van het kopie werkblad.
Pas dankzij de code van VenA begreep ik ongeveer wat nu eigenlijk je vraag was.

De oplossing van VenA ziet er (in mijn ogen) goed uit:
a. Maak een kopie van huidige werkblad. Het kopie werkblad wordt daarna bereikbaar in VBA als Sheet(1)
b. Zet de ingevulde cellen/inhoud van het kopie werkblad, dus Sheet(1), om van koppelingen naar waarden.
c. Sla het werkboek op en sluit die.

De kern van de oplossing van VenA is natuurlijk b.

@HSV:
Misschien wil Ts helemaal geen values.
De koppeling tussen het kopie werkblad en het originele werkblad "zit de Ts dwars", dus welke opties (behalve omzetten naar waarden/values) zijn er dan zónder koppeling?
[Ik kan er geen bedenken, behalve varianten op omzetten naar waarden/values, zoals omzetten naar waarden/values en tegelijk verwijderen (of juist toevoegen) van formatterings-/indelingsinstellingen van de gevulde cellen in het kopie werkblad etc.]

Tijs.
 
Laatst bewerkt:
@HSV:
welke opties (behalve omzetten naar waarden/values) zijn er dan zónder koppeling?
Tijs.

Code:
changelink thisworkbook.fullname, activeworkbook.fullname,1
 
Hmm... oftewel het verbouwen van de koppeling naar de werkblad/cellen combi van het originele Excel bestand naar het huidige Excel bestand. [niet: blad, waar de Ts het over heeft, maar misschien bedoelde hij toch het originele Excelbestand.]
Dus blijven koppelingen bestaan, maar dan naar hetzelfde Excel bestand als waar het (kopie) werkblad in voorkomt. En natuurlijk moet eerst het huidige werkboek worden opgeslagen onder zijn nieuwe naam voordat activeworkbook.fullname verwijst naar het juiste bestand (of iets gaan doen met de waarde van I15 ipv. activeworkbook.fullname binnen ChangeLink).

Echt, de vraagstelling van de Ts komt hierdoor nóg verder als onduidelijk/onvolledig over (welke koppelingen gebruikt hij in zijn Excel bestand etc.)
Hopelijk komt hij met goed nieuws terug over de werking van de code van VenA.

Tijs.
 
Ik heb gekeken naar de door VenA gemaakte code, volgens mij werkt die ook niet helemaal zoals ik bedoel.
Ik ga nu een week op vakantie en daarna zal ik proberen het duidelijk uit te leggen.

In elk geval bedankt tot zover.
 
Goedemiddag,

Ik heb er weer eens na gekeken en heb de volgende code die eigenlijk precies doet wat ik wil (een datum toevoegen en een automatisch nummer op basis van het aantal files in de opslag map.) nu is het alleen dat bij de kopie de waarden die ingevuld zijn gekoppeld blijven staan aan het originele blad dus als ik het originele blad ga wijzigen wijzigt mijn kopie mee en dat is niet de bedoeling.

Code:
Sub Workbook_Open()
    Sheets(1).Range("I15") = Format(CreateObject("scripting.filesystemobject") _
        .getfolder("C:\Users\D-post\OneDrive\Documenten\D-post\facturen\").Files.Count, "20170000") + 1
Range("C15").Value = Date
Dim NieuwFact As Variant
'kopiëren document als nieuwe factuur
ActiveSheet.Copy
NieuwFact = "C:\Users\D-post\OneDrive\Documenten\D-post\facturen\Fact" & Range("I15").Value & ".xlsx"
ActiveWorkbook.SaveAs NieuwFact, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
End Sub

2017-06-20.png

Hoop dat ik het zo duidelijk heb uitgelegd met de voorbeelden, en hoop nog meer dat jullie een oplossing hebben.

Alvast bedankt
 
Ik zie niets van de aangereikte opties in de code.
 
Beste VenA,

De code doet eigenlijk precies wat ik wil het enige wat er nog moet veranderen is dat het kopie niet meer gekoppeld staat aan het origineel.

Als je het plaatje opent zie je bv in cel C20 8 staan, maar in de formulebalk staat een complete formule ( =som('https//d.docs.live.net/users/d-pos/onedrive/documenten/d-post/d-post/klanten-kopie/[A-gave accountants.xlsx]week 1'!k2)

terwijl hier alleen maar 8 zou moeten staan.

Is het nu duidelijk? Ik denk niet dat ik het beter kan uitleggen.....
 
Code:
.Sheets(1).UsedRange = .Sheets(1).UsedRange.Value
en of
Code:
changelink thisworkbook.fullname, activeworkbook.fullname,1
Zie ik nergens staan.
 
Uhm dit zegt me voor de rest niets, zoveel kaas heb ik er niet van gegeten....

Het enige wat ik dus zie is dat hij wel doet wat ik wil....( op 1 ding na dan )
Als jij een andere code kent/weet is het voor mij ook prima
 
Ik heb gekeken naar de door VenA gemaakte code, volgens mij werkt die ook niet helemaal zoals ik bedoel.
Als je het niet toepast dan zal het inderdaad niet goed werken.
 
Beste VenA,

Je hebt helemaal gelijk, mijn excuus ik heb hem nu wel toegepast en inderdaad het werkt.....:eek:

Nog 1 vraagje, er komt nu in cel c15 de datum te staan is het mogelijk om voor de datum bv een plaats naam te zetten? Dus: plaatsnaam, 01-01-2001

nogmaals hartstikke bedankt:thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan