Word XP Makro

  • #1
J

jannie

Aktives Mitglied
Themenersteller
Dabei seit
22.03.2005
Beiträge
37
Reaktionspunkte
0
Hi,

ich sitze gerade an einem alten Word Makro, worin die Funktionsaufrufe GetProfileString$ und SetProfileString verwendet werden. Diese sollen in der WIN.INI lesen oder schreiben. Das funktioniert aber in Word XP nicht mehr. Hat jemand eine Idee, wie die alten Befehle ersetzt werden könnten?

jannie
 
  • #3
danke Matjes,

hat zwar eine Weile gedauert, aber ich habe mich ansatzweise in der MSN-Library durchgebissen. Registry und Registry-Schlüssel anlegen ist allerdings ein heikles Thema. Zur Vorsicht habe ich mal von C: ein Image erstellt und die Registry exportiert. Wie geht das jetzt mit dem Schlüssel anlegen?  ::)

jannie
 
  • #4
Hi jannie,

schau mal unter folgendem link bei ActiveVB. Ist zwar für VBA, kann man aber leicht nach VB-Word transferieren.


Ein Modul aufmachen, als erste Zeile
Code:
Option Explicit
, dann sieht man, welche vordefienerten Variablen oder Steuerelemente nicht vorhanden sind.

Gruß Matjes  :)
 
  • #5
Hi,

8) Soo, nach einem Ausflug in die Registry und ActiveVB bin ich nun doch noch in der Microsoft Visual Basic-Hilfe fündig geworden. Ich beginne nun Tests mit SaveSetting und GetSetting.

Code:
SaveSetting Anw1, MS Word User, Name, Josef Meier-> nur Test
Dim GPS->nur Test
GPS = GetSetting(Anw1, MS Word User, Name)-> nur Test

Mit SaveSetting scheinen Daten gespeichert zu werden, denn GetSetting liefert einen Wert. Allerdings habe ich noch nicht rausbekommen, wo die Daten gespeichert werden.  ??? In der Registry finde ich zwar unter

HKEY_CURRENT_USER\Software\Microsoft\Search Assistant\ACMru\5604

die Einträge
   Name: 000
   Wert: Anw1

jedoch auch eine Vielzahl anderer von mir bereits gesuchten Objekte.->Search Assistant' sagt eigentlich alles.

Werd mal weiter wurschteln. Grüße,

:)  jannie
 
  • #6
Hallo jannie,

wo das landet, ist in beschrieben.

Bei mir unter Win98 hab ich folgenden Makro ausprobiert:
Code:
Sub QuatschInDieRegistryEintragen()
 ->landet unter
 ->HKEY_CURRENT_USER\Software\VB and VBA Program Settings\HalloHallo\Optionen
  SaveSetting HalloHallo, Optionen, MeinSchluessel, 777
End Sub

Gruß Matjes :)
 
  • #7
:) danke Matjes,

so langsam krieg ich den Bogen raus mit der Registry. Nun hab ich aber doch noch eine Frage: Die Einträge sind doch lokal, oder kann ich in einem Netzwerk an einem anderen Rechner einen Registryeintrag von meinem Rechner aus machen?

Zweite Frage, bezieht sich auf folgenden Code:

Code:
'If WordBasic.[GetProfileString$](MS Word User, Name) =  Then-> Original
If GetSetting(Anw1, MS Word User, Name) =  Then-> Ersatz
    WordBasic.Call BenutzerInfoEinstellen.PrepareUserForDlg
    WordBasic.Call BenutzerInfoEinstellen
    If WordBasic.[GetAutoText$](Konfigurieren, 1) <>  Then
        WordBasic.ViewNormal
        WordBasic.Call BriefKopfzeileEinstellen
        If WordBasic.[GetAutoText$](Konfigurieren, 1) =  Then
            WordBasic.PrintStatusBar Die Änderungen werden in der Vorlage gespeichert...
            On Error Resume Next
            WordBasic.SaveTemplate
            On Error GoTo -1: On Error GoTo 0
        End If
    End If
    WordBasic.Call Konfigurieren.SayHowToConfigure
    ConfigureMsgShown = -1
End If

Erste Zeile hab ich schon ersetzt mit GetSetting, funktioniert auch. Also angenommen unter->Name' ist kein Eintrag, dann wird ein anderes Modul geöffnet, um Benutzerinformationen einzustellen. Dies geschieht mit einem Dialog, den ich auch schon mit den neuen Befehlen GetSetting und SaveSetting bestückt habe. Aber was die zwei weiteren if-Verschachtelungen bewirken sollen, ist mir ein Rätsel. ::) Vielleicht weißt Du ja Rat, Matjes, wäre Dir sehr dankbar!

Gruß, jannie
 
  • #8
Hallo jannie,

zur ersten Frage:
kann ich dir nicht genau beantworten - hab ich noch nicht ausprobiert.
Ich denke mal, dass das nicht direkt geht.
Eine Möglichkeit besteht darin, als Administrator auf dem fremden Rechner eine Policy setzen (ist eine Registry-Änderung, die beim Hochfahren des Rechners eingetragen wird).
Schau mal bei ct unter

zur zweiten Frage:
siehe unter MSN Visual Basic Equivalents


Gruß Matjes  :)
 
  • #9
Hi!

Danke Matjes, GetAutoText$() habe ich erfolgreich ersetzt. Aber auch dann tritt ein Problem auf:

Code:
If NormalTemplate.AutoTextEntries(Konfigurieren).Value <>  Then

Wenn der AutoText Eintrag Konfigurieren existiert, dann läuft das Makro hier weiter. Existiert aber jener Eintrag nicht, dann bricht das Makro ab.

Ich habe bisher leider keine Möglichkeit - ausser On Error Resume Next, hat aber keinen Zweck hier - gefunden, wie ich überprüfen kann, ob ein Eintrag in AutoText existiert.

jannie
 
  • #10
Hi Jannie,

versuch es mal so:
Code:
Function AutotextExist(s_name As String) As Boolean
 ->true: wenn AutotextEntry existiert und den Wert s_name hat
 ->sonst false
  Dim s_tmp As String
  AutotextExist = False
  
  On Error GoTo Errorhandler
  s_tmp = NormalTemplate.AutoTextEntries(s_name).Value
  If s_tmp = s_name Then
    AutotextExist = True
  Else
    AutotextExist = False
  End If
  Exit Function
Errorhandler:
  Err.Clear
  AutotextExist = False
End Function

Gruß Matjes  :)
 
  • #11
Danke Matjes,

die Funktion tut gute Dienste, hab sie gleich eingebaut.

Code:
If WordBasic.[GetAutoText$](Konfigurieren, 1) <>  Then
        WordBasic.ViewNormal
        WordBasic.Call BriefKopfzeileEinstellen
        If WordBasic.[GetAutoText$](Konfigurieren, 1) =  Then
            WordBasic.PrintStatusBar Die Änderungen werden in der Vorlage gespeichert...
            On Error Resume Next
            WordBasic.SaveTemplate
            On Error GoTo -1: On Error GoTo 0
        End If
End If

hab ich ersetzt durch

Code:
If AutotextExist(Konfigurieren) Then
        WordBasic.ViewNormal
        WordBasic.Call BriefKopfzeileEinstellen
        If Not AutotextExist(Konfigurieren) Then
            WordBasic.PrintStatusBar Die Änderungen werden in der Vorlage gespeichert...
            On Error Resume Next
            WordBasic.SaveTemplate
            On Error GoTo -1: On Error GoTo 0
        End If
End If

Ich hoffe ich habe alles richtig gemacht. Jetzt fang ich mal an, zu Debuggen, mal sehen, was da noch alles passiert!

Gruß,

jannie    :)
 
Thema:

Word XP Makro

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben