2016-01-27 1 views
4

J'ai une fonction VBA mot que je suis en train de construire dans Excel VBA (la raison derrière ce choix vient de this question) et je suis coincé au problème suivant:Excel VBA équivalent à VBA Word système

La fonction Word VBA utilise abondamment System.PrivateProfileString, ce qui déclenche l'erreur Compile Error: invalid qualifier lorsqu'elle est appliquée à Excel VBA. Quelle est l'instruction équivalente dans Excel? Sinon, comment puis-je contourner cela?

Exemple d'utilisation:

strHomeSharePath = System.PrivateProfileString("", "HKEY_CURRENT_USER\Volatile Environment", "HOMESHARE") 

Répondre

3

Salut si vous baguette pour lire le regesty dans Excel, vous pouvez le faire de cette façon.

Sub test() 
Dim strPath As String 
    strPath = RegKeyRead("HKEY_CURRENT_USER\Volatile Environment\HOMESHARE") 
End Sub 

Function RegKeyRead(i_RegKey As String) As String 
Dim myWS As Object 

    On Error Resume Next 
    'access Windows scripting 
    Set myWS = CreateObject("WScript.Shell") 
    'read key from registry 
    RegKeyRead = myWS.RegRead(i_RegKey) 
End Function 
+0

Hell yeah! C'est sympa. Question rapide: cette fonction m'envoie à un fichier '.ini', qui a un en-tête comme' [Header Text] 'et plusieurs entrées/clés ci-dessous, comme" Company = company name ". Essayer d'accéder aux entrées renvoie l'erreur "Racine invalide dans la clé de registre". Une idée de comment je peux spécifiquement retourner la valeur d'une clé? – Holene

+0

@Holene Pouvez-vous poster du code? Parce que je ne comprends pas votre question. – Moosli

+0

Ah, ouais, j'ai fait un peu plus de recherche, et ce que je demande essentiellement, c'est s'il y a un moyen facile de lire les fichiers '.ini' dans Excel VBA? – Holene

1

En supposant (selon votre autre question) votre code Excel a une référence à un mot objet, disons "objWord", il devrait être ...

strHomeSharePath = objWord.System.PrivateProfileString("", "HKEY_CURRENT_USER\Volatile Environment", "HOMESHARE") 

OMI le mot « système "est un peu trompeur, suggérant que cela n'a rien à voir avec Word. Mais c'est une classe dans la bibliothèque Word.