Profil supprimé | Salut forumiens,
Je suis en train de bosser (depuis bien trop longtemps :S) sur une macro excel, qui a partir de reponses a des listes deroulantes sur une feuille de calcul, permet d'automatiser la redaction d'un rapport word a partir d'un document maitre en n'inserant que les parties necessaires.
Ma logique est la suivante:
Je cree une instance de Word, ouvre le document maitre et le copie, colle sous le doc a rediger. Puis en fonction des valeurs des menus deroulants, on supprime telle ou telle section.
Bref en clair ca donne ca:
Code :
- Private Sub CommandButton1_Click()
- '-----Creation of the variables
- Dim boat_title As String
- Dim boat_class As String
- Dim mains_and_rudders As String
- Dim num_bow_tunnels As Integer
- Dim bow_azi As String
- Dim num_stern_tunnels As Integer
- Dim auto_pilot As String
- Dim adaptive_auto_pilot As String
- Dim speed_pilot As String
- Dim hstf_pilot As String
- Dim power_monitoring As String
- boat_title = Cells(5, 6).Value
- boat_class = Cells(7, 6).Value
- mains_and_rudders = Cells(9, 6).Value
- num_bow_tunnels = Cells(11, 6).Value
- bow_azi = Cells(13, 6).Value
- num_stern_tunnels = Cells(15, 6).Value
- auto_pilot = Cells(17, 6).Value
- adaptive_auto_pilot = Cells(19, 6).Value
- speed_pilot = Cells(21, 6).Value
- hstf_pilot = Cells(23, 6).Value
- power_monitoring = Cells(25, 6).Value
- '-----Copy master trial procedure
- Set appWD_master_doc = CreateObject("Word.Application" )
- appWD_master_doc.Visible = False
- appWD_master_doc.Documents.Open Filename:="Q:\JMayer\Sea_Trials_Notes.doc", ReadOnly:=True
- appWD_master_doc.Selection.WholeStory
- appWD_master_doc.Selection.Copy
|
Code :
- '-----Create personalized tuning procedure
- Set appWD_tun_process = CreateObject("Word.Application" )
- appWD_tun_process.Visible = True
- appWD_tun_process.Documents.Add
- Dim doc_title As String
- doc_title = "Tuning Procedure for " & boat_title & vbCrLf & vbCrLf
- file_title = Replace(boat_title, " ", "_" )
- file_title = "Q:\Tuning_Procedures\" & file_title & "_Tuning_Procedure"
- 'Set W = GetObject(Class:="Word.Application" )
- Set S = appWD_tun_process.ActiveWindow.Selection
- With S
- .ParagraphFormat.Alignment = wdAlignParagraphCenter
- .Font.Bold = True
- .Font.Size = 18
- .TypeText doc_title
- .ParagraphFormat.Alignment = wdAlignParagraphLeft
- End With
- appWD_tun_process.Selection.Paste
|
Jusque la tout marche bien ce qui signifie que j'arrive quand meme a manipuler le document cree.
Apres ca j'ai essaye de tres nombreuses manieres d'acceder a une section ou page ou meme mot sur ce document afin de le supprimer. J'ai rencontre de nombreuses erreurs, souvent inconsistantes.
J'ai essaye ceci
Code :
- 'Dim MyRange As Range
- 'Set MyRange = ActiveDocument.Sections(1).Range
- 'Set MyRange = MyRange.GoTo(What:=wdGoToSections, Name:="1" )
- 'appWD_tun_process.Selection.Delete
|
cela aussi:
Code :
- Set S = appWD_tun_process.ActiveWindow.Selection
- With S
- Selection.Words(1).Delete
- End With
|
Code :
- Dim MyRange As Range
- Set MyRange = appWD_tun_process.Selection.Range
- Set MyRange = MyRange.GoTo(What:=wdGoToPage, Name:="2" )
- Set MyRange = MyRange.GoTo(What:=wdGoToBookmark, Name:="\page" )
- MyRange.Delete''
|
J'en ai essaye pas mal d'autres, mais je ne me rappelle pas de toutes et je n'ai aucune idee de la raison pour laquelle elles ne marchent pas.
Les erreurs rencontrees sont :
- 438: Object does not support property or method
- 13: Type mismatch
- 53**" Object defined or *** defined error (je ne me souviens plus exactement de celle-la et n'ai pas reussi a la revoir)
Qqun a-t-il une idee?
Merci
PS: Le VB n'est vraiment pas mon truc comme vous l'avez surement constate donc essayez svp d'etre explicite dans vos reponses. Merci d'avance |