via VBA in Excel WORD openen met sjabloon

Status
Niet open voor verdere reacties.
foutje , had niet gezien dat er een tweede blad stond aangegeven.

Dus zie oproep op blad 2
 
Laatst bewerkt:
Dank je SNB voor je uitleg en...

voor wat betreft mijn kennis, deze is inderdaad beperkt.
Ik heb daarom reeds eerder al een inleiding in VBA via dit forum gedownload.

Voor wat betreft jouw code:

deze werkt inderdaad

In mijn macro hoeft WORD niet actief te zijn tijdens het draaien van de macro.

Mijn macro opend WORD voegt een bep. range (C9:J62) in en schrijft deze weg onder een unieke naam onder:
C:\
ORDERNR (=range D29) ( in mijn geval op dit moment 7000 = variabel) ==> dir moet aangemaakt zijn op C-schijf
\VERZENDADVIEZEN ==> sub,dir moet aangemaakt zijn
\7000 (= range D29)
\-Verzendadvies
(1) ( = uniek doc. nr.)
7000 is het ordernr van een bep. werk, dit varieerd per project

Mijn volgende aan te maken verzendadvies gaat heten / wordt weer weggeschreven onder:
C:\ 7000\VERZENDADVIEZEN\7000-Verzendadvies(2)
dus opgehoogd met 1

m.b.v. jouw macro wordt een sjabloon geopend (test-1.dot).
hiervoor moet WORD geopend zijn.
wordt de koptekst ingevoegd en vandaar uit kan ik dan mijn acties uitvoeren.

Maar mijn voorkeur heeft het om jou code in te voegen in het reeds geopende bestand, waarin alle bewerkingen reeds zijn uitgevoerd.
dus net voor het afsluiten van het bestand.

Dit is ook de reden waarom ik op een gegeven moment ben overgestapt op het maken van een koptekst d.m.v. een macro in WORD en deze heb geprobeerd zodanig aan te passen voor EXCEL i.p.v. een sjbloon te gebruiken

Jouw oplossing is ook mogelijk maar dan zou ik de bewerkingen na jouw code moeten uitvoeren.

Code:
Sub Verzendadvies()
'Toin Scheepers created this routine dd 20-12-2008.
'
'This routine will export a range to a Word document
'It opens Word, paste the Excel range, stores the Word document and closes the Word application

    Dim oWordApp As Object
    Dim oWordDoc As Object
    Dim oWSH As Object
    Dim rExport As Range
    Dim sFileName As String, sPath As String
    Dim i As Long, i2 As Long
    
    Set rExport = Worksheets("verzendadvies").Range("c9:j62")      '<- Change as needed

    'Find the path to "C:/8606/VERZENDADVIEZEN"
    Set oWSH = CreateObject("WScript.Shell")
    sPath = "c:\" & Worksheets("verzendadvies").Range("d29") & "\" & "verzendadviezen\"
    
        'Assemble a filename for the Word document
    'In this case use the value that is in the first cell of the exported range and append date
    sFileName = Range("d29") & "-" & "Verzendadvies"
    
       'Optional: make sure you have a unique filename
    i = 1
    While FileExists(sPath & "\" & sFileName & ".doc")
        i2 = InStr(1, sFileName & ".doc", "(", vbTextCompare)
        If i2 = 0 Then
            sFileName = sFileName & "(" & i & ")"
        Else
            sFileName = Left(sFileName & "verzendadvies.doc", i2) & i & ")"
        End If
        i = i + 1
    Wend
    
    'Create a Word document.
    Set oWordApp = CreateObject("Word.Application")

    'Make the newly created Word instance visible
    oWordApp.Visible = True
     
    'Create a new document
    Set oWordDoc = oWordApp.documents.Add
     
    'Copy data
    rExport.Copy
     
    'Paste Excel range in Word (will be pasted in a table)
    oWordApp.Selection.PasteSpecial Link:=False, Placement:=wdInLine
   
    'Save the Word document
    oWordDoc.SaveAs sPath & sFileName, wdFormatDocument


Dus nu jouw code invoegen:

Code:
Sub opslag()
  With GetObject(, "Word.Application").Application.documents.Add("C:\test-1.dot")
    .SaveAs "C:\" & Worksheets("verzendadvies").Range("d29") & "\" & "verzendadviezen\" & Worksheets("verzendadvies").Range("d29") & "-" & "Verzendadvies.doc"
     .StoryRanges(7).Fields.Update
    .Close -1
  End With
End Sub

om te bouwen naar:

Code:
'Insert Koptekst
     .With.StoryRanges(7).Fields.Update
    .Close -1
  End With

om deze gelijktijdig uit te laten voeren met de andere commando's met 1 macro

Wat ik op dit forum heb begrepen is, dat wanneer je een macro in WORD opneemt, je deze kunt invoegen in EXCEL door:

A: te starten met with
B: voor het opgenomen commando een punt te plaatsen
C: te eindigen met end with

Echter de aanpassing blijkt geen succes.
Wat zie ik over het hoofd?


Na invoegen koptekst vervolg bestaande macro.

Code:
  'Close Word Application
    oWordApp.Quit SaveChanges:=False
   
End Sub

'FileExists Function -> geeft TRUE terug als de file bestaat
Function FileExists(fname As String) As Boolean
  FileExists = Dir(fname, vbNormal) > Empty
End Function

Mogelijk zie jij de hiaten?

groetjes

Toin
 
Tegen zoveel eigenwijsheid ben ik niet bestand.
 
Hoi SNB

Nou eigenwijs ..... dat ben ik wel.... hoor ik wel vaker ...maar ik denk ook dat ik je, of niet goed begrijp of dat ik mijn vraag niet duidelijk genoeg gesteld heb.

Dus...even wat misverstanden wegnemen

Je hebt overigens nog niet begrepen dat in het wordsjabloon een veld in de koptekst staat, dat automatisch de naam van het bestand weergeeft. Al jouw pogingen om iets met een koptekst te doen zijn daarom overbodig.

Ik begrijp dat je m.b.v. je sjabloon (test-1.dot) de koptekst automatisch in ieder document krijgt.
Mijn vraag is echter

Gezien de eerder ontwikkelde macro, waarover ik best tevreden ben, wil ik hierop een aanvulling maken van;

1: Het invullen van de bestandsnaam bovenaan het blad d.m.v. een koptekst

A: Beeld
Kop- voettekst
Autotekst fragment invoegen
bestandsnaam
of,

2; d.m.v. de wijze zoals jij het denk ik hebt gedaan in je sjabloon.

B: Invoegen
Veld
Filename
Beginhoofdletter

(Klopt het dat je de bestandsnaam op deze wijze laat invullen ?)

De wijze waarop jij start met het sjabloon wil ik ook best proberen, echter, vind ik het jammer dat hiervoor WORD moet opgestart zijn voordat het sjabloon gebruikt kan worden.
Mogelijk is dit op te lossen.


2: Ik begrijp, dat wanneer ik niet met een sjabloon werk, ik iedere keer dezelfde handelingen moet laten uitvoeren en dat dit beter of of sneller kan.
Dit is een keuze.

3; Mijn grootste probleem blijft het laten samenwerken van EXCEL met WORD.
Hoe kan ik via VBA uit EXCEL de bestandsnaam in WORD in laten vullen?
of anders gezegd;
Welk commando moet ik gebruiken?

Ik weet inmiddels dat, wanneer ik een commando in WORD wil uitvoeren via EXCEL ik
met:

Set oWordDoc .........

moet starten om word actief te maken

(Is dit juist ?)


Zit ik eenmaal in WORD de andere commando's uit laat voeren met:

oWord.................

Kortom, ik ken de commando's achter oWordDoc en oWord niet om de bestandsnaam in te laten vullen.

Vandaar dat ik, via een macro op te nemen in WORD, dacht zo achter de juiste commando's te komen.
Vervolgens hierop een aanpassing te maken.

Gezien jouw reacties op mijn vruchteloze pogingen, is dit waarschijnlijk niet mogelijk of zou dit anders moeten.

Graag zou ik nogmaals gebruik maken van jouw kennis

Groeten

Toin
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan