/ Forside / Teknologi / Administrative / MS-Office / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
MS-Office
#NavnPoint
sion 18709
refi 14474
Klaudi 9389
Rosco40 5695
berpox 5456
dk 5398
webnoob 4919
Benjamin... 4870
o.v.n. 4637
10  EXTERMINA.. 4373
Læse data i Registreringsdatabasen
Fra : Fritz Holtze


Dato : 07-03-01 10:12

Hej
Er der nogen der ved om det er muligt - og hvordan, man læser data i
Registreringsdatabasen med Office97's VBA.

Proceduren "GetSetting" giver tilsyneladende kun VBA mulighed for at læse et
bestemt sted i Registreringsdatabasen, hvordan læses der i de øvrige
"mapper" i registreringsdatabasen?

Håber at nogen i gruppen kender svaret.

Med venlig hilsen

Fritz Holtze

holtze@post.tele.dk






 
 
Harald Staff (07-03-2001)
Kommentar
Fra : Harald Staff


Dato : 07-03-01 11:45

Fritz

Ingen enkel sak. Men det går.
Lim dette inn i en modul. Bruk GetString på tekstverdier og GetDword på
tall/hex-verdier:

'top of module:******************************
Option Explicit

Public Const HKEY_CURRENT_USER = &H80000001
Public Const ERROR_SUCCESS = 0&

Declare Function RegOpenKey Lib "advapi32.dll" Alias _
"RegOpenKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, _
phkResult As Long) As Long

Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal Hkey As Long, ByVal lpValueName As String, _
ByVal lpReserved As Long, lpType As Long, lpData As Any, _
lpcbData As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal Hkey As Long) As Long

Public Const REG_SZ = 1 ' Unicode nul terminated String
Public Const REG_DWORD = 4 ' 32-bit number

'testkode -endre banen til Excel 8 om nødvendig:
Sub PromptR1C1()
If getdword(HKEY_CURRENT_USER, _
"Software\Microsoft\Office\9.0\Excel\Options", "Options") = 343 Then
MsgBox "Excel is set to A1 style"
Else
MsgBox "Excel is set to R1C1 style"
End If
End Sub

Public Function GetString(Hkey As Long, _
strPath As String, strValue As String)
'EXAMPLE:
'
'text1.text = getstring(HKEY_CURRENT_USE
' R, "Software\VBW\Registry", "String")
Dim r, lValueType
Dim keyhand As Long
Dim datatype As Long
Dim lResult As Long
Dim strBuf As String
Dim lDataBufSize As Long
Dim intZeroPos As Integer
r = RegOpenKey(Hkey, strPath, keyhand)
lResult = RegQueryValueEx(keyhand, strValue, 0&, _
lValueType, ByVal 0&, lDataBufSize)
If lValueType = REG_SZ Then
strBuf = String(lDataBufSize, " ")
lResult = RegQueryValueEx(keyhand, strValue, _
0&, 0&, ByVal strBuf, lDataBufSize)
If lResult = ERROR_SUCCESS Then
intZeroPos = InStr(strBuf, Chr$(0))

If intZeroPos > 0 Then
GetString = Left$(strBuf, intZeroPos - 1)
Else
GetString = strBuf
End If
End If
End If
End Function

Function getdword(ByVal Hkey As Long, ByVal strPath As String, ByVal
strValueName As String) As Long
'EXAMPLE:
'
'text1.text = getdword(HKEY_CURRENT_USER
' , "Software\VBW\Registry", "Dword")
'
Dim lResult As Long
Dim lValueType As Long
Dim lBuf As Long
Dim lDataBufSize As Long
Dim r As Long
Dim keyhand As Long
r = RegOpenKey(Hkey, strPath, keyhand)
' Get length/data type
lDataBufSize = 4
lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf,
lDataBufSize)
If lResult = ERROR_SUCCESS Then
If lValueType = REG_DWORD Then
getdword = lBuf
End If
End If
r = RegCloseKey(keyhand)
End Function

'*********************

Koden er fra http://www.vbfrance.com/article.asp?Val=215

HTH. Beste hilsen Harald


Fritz Holtze <holtze@post.tele.dk> skrev i
news:984tm3$4fi$1@news.inet.tele.dk...
> Hej
> Er der nogen der ved om det er muligt - og hvordan, man læser data i
> Registreringsdatabasen med Office97's VBA.
>
> Proceduren "GetSetting" giver tilsyneladende kun VBA mulighed for at læse
et
> bestemt sted i Registreringsdatabasen, hvordan læses der i de øvrige
> "mapper" i registreringsdatabasen?
>
> Håber at nogen i gruppen kender svaret.
>
> Med venlig hilsen
>
> Fritz Holtze
>
> holtze@post.tele.dk
>
>
>
>
>



Tommy Iversen (07-03-2001)
Kommentar
Fra : Tommy Iversen


Dato : 07-03-01 23:20

Hej Fritz
Du kunne også prøve System.PrivateProfileString()

Eks:
Public Sub ReadReg()
Dim sReg As String
sReg = System.PrivateProfileString("",
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\",
"RegisteredOwner")
MsgBox sReg
End Sub

> Er der nogen der ved om det er muligt - og hvordan, man læser data i
> Registreringsdatabasen med Office97's VBA.
>
> Proceduren "GetSetting" giver tilsyneladende kun VBA mulighed for at læse
et
> bestemt sted i Registreringsdatabasen, hvordan læses der i de øvrige
> "mapper" i registreringsdatabasen?

System.ProfileString() henter og gemmer under en bestemt 'gren'
System.PrivateProfileString() kan hente og gemme hvorsomhelst

Tommy



Fritz Holtze (10-03-2001)
Kommentar
Fra : Fritz Holtze


Dato : 10-03-01 11:57

Tak, det var lige det jeg havde brug for

Fritz
"Tommy Iversen" <tommy_iversen@hot_mail.com> skrev i en meddelelse
news:Wtyp6.1730$Rm4.49697@twister.sunsite.dk...
> Hej Fritz
> Du kunne også prøve System.PrivateProfileString()
>
> Eks:
> Public Sub ReadReg()
> Dim sReg As String
> sReg = System.PrivateProfileString("",
> "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\",
> "RegisteredOwner")
> MsgBox sReg
> End Sub
>
> > Er der nogen der ved om det er muligt - og hvordan, man læser data i
> > Registreringsdatabasen med Office97's VBA.
> >
> > Proceduren "GetSetting" giver tilsyneladende kun VBA mulighed for at
læse
> et
> > bestemt sted i Registreringsdatabasen, hvordan læses der i de øvrige
> > "mapper" i registreringsdatabasen?
>
> System.ProfileString() henter og gemmer under en bestemt 'gren'
> System.PrivateProfileString() kan hente og gemme hvorsomhelst
>
> Tommy
>
>



Leo Heuser (08-03-2001)
Kommentar
Fra : Leo Heuser


Dato : 08-03-01 22:27

Hej Fritz

En lille tilføjelse til Tommys udmærkede løsning:
Desværre findes System-objektet kun i Word VBA og i Frontpage VBA,
så hvis du skal hente oplysninger fra fx Excel, skal det gøres med
automation. Følgende kode kan bruges fra et Excel modul (det forudsætter
selvfølgelig, at
Word er installeret på maskinen)

Public Sub ReadReg()
Dim WordObject As Object

Set WordObject = CreateObject("Word.application")

Dim sReg As String
sReg = WordObject.System.PrivateProfileString("", _
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\",
"RegisteredOwner")
MsgBox sReg

WordObject.Quit

Set WordObject = Nothing
End Sub

ProfileString findes i både Word- og Frontpage VBA, mens
PrivateProfileString
kun findes i Word VBA.

Med venlig hilsen
LeoH


"Fritz Holtze" <holtze@post.tele.dk> skrev i en meddelelse
news:984tm3$4fi$1@news.inet.tele.dk...
> Hej
> Er der nogen der ved om det er muligt - og hvordan, man læser data i
> Registreringsdatabasen med Office97's VBA.
>
> Proceduren "GetSetting" giver tilsyneladende kun VBA mulighed for at læse
et
> bestemt sted i Registreringsdatabasen, hvordan læses der i de øvrige
> "mapper" i registreringsdatabasen?
>
> Håber at nogen i gruppen kender svaret.
>
> Med venlig hilsen
>
> Fritz Holtze
>
> holtze@post.tele.dk
>
>
>
>
>



Leo Heuser (08-03-2001)
Kommentar
Fra : Leo Heuser


Dato : 08-03-01 22:31

Og Frontpage VBA findes kun i Frontpage 2000.

"Leo Heuser" <leo.heuser@get2net.dk> skrev i en meddelelse
news:cOSp6.255$lk1.11077@twister.sunsite.dk...
> Hej Fritz
>
> En lille tilføjelse til Tommys udmærkede løsning:
> Desværre findes System-objektet kun i Word VBA og i Frontpage VBA,
> så hvis du skal hente oplysninger fra fx Excel, skal det gøres med
> automation. Følgende kode kan bruges fra et Excel modul (det forudsætter
> selvfølgelig, at
> Word er installeret på maskinen)
>
> Public Sub ReadReg()
> Dim WordObject As Object
>
> Set WordObject = CreateObject("Word.application")
>
> Dim sReg As String
> sReg = WordObject.System.PrivateProfileString("", _
> "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\",
> "RegisteredOwner")
> MsgBox sReg
>
> WordObject.Quit
>
> Set WordObject = Nothing
> End Sub
>
> ProfileString findes i både Word- og Frontpage VBA, mens
> PrivateProfileString
> kun findes i Word VBA.
>
> Med venlig hilsen
> LeoH




Harald Staff (08-03-2001)
Kommentar
Fra : Harald Staff


Dato : 08-03-01 22:45

Ah

Jeg har undret med over den der og prøvet en del underlige
referencesettinger. Men til WORD ?
(Er det ikke irriterende med to VBA som kun er tilsyneladende identiske ?)

Beste hilsen Harald

Leo Heuser <leo.heuser@get2net.dk> wrote in message
news:cOSp6.255$lk1.11077@twister.sunsite.dk...
> Hej Fritz
>
> En lille tilføjelse til Tommys udmærkede løsning:
> Desværre findes System-objektet kun i Word VBA og i Frontpage VBA,
> så hvis du skal hente oplysninger fra fx Excel, skal det gøres med
> automation.



Leo Heuser (09-03-2001)
Kommentar
Fra : Leo Heuser


Dato : 09-03-01 08:14

A real pain in the ass!

Med venlig hilsen
Leo

"Harald Staff" <harald.staff@eunet.no> skrev i en meddelelse
news:988ufv$en9$1@oslo-nntp.eunet.no...
> Ah
>
> Jeg har undret med over den der og prøvet en del underlige
> referencesettinger. Men til WORD ?
> (Er det ikke irriterende med to VBA som kun er tilsyneladende identiske ?)
>
> Beste hilsen Harald




Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste