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

Word bestand opslaan vanuit Excel

Status
Niet open voor verdere reacties.

DeToekomst2

Gebruiker
Lid geworden
29 jul 2016
Berichten
91
Goedendag,


Ik heb een Excel bestand gemaakt waarmee ik een serie gegevens kan invullen in een Excel bestand en deze vervolgens over kan zetten naar een Word bestand. Ik open een bestaand Word bestand (een standaard Format binnen het bedrijf) en laat VBA vervolgens een aantal Bookmarks vervangen.

Nu wil ik dit bestand opslaan op een vaste locatie (die hoef ik niet te specificeren) met een nieuwe bestandsnaam.


Weet iemand hoe ik mijn gemaakte Word bestand op kan slaan waarbij er een MSG-Box verschijnt waarin ik de gewenste bestandsnaam in kan voeren.


Hartstikke bedankt alvast.
 
Waarom zou je dan niet ook het programma een zinvolle unieke bestandsnaam laten genereren ?
 
SNB: In het bestand wordt er geen gebruik gemaakt van data die in de bestandsnaam terug moet komen. Ik vind het ook onzinnig om hier een extra invoervlak voor toe te voegen wanneer het met een MSG box opgelost zou kunnen worden.

Het gaat mij er ook vooral om hoe ik dit op een word bestand toepas. De GetSaveAsFilename methode is de methode die ik wil maar dan toegepast op het word bestand (vanuit de Excel Macro).


Gr.
 
De Getsaveasfilename is daarom dus een overbodig hulpscherm.

Voor het overige: neem eens een macro op in Word.
 
Voorbeeldje:

Code:
Sub GetOpenFileNameExample()
    Dim vFilename As Variant
    vFilename = Application.GetOpenFilename("Microsoft Word Files, *.doc?", , "Please choose a filename")
    If TypeName(vFilename) = "Boolean" Then Exit Sub
    If vFilename = "" Then Exit Sub
    'Hier Word starten en Word's SaveAs methode gebruiken om het bestand onder de naam vFilename op te slaan.
End Sub
 
Werkt wel maar ook weer niet

Bedankt voor de reacties.


Ik heb je code toegepast jkpeterse. Ik heb hier eigenlijk geen idee wat ik aan het doen ben. Het resultaat komt wel in de buurt van wat ik wil.

Ik heb onderstaande code toegepast:

Code:
Sub WordTest()

Dim wrdApp As Word.Application
Dim wrddoc As Word.Document

[I]    Dim vFilename As Variant
    vFilename = Application.GetOpenFilename("Microsoft Word Files, *.doc?", , "Please choose a filename")
    If TypeName(vFilename) = "Boolean" Then Exit Sub
    If vFilename = "" Then Exit Sub[/I]

Set wrdApp = CreateObject("word.application")
wrdApp.Visible = True

Set wrddoc = wrdApp.Documents.Open("*locatie en bestandsnaam*")

Sheets("Offerte").Select
With wrdApp.Selection
    .Goto What:=wdGoToBookmark, Name:="Firmanaam"
    .TypeText Range("B1")
End With

*meerdere bookmarks worden vervangen*


    ChangeFileOpenDirectory "D:\Tijdelijk"
    ActiveDocument.SaveAs2 Filename:="D:\Tijdelijk\vFilename.docx", FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
        :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False, CompatibilityMode:=12

*bovenstaande is de code die ik kreeg bij het opnemen van SaveAs in Word*

End Sub

Als ik dit doe krijg ik het volgende:

De code wordt gestart, ik moet een document kiezen. Als ik er geen kies wordt de code gesloten, doe ik dat wel:
Dan wordt de standaard opzet geopend en de bookmarks worden naar behoren vervangen.
Het document wordt opgeslagen onder de naam vFilename in de map 'Tijdelijk'.

Ik zie nu niet het nut in van het kiezen van een document...
Wat wel goed is is het opslaan van het document. Nu wil ik alleen nog maar een MSG Box waarin ik de bestandsnaam kan invoeren. De locatie zou ik in de code op kunnen nemen.
 
Bookmarks zijn bedoeld voor mensen zonder verstand van VBA: de gebruikers die Word benaderen met de User Interface.
In VBA kun je beter gebruik maken van documentvariabelen (insert/fields/docvariable).

Code:
Sub M_snb()
   sn=sheet1.range("A1:K1")

   with getobject("G:\OF\voorbeeld.docx")
     for j= 1 to ubound(sn,2)
       .variables("V_" & j)=sn(1,j)
     next
     .fields.update
     .saveas2 "G:\OF\voorbeeld _" & format(date,"yyyy_mm_dd") & ".docx"
     .close 0
   end with
end sub
 
Ik snap niets van je vraag. Waarvoor wil je de mogelijkheid een bestandsnaam op te geven, voor het OPENEN van een Word bestand of voor het OPSLAAN van het Word bestand?
 
Ik snap niets van je vraag. Waarvoor wil je de mogelijkheid een bestandsnaam op te geven, voor het OPENEN van een Word bestand of voor het OPSLAAN van het Word bestand?

Excuses, ik snap de verwarring.

Ik wil een naam opgeven voor het opslaan van het word bestand.

Want:
Een standaard format wordt geopend en deze wordt automatisch aangepast. Om te voorkomen dat dit format verloren gaat wil ik dat het bestand wordt opgeslagen als een nieuw bestand (met een door de gebruiker opgeven naam) op een bepaalde plek die ik in de code kan aangeven.

Zo blijft het standaard format bestaan en kan ik, na wat dingen aangepast te hebben in het Excel bestand, een nieuwe offerte aanmaken waarbij hetzelfde format weer gebruikt wordt.


Zo wel een beetje duidelijk?
 
Laatst bewerkt:
Bookmarks zijn bedoeld voor mensen zonder verstand van VBA: de gebruikers die Word benaderen met de User Interface.
In VBA kun je beter gebruik maken van documentvariabelen (insert/fields/docvariable).

Code:
Sub M_snb()
   sn=sheet1.range("A1:K1")

   with getobject("G:\OF\voorbeeld.docx")
     for j= 1 to ubound(sn,2)
       .variables("V_" & j)=sn(1,j)
     next
     .fields.update
     .saveas2 "G:\OF\voorbeeld _" & format(date,"yyyy_mm_dd") & ".docx"
     .close 0
   end with
end sub

Klare taal, ik heb dan ook geen verstand van VBA. Vandaar dat ik hier een vraag stel :)

Over jouw code:
Wat doet die precies?
Zet die een Excel bestand 'automatisch' om in een word bestand? Ik krijg jouw code niet werkende omat ik "geen verstand heb van VBA" :p
 
Klare taal, ik heb dan ook geen verstand van VBA. Vandaar dat ik hier een vraag stel :)

Over jouw code:
Wat doet die precies?
Zet die een Excel bestand 'automatisch' om in een word bestand? Ik krijg jouw code niet werkende omat ik "geen verstand heb van VBA" :p

Heb je dan documentvariabelen aangemaakt in het Word bestand ? Snb schreef nog: insert/fields/docvariable
 
SVP niet citeren/quoten.
Eerst even dit lezen.

https://www.bol.com/nl/p/vba-voor-dummies/1001004005510771/

Daarna praten we verder.

Ik plaag alleen snb, geen verwijt. Wel het verzoek om wat socialer om te gaan met personen die minder verstand hebben van VBA dan jijzelf, wel zo sociaal. Dit forum is immers niet bedoeld voor alleswetenden lijkt me.

Ik ga straks even kijken naar doc variables. Hiervoor moet ik ook nog leren wat dat precies inhoud (dit had ik in eerste instantie niet opgemerkt in de reactie (@Wigi)).


In ieder geval bedankt voor de tip!
 
Ik vind dat je VBA kennis niet moet verwarren met kennis over een bepaalde applicatie. Ik ken genoeg mensen die misschien wel meer weten van Excel dan ik, maar geen VBA kennis hebben. Andersom zijn er zat (expert) VBA programmeurs die de applicatie die ze automatiseren niet goed genoeg kennen.
 
In de bijlage een voorbeeld:

1 excelbestand met medicijngegevens van 2 personen voor iedere dag van de week
1 wordbestand waarmee per persoon een medicijnkaart kan worden gemaakt.

Pak beide bestanden uit in dezelfde directory.
Open het Excelbestand.
Draai de macro M_snb in de codemodule van sheet1 ('paspoort').
Open in Word de beide nieuw geproduceerde bestanden.

NB. er zijn ook mensen die zowel kennis van VBA als een applicatie ontberen. ;) (slechts ter aanvulling van de matrix)
 

Bijlagen

  • medicijnkaart.zip
    40,6 KB · Weergaven: 47
Bedankt snb en jkpieterse.


Ik heb ondertussen onderstaande code gemaakt:

Code:
Sub opslaanalsmsgbox()

    ThisWorkbook.SaveAs "H:\Tijdelijk\" & InputBox("Voer bestandsnaam in:", "Opslaan als", 1) & ".xlsm"

End Sub

Deze code doet voor een Excel bestand wat ik wil.

Ik hoop dat jullie uit mijn vorige vragen hebben kunnen opmaken dat er een Word-bestand wordt aangemaakt vanuit een Excel macro.
Ik wil dat dit Word-bestand wordt opgeslagen op de manier als bovenstaande code werkt. Dit moet direct achter mijn bestaande code aan komen.
 
Lees svp aangedragen suggesties eens zorgvuldig. Het antwoord heb je allang gehad.

Jouw Excel code doet het niet omdat je geen fileformat hebt aangegeven (in dit geval 52).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan