1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| Sub FusionExcelWord()
Dim Wd1 'As Document
Dim xlApp 'as Excel.Application
Dim CL1 'as workbook
Dim FL1 'as worksheet
Dim TabNom(), DerLig As Long, NoLig, Rep
Set Wd1 = ActiveDocument
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
'Création du tableau des noms des fichiers à créer
Set CL1 = xlApp.Workbooks.Open("D:\xls\Liste pour fusion.xls")
Set FL1 = CL1.Worksheets("feuil1") '< la feuille
FL1.Activate
DerLig = FL1.Range("A1").SpecialCells(xlCellTypeLastCell).Row
ReDim TabNom(DerLig)
For NoLig = 1 To DerLig - 1
TabNom(NoLig) = FL1.Cells(NoLig + 1, 1).Value
Next
CL1.Close False
xlApp.Quit
Set CL1 = Nothing
Set xlApp = Nothing
DoEvents
'FACULTATIF : Créer la liaison entre le doc Word et le fichier Excel
'Inutile si la liaison existe déjà entre les deux fichiers
'Wd1.MailMerge.MainDocumentType = wdFormLetters
'Wd1.MailMerge.OpenDataSource Name:= _
'"D:\xls\Liste pour fusion.xls", ConfirmConversions:=False, LinkToSource:=True, Format:=wdOpenFormatAuto, Connection:= _
'"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=D:\xls\Liste pour fusion.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Typ", _
'SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:= _
'wdMergeSubTypeAccess
'************** à modifier ***************
Rep = "D:\Doc\LettresTypes\" 'Création d'un nouveau répertoire
on error resume next
MkDir Rep 'création du répertoire 'erreur s'il existe déjà
on error goto 0
'*************************************
Application.ScreenUpdating = False
'Fusion
For NoLig = 1 To DerLig - 1
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = NoLig
.LastRecord = NoLig
End With
.Execute
End With
'Enregistrement du fichier créé
ActiveDocument.SaveAs FileName:=Rep & TabNom(NoLig) & ".doc"
ActiveDocument.Close False
Next
Application.ScreenUpdating = True
End Sub |
Partager