Piloter Word

Résolu
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 - 13 nov. 2007 à 10:16
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 - 21 nov. 2007 à 09:09
Bonjour,

je donne actuellement, la possibilité aux utilisateurs d'un outil, de Visualiser ou Modifer (suivant les droits de l'utilisateur) des fichiers textes
à l'aide du composant richtextbox !
Malheureusement, ce composant est très limité et ne gère pas les fichiers de gros volumes !

Un collègue m'a aiguillé vers la piste de Word.
En pilotant Word à partir de VB, puis je avoir accès aux menus ?
Le but étant de désactiver la fonction 'enregistrer sous' et éventuellement (suivant les droits de l'utilisateur) la fonction 'enregistrer'.

Merci d'avance pour votre aide !!!!!!

TuLeSais

6 réponses

cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
21 nov. 2007 à 09:09
C'est bon !!!

j'ai suivi la direction de RenField : optimiser le code avec un SendMessage dont voici le code :

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const EM_LINEINDEX           As Long = &HBB

Private Sub Tmr_Sel_Timer()
    w_ligne = Format(CStr(GetRow), "000000")
    w_colonne = Format(CStr(GetCol), "000000") + 1
End Sub


Public Function GetRow() As Long
    GetRow= rtb.GetLineFromChar(rtb.SelStart) + 1
End Function


Public Function GetCol() As Long
    GetCol= rtb.SelStart - SendMessage(rtb.hwnd, EM_LINEINDEX, GetRow - 1, ByVal 0&)
End Function

Merci à tous pour votre aide !!!
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 nov. 2007 à 10:31
"...Malheureusement, ce composant est très limité et ne gère pas les fichiers de gros volumes !..."   ?????

Ne confondrais-tu pas avec le controle TextBox par hasard ????

Le controle Textbox est limité à du text de 64ko, la limite du controle RichTextBox dépend essentiellement de la mémoire sur ta machine.
J'ai déjà eu l'occasion d'ouvrir un fichier de plus de 600Mo dans un controle RTB, certes ça prend énormément de temps, mais c'est possible.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
13 nov. 2007 à 10:57
salut casy !

je pense qu'il y a tout de même une limitation du richtextbox soit au niveau taille soit au niveau du nombres de lignes.

Par contre, j'affiche dans le formulaire ou se trouve le RTB, le N°Ligne et le N°Colonne et pour cela, j'utilise un algo
insupportable pour les gros fichiers.

C'est pour toutes ces raisons que je souhaite passer en pilotage word ou autres ...

TuLeSais
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 nov. 2007 à 11:07
un algo ?

passes par APIs, un simple appel a SendMessage et c'est Ok...

optimises ton code, ce sera deja un bon pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
20 nov. 2007 à 10:38
Toujours dans l'optique de piloter word en mode lecture uniquement, j'arrive à désactiver certaines fonctions du menu 'ouvrir, enregistrer...'.
par contre, ces fonctions n'apparaissent plus du tout dans word même après un reboot de la machine !!!

comment réhabiliter les fonctions du menu après fermeture du document word ???

Merci d'avance pour votre aide !!!!!

Dim wrd        As New Word.Application
Dim c             As CommandBar
Dim MonDoc As Word.Document

For Each c In wrd.CommandBars
        For Each cp In c.Controls            If c.Type msoBarTypeMenuBar Or c.Type msoBarTypePopup Then
                For Each cb In cp.Controls
                    Select Case cb.Caption
                        Case "Enre&gistrer"
                                cb.Enabled = False
                        Case "Enre&gistrer sous..."
                            cb.Enabled = False
                        Case "Enre&gistrer en tant que Page &Web..."
                            cb.Enabled = False
                    End Select
                Next
            End If
        Next
Next


Set MonDoc = wrd.Documents.Open(FileName:=stFichier, ReadOnly:=True)

wrd.Visible = True
0
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
20 nov. 2007 à 14:21
Renfield, qu'entend tu par 'simple appel a SendMessage' ?

Merci beaucoup pour ton aide !!!
0
Rejoignez-nous