• 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 naar Word en opslaan in directory

Status
Niet open voor verdere reacties.

resmatrix

Gebruiker
Lid geworden
6 nov 2006
Berichten
173
Hallo

Ik gebruik onderstaande code. Deze werkt en opent een word document en copieert vervolgens uit excel een range als text erin.

Nu wil ik graag dat het document daarna automatisch zal worden opgeslagen op een bepaalde plaats (onderste gedeelte van de code) alleen dat doet ie niet en ik weet niet hoe ik dat kan oplossen

daarnaast zou het mooi zijn as de originele template zou worden gesloten zonden opslaan.

Kan iemand hiervoor wellicht de oplossing bieden?

bij voorbaat dank

Code:
Sub Savetoword()
  'copy range to table in word doc
 '
 Dim objWordApp As Object
 Dim objWordDoc As Object
 Dim rngData As Range

With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

 Set rngData = Range("H2:AX63")

 ' create instance of word and open doc
 Set objWordApp = CreateObject("Word.application")
 objWordApp.Visible = True
 'Set objWordDoc = objWordApp.Documents.Add
 Set objWordDoc = objWordApp.Documents.Open("D:\users\Templates\Template.docx")


 ' Copy xl range
 rngData.Copy

 ' Paste the range
 objWordApp.Selection.Paste

If fname <> "" Then 'make sure fname is not blank
With WdObj
 .ChangeFileOpenDirectory "D:\users\" 'save Dir
 .ActiveDocument.SaveAs FileName:=Range("S12").Value & " " & Range("P12").Value & " " & Range("M12").Value & " " & "File" & " " & Range("M11").Value & ".docx"
 End With
End If
 'objWordDoc.Save
 'objWordDoc.Close
 'objWordApp.Quit

 Set objWordDoc = Nothing
 Set objWordApp = Nothing
 End Sub
 
Laten we beginnen met je Ranges te benoemen in Excel, want dit werkt natuurlijk niet
Code:
.ActiveDocument.SaveAs FileName:=Range("S12").Value & " " & Range("P12").Value & " " & Range("M12").Value & " " & "File" & " " & Range("M11").Value & ".docx"
Denk in de trant van:
Code:
Sub Savetoword()
  'copy range to table in word doc
 '
 Dim objWordApp As Object
 Dim objWordDoc As Object
 Dim rngData As Range
 f = range("S12").value & " " & range("P12").value & " " & range("M12").value & "File " & range("M11").value & ".docx"
......

.ActiveDocument.SaveAs FileName:= a
 
Dank voor de reactie. Ik moet echter eerlijk bekennen dat ik het niet begrijp

De range benoemen dan volgt dat als FileName = (en dan de ranges) als ik het goed heb

maar dan is het echt abracadabra aan het worden sry
 
Code:
Sub M_snb()
  with CreateObject("Word.application")
      with .Documents.add("D:\users\Templates\Template.docx")
        Range("H2:AX63").copy
        .Selection.Paste
        .saveas2 "D:\users\" & join(array(cells(12,19),cells(12,14),cells(12,13),"File"))  & cells(11,13) & ".docx"
        .close 0
      end with
  end with
End Sub

Code kopiëren en gebruiken zonder te doorgronden is af te raden.
 
Volgens mij moet 'ie zo snb:
Code:
Sub M_snb()
  With CreateObject("Word.Application")
      With .Documents.Add("D:\users\Templates\Template.docx")
        Range("H2:AX63").Copy
        [B].Parent[/B].Selection.Paste
        .Saveas "D:\users\" & join(array(cells(12,19),cells(12,14),cells(12,13),"File"))  & cells(11,13) & ".docx"
        .Close 0
      End with
      .Quit
  End with
  Application.CutCopyMode = False
End Sub

In Word is .Selection een eigenschap van de applicatie en niet van het document, vreemd genoeg.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan