|
| Hent data fra en ini fil Fra : Tue Hellstern |
Dato : 29-09-02 14:56 |
|
Hej NG,
I VBA i Word bruger jeg følgende funktion. Nu prøver jeg at bruge den samme
funktion i Visual Basic 6.0, men jeg får en fejl.
Function HentData(FILNAVN As String, Sektion As String, Nøgle As String) As
String
HentData = System.PrivateProfileString(FILNAVN, Sektion, Nøgle)
End Function
Er det ikke muligt at bruge de samme funktion i VBA og VB?
Findes en anden måde at hente og skrive data fra en ini fil?
Tue
| |
Peter Lykkegaard (29-09-2002)
| Kommentar Fra : Peter Lykkegaard |
Dato : 29-09-02 15:50 |
|
Som svar på skriblerier forfattet af Tue Hellstern
> I VBA i Word bruger jeg følgende funktion. Nu prøver jeg at bruge den
> samme funktion i Visual Basic 6.0, men jeg får en fejl.
>
> HentData = System.PrivateProfileString(FILNAVN, Sektion, Nøgle)
System er et Word objekt
Lav nogle API kald i stedet
Declare Function WritePrivateProfileString Lib "kernel32" Alias _
"WritePrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As
String, ByVal KeyDefault As String, ByVal FileName As String) As Long
Declare Function GetPrivateProfileString Lib "kernel32" Alias _
"GetPrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As
String, ByVal keydefault As String, ByVal ReturnString As String, ByVal
NumBytes As Long, ByVal FileName As String) As Long
Søg i Google på GetPrivateProfileString eller WritePrivateProfileString
mvh/Peter Lykkeegaard
| |
Carsten Marcussen (30-09-2002)
| Kommentar Fra : Carsten Marcussen |
Dato : 30-09-02 11:07 |
|
> I VBA i Word bruger jeg følgende funktion. Nu prøver jeg at bruge den
samme
> funktion i Visual Basic 6.0, men jeg får en fejl.
>
> Function HentData(FILNAVN As String, Sektion As String, Nøgle As String)
As
> String
> HentData = System.PrivateProfileString(FILNAVN, Sektion, Nøgle)
> End Function
>
> Er det ikke muligt at bruge de samme funktion i VBA og VB?
> Findes en anden måde at hente og skrive data fra en ini fil?
>
Nej , som der Lykkegaard nævnte ER det et Word object og du skal bruge nogle
API kald some han nævnte.
Men for lige at uddybe disse API'er.
Jeg har 3 stk.
Til strenge
Public Declare Function GetPrivateProfileString Lib "kernel32.dll" Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As
String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Til tal
Public Declare Function GetPrivateProfileInt Lib "kernel32.dll" Alias
"GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName
As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
Både tal og strenge (konverter tal til en streng først)
Public Declare Function WritePrivateProfileString Lib "kernel32.dll" Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String)
As Long
Og benyttes nogenlunde sådan her..:
Lav noget kode til at oprette selve ini-filen først (tom fil).
Skriv værdi..:
Dim sRetVal
sRetVal = WritePrivateProfileString("Min sektion", "Min entry", "Min værdi",
"C:\MinIniFil.ini")
Ini-filen bør nu se sådan ud..:
[Min sektion]
Min entry=Min værdi
Læs værdi..:
(Jeg har lavet noget ekstra (function) da API'en returner noget streng misk
mask.)
Public Function GetPrivateProfileStr(Section As String, Entry As String,
IniFilePath As String) As String
Dim sRetVal
Dim RtnStr As String
RtnStr = Space(255)
sRetVal = GetPrivateProfileString(Section, Entry, "error", RtnStr,
Len(RtnStr) - 1, IniFilePath)
GetPrivateProfileStr = Left(RtnStr, InStr(RtnStr, Chr(0)) - 1)
End Function
Dim Iniværdi As String
Iniværdi = GetPrivateProfileStr("Min sektion", "Min entry",
"C:\MinIniFil.ini")
Iniværdi skulle nu indholde værdien "Min værdi"
Indeholder Iniværdi = "error" er Sektion/entrien IKKE fundet.
Håber det leder dig på rette spor
Carsten Marcussen
| |
Klaus Ambrass (30-09-2002)
| Kommentar Fra : Klaus Ambrass |
Dato : 30-09-02 13:33 |
|
"Tue Hellstern" <info@f1-support.dk> wrote in
news:3d9708e2$0$84687$edfadb0f@dspool01.news.tele.dk:
> Hej NG,
> I VBA i Word bruger jeg følgende funktion. Nu prøver jeg at bruge den
> samme funktion i Visual Basic 6.0, men jeg får en fejl.
>
> Function HentData(FILNAVN As String, Sektion As String, Nøgle As
> String) As String
> HentData = System.PrivateProfileString(FILNAVN, Sektion, Nøgle)
> End Function
>
> Er det ikke muligt at bruge de samme funktion i VBA og VB?
> Findes en anden måde at hente og skrive data fra en ini fil?
>
> Tue
>
>
Hej Tue,
det kald virker da fint i Word 2000 VBA. Du skal bare være 100% sikker på
at ini-filen eksisterer. Og så ville jeg nok omdøbe Nøgle til Noegle, samt
tjekke at min sti/filnavn ikke indeholder mellemrum.
--
Klaus Ambrass
IT - Storstrøms Amt
kam@it.stam.dk
| |
Tue Hellstern (30-09-2002)
| Kommentar Fra : Tue Hellstern |
Dato : 30-09-02 17:50 |
|
Hej Klaus,
> det kald virker da fint i Word 2000 VBA.
Ja, det er ikke noget problem, men det er i VB 6.0 jeg skal bruge det og
ikke i Word VBA.
Tue
| |
Klaus Ambrass (01-10-2002)
| Kommentar Fra : Klaus Ambrass |
Dato : 01-10-02 09:15 |
|
"Tue Hellstern" <info@f1-support.dk> wrote in news:3d988302$0$18128
$edfadb0f@dspool01.news.tele.dk:
> Hej Klaus,
>
>> det kald virker da fint i Word 2000 VBA.
> Ja, det er ikke noget problem, men det er i VB 6.0 jeg skal bruge det og
> ikke i Word VBA.
>
> Tue
Sorry.
--
Klaus Ambrass
IT - Storstrøms Amt
kam@it.stam.dk
| |
Tue Hellstern (30-09-2002)
| Kommentar Fra : Tue Hellstern |
Dato : 30-09-02 17:51 |
|
Hej
Det var lige det jeg havde brug for.
Jeg var ikke klar over at det var et Word VBA kald. Jeg trode at det også
virkede, men så blev man da så klog.
Jeg har fået det til at virke helt efter hensigten, mange tak for hjælpen.
Tue
| |
|
|