Piloter Word [Résolu]

Signaler
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
-
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
-
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

Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
1
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 !!!
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
"...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
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
1
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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
un algo ?

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

optimises ton code, ce sera deja un bon pas
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
1
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
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 avril 2013
1
Renfield, qu'entend tu par 'simple appel a SendMessage' ?

Merci beaucoup pour ton aide !!!