Herbers Excel-Forum - das Archiv

Excel und Ini-Datei



Excel-Version: 8.0 (Office 97)
nach unten

Betrifft: Excel und Ini-Datei
von: Peter


Geschrieben am: 22.05.2002 - 16:54:51

Hallo,

ich habe mit Word97 (VBA-Makro) eine Ini-Datei erstellt. Kann ich diese Ini-Datei auch mit Excel97 auslesen um mit den dortigen Werten Variablen in Excel zu füllen ?

Kann ich aus Word97 eine vorhandene Exceltabelle starten und wenn man die ini-datei verwenden kann gleich die Ini-datei beim start zur Verfügung stellen und die Variablen in meinem Excel97 Makro mit leben zu füllen ?

Gruß

Peter


nach oben   nach unten

Re: Excel und Ini-Datei
von: PeterA

Geschrieben am: 22.05.2002 - 17:02:34

Hallo Peter

Ein Codebeispiel zum Auslesen einer TXT Datei.
Falls du Probleme beim Anpassen an dein Programm hast melde
dich noch mal.

PeterA


nach oben   nach unten

Re: Excel und Ini-Datei
von: Rolf, Lgh.

Geschrieben am: 22.05.2002 - 21:10:25

Hallo Peter,
ein Beispiel:

Weitere Hilfe findest Du auch hier: http://www.visualbasic-archiv.de/workshop/workshop17.php3.
Gruss Rolf
nach oben   nach unten

Die elegante Methode ...
von: Thomas Risi


Geschrieben am: 22.05.2002 - 23:15:15

Hallo Peter

Hier bietet sich eine Klasse zur Verwendung an ...

Füge in das Excel-Projekt eine Klasse ein, und benenne sie mit 'clsIni'. Dann fügst Du folgenden Code ein.

Option Explicit

Private Declare Function GetPrivateProfileString_ Lib "kernel32" _
 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 StringAs Long
 
Private Declare Function WritePrivateProfileString_ Lib "kernel32" _
 Alias "WritePrivateProfileStringA" ( _
 ByVal lpApplicationName As String, _
 ByVal lpKeyName As String, _
 ByVal lpDefault As String, _
 ByVal lpFileName As StringAs Long


' Datei = Pfad zur ini-Datei
' Sektion = Zu ändernde Section
' Schlüssel = Zu ändernder Key

Public Function GetPrivateProfileString(Datei$, Sektion$, Key$) As String
Dim A As Long, Wert As String
    
    Wert = Space$(255)
    A = GetPrivateProfileString_(Sektion$, Key$, "", Wert$, Len(Wert$), Datei$)
    GetPrivateProfileString = Left$(Wert$, A&)
    
End Function

Public Function WritePrivateProfileString(Datei$, ByVal Sektion$, ByVal Key$, ByVal Wert$)
Dim A As Long
    
    A = WritePrivateProfileString_(Sektion$, Key$, Wert$, Datei$)
    
End Function




In einem normalen Modul erstellst Du dann nur noch eine Instanz der Klasse und kannst auf deren Methoden zugreifen.

Option Explicit

Dim iniClass As clsIni  ' Klasse einbinden


Sub Test_Schreiben()
Dim Path$: Path = "C:\Excel\TestXL.ini"
Dim Section$: Section = "TEST"
Dim Key$: Key = "LastUsedRange"
    
    Set iniClass = New clsIni   ' Instanz erstellen
    
    iniClass.WritePrivateProfileString Path, Section, Key, "C8"
    iniClass.WritePrivateProfileString Path, Section, "HelloMsg", "Hi, wie geht's ?"
    
    Set iniClass = Nothing
    
End Sub


Sub Test_Lesen()
Dim Path$: Path = "C:\Excel\TestXL.ini"
Dim Section$: Section = "TEST"
Dim Key$: Key = "LastUsedRange"
    
    Set iniClass = New clsIni   ' Instanz erstellen
    
    MsgBox iniClass.GetPrivateProfileString(Path, Section, "HelloMsg")
    
    Set iniClass = Nothing
    
End Sub

     Code eingefügt mit Syntaxhighlighter 1.13




Um alle Daten beim Start der excel-Tabelle zur Verfügung zu haben, liest Du diese am Besten im 'WorkbookOpen'-Ereignis aus. Das Interessante an der 'Klasse' ist, daß man sie nur einmal erstellt, und unverändert in andere Projekte (Excel, Word, Access, usw.) übernehmen kann.


Gruß

Thomas

------------------------------
Internet: Homepage

eMail: Thomas.Risi@t-online.de
------------------------------


 nach oben