#1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 63
Default INI File

I'm attempting to store a variable for reference when different workbooks
open. I'm aware of the following options

Hidden names: I believe this to be an undocumented/unsupported feature
which may be unstable or no longer available in future releases. (Are there
"non-hidden" names?)

Excel worksheet cell (hidden worksheet, hidden workbook, personal.xls, etc.)

Add-in: Not really sure of advantages/disadvantages?

INI file:

I would actually prefer to used the INI file if not only because other
applications could access the information. I was under the impression that
an INI file was simply a text file. I opened c:\windows\win.ini and it did
appear to be a simple text file of variables and their values. However, the
following code retrieved a variable and it's value that doesn't appear to be
in the INI file? Any ideas what happens if you try to retrieve a value from
an INI file that doesn't exist. For example, if I provide a co-worker with
the .xls file but forget to provide them with the INI file what happens when
the code runs?

Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub readFromINI()
Dim sFileName As String, sHeader As String, sKey As String
Dim buf As String * 256
Dim length As Long


sFileName = "C:\WINDOWS\WIN.INI"
sHeader = "intl"
sKey = "sCountry"

length = GetPrivateProfileString( _
sHeader, sKey, "<no value", _
buf, Len(buf), sFileName)
MsgBox Left$(buf, length)
End Sub

Thanks in advance,

Christmas May
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 10,593
Default INI File

Nothing wrong with Hidden names. Visible is a property of the name object,
so it is supported. But you still have to have a workbook to hold that name.

As for INI files you test for a successful action, both in opening the file,
and retrieving the data. You would have to do that for a hidden name, a
value on a hidden (maybe non-existent) spreadsheet.

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Christmas May" wrote in message
...
I'm attempting to store a variable for reference when different workbooks
open. I'm aware of the following options

Hidden names: I believe this to be an undocumented/unsupported feature
which may be unstable or no longer available in future releases. (Are

there
"non-hidden" names?)

Excel worksheet cell (hidden worksheet, hidden workbook, personal.xls,

etc.)

Add-in: Not really sure of advantages/disadvantages?

INI file:

I would actually prefer to used the INI file if not only because other
applications could access the information. I was under the impression

that
an INI file was simply a text file. I opened c:\windows\win.ini and it

did
appear to be a simple text file of variables and their values. However,

the
following code retrieved a variable and it's value that doesn't appear to

be
in the INI file? Any ideas what happens if you try to retrieve a value

from
an INI file that doesn't exist. For example, if I provide a co-worker

with
the .xls file but forget to provide them with the INI file what happens

when
the code runs?

Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub readFromINI()
Dim sFileName As String, sHeader As String, sKey As String
Dim buf As String * 256
Dim length As Long


sFileName = "C:\WINDOWS\WIN.INI"
sHeader = "intl"
sKey = "sCountry"

length = GetPrivateProfileString( _
sHeader, sKey, "<no value", _
buf, Len(buf), sFileName)
MsgBox Left$(buf, length)
End Sub

Thanks in advance,

Christmas May



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4,391
Default INI File

Bob,
I think the OP's referring to Excel's hidden NameSpace, rather than hidden
name.
As I see it you can use that, but you need understand what you are doing and
why. If there's a suitable, more standard way, use it.

NickHK

"Bob Phillips" wrote in message
...
Nothing wrong with Hidden names. Visible is a property of the name object,
so it is supported. But you still have to have a workbook to hold that

name.

As for INI files you test for a successful action, both in opening the

file,
and retrieving the data. You would have to do that for a hidden name, a
value on a hidden (maybe non-existent) spreadsheet.

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Christmas May" wrote in message
...
I'm attempting to store a variable for reference when different

workbooks
open. I'm aware of the following options

Hidden names: I believe this to be an undocumented/unsupported feature
which may be unstable or no longer available in future releases. (Are

there
"non-hidden" names?)

Excel worksheet cell (hidden worksheet, hidden workbook, personal.xls,

etc.)

Add-in: Not really sure of advantages/disadvantages?

INI file:

I would actually prefer to used the INI file if not only because other
applications could access the information. I was under the impression

that
an INI file was simply a text file. I opened c:\windows\win.ini and it

did
appear to be a simple text file of variables and their values. However,

the
following code retrieved a variable and it's value that doesn't appear

to
be
in the INI file? Any ideas what happens if you try to retrieve a value

from
an INI file that doesn't exist. For example, if I provide a co-worker

with
the .xls file but forget to provide them with the INI file what happens

when
the code runs?

Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub readFromINI()
Dim sFileName As String, sHeader As String, sKey As String
Dim buf As String * 256
Dim length As Long


sFileName = "C:\WINDOWS\WIN.INI"
sHeader = "intl"
sKey = "sCountry"

length = GetPrivateProfileString( _
sHeader, sKey, "<no value", _
buf, Len(buf), sFileName)
MsgBox Left$(buf, length)
End Sub

Thanks in advance,

Christmas May





  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 63
Default INI File

You are correct NichHK. I believe Pearson's site has a "white
paper"/"technical brief" on this very topic.

Christmas May



"NickHK" wrote:

Bob,
I think the OP's referring to Excel's hidden NameSpace, rather than hidden
name.
As I see it you can use that, but you need understand what you are doing and
why. If there's a suitable, more standard way, use it.

NickHK

"Bob Phillips" wrote in message
...
Nothing wrong with Hidden names. Visible is a property of the name object,
so it is supported. But you still have to have a workbook to hold that

name.

As for INI files you test for a successful action, both in opening the

file,
and retrieving the data. You would have to do that for a hidden name, a
value on a hidden (maybe non-existent) spreadsheet.

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Christmas May" wrote in message
...
I'm attempting to store a variable for reference when different

workbooks
open. I'm aware of the following options

Hidden names: I believe this to be an undocumented/unsupported feature
which may be unstable or no longer available in future releases. (Are

there
"non-hidden" names?)

Excel worksheet cell (hidden worksheet, hidden workbook, personal.xls,

etc.)

Add-in: Not really sure of advantages/disadvantages?

INI file:

I would actually prefer to used the INI file if not only because other
applications could access the information. I was under the impression

that
an INI file was simply a text file. I opened c:\windows\win.ini and it

did
appear to be a simple text file of variables and their values. However,

the
following code retrieved a variable and it's value that doesn't appear

to
be
in the INI file? Any ideas what happens if you try to retrieve a value

from
an INI file that doesn't exist. For example, if I provide a co-worker

with
the .xls file but forget to provide them with the INI file what happens

when
the code runs?

Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub readFromINI()
Dim sFileName As String, sHeader As String, sKey As String
Dim buf As String * 256
Dim length As Long


sFileName = "C:\WINDOWS\WIN.INI"
sHeader = "intl"
sKey = "sCountry"

length = GetPrivateProfileString( _
sHeader, sKey, "<no value", _
buf, Len(buf), sFileName)
MsgBox Left$(buf, length)
End Sub

Thanks in advance,

Christmas May






  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4,391
Default INI File

There's various references around, but personally I have never felt the need
to use it.

NickHK

"Christmas May" wrote in message
...
You are correct NichHK. I believe Pearson's site has a "white
paper"/"technical brief" on this very topic.

Christmas May



"NickHK" wrote:

Bob,
I think the OP's referring to Excel's hidden NameSpace, rather than

hidden
name.
As I see it you can use that, but you need understand what you are doing

and
why. If there's a suitable, more standard way, use it.

NickHK

"Bob Phillips" wrote in message
...
Nothing wrong with Hidden names. Visible is a property of the name

object,
so it is supported. But you still have to have a workbook to hold that

name.

As for INI files you test for a successful action, both in opening the

file,
and retrieving the data. You would have to do that for a hidden name,

a
value on a hidden (maybe non-existent) spreadsheet.

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Christmas May" wrote in

message
...
I'm attempting to store a variable for reference when different

workbooks
open. I'm aware of the following options

Hidden names: I believe this to be an undocumented/unsupported

feature
which may be unstable or no longer available in future releases.

(Are
there
"non-hidden" names?)

Excel worksheet cell (hidden worksheet, hidden workbook,

personal.xls,
etc.)

Add-in: Not really sure of advantages/disadvantages?

INI file:

I would actually prefer to used the INI file if not only because

other
applications could access the information. I was under the

impression
that
an INI file was simply a text file. I opened c:\windows\win.ini and

it
did
appear to be a simple text file of variables and their values.

However,
the
following code retrieved a variable and it's value that doesn't

appear
to
be
in the INI file? Any ideas what happens if you try to retrieve a

value
from
an INI file that doesn't exist. For example, if I provide a

co-worker
with
the .xls file but forget to provide them with the INI file what

happens
when
the code runs?

Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub readFromINI()
Dim sFileName As String, sHeader As String, sKey As String
Dim buf As String * 256
Dim length As Long


sFileName = "C:\WINDOWS\WIN.INI"
sHeader = "intl"
sKey = "sCountry"

length = GetPrivateProfileString( _
sHeader, sKey, "<no value", _
buf, Len(buf), sFileName)
MsgBox Left$(buf, length)
End Sub

Thanks in advance,

Christmas May









  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default INI File

This is all the code you will need in dealing with .ini files:

Option Explicit
Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias _
"GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName _
As String) As Long

Private Declare Function WritePrivateProfileString _
Lib "kernel32" Alias _
"WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpString As String, _
ByVal lpFileName As String) As Long

Sub WriteMissingKey(inipath As String, _
KEY As String, _
Variable As String, _
strValue As String)

If CheckForStringInFile(Variable, inipath) = False Then
WriteIniValue inipath, _
KEY, _
Variable, _
strValue
End If

Exit Sub
ERROROUT:

MsgBox "The file " & _
vbCrLf & vbCrLf & _
inipath & _
vbCrLf & vbCrLf & _
"was not present, so could not write the value" & _
vbCrLf & vbCrLf & _
strValue, , "WriteMissingKey"

End Sub

Function ReadINIValue(ByVal strINIPath As String, _
ByVal strHeader As String, _
ByVal strKey As String) As String

'will return <no value if the header or the key is not there
'will return <no file if the .ini file is not there
'------------------------------------------------------------
Dim buf As String * 256
Dim Length As Long

If bFileExists(strINIPath) = False Then
ReadINIValue = "<no file"
Exit Function
End If

Length = GetPrivateProfileString(strHeader, _
strKey, _
"<no value", _
buf, _
Len(buf), _
strINIPath)

ReadINIValue = Left$(buf, Length)

End Function

Sub DeleteIniKey(ByVal strINIPath As String, _
ByVal strSection As String, _
ByVal strKey As String)

On Error Resume Next
WritePrivateProfileString strSection, _
strKey, _
vbNullString, _
strINIPath
On Error GoTo 0

End Sub

Function WriteIniValue(ByVal inipath As String, _
ByVal PutKey As String, _
ByVal PutVariable As String, _
ByVal PutValue As String) As Boolean

'will return True if successful, otherwise False
'-----------------------------------------------

If bFileExists(inipath) = False Then
WriteIniValue = False
Exit Function
End If

WritePrivateProfileString PutKey, _
PutVariable, _
PutValue, _
inipath

WriteIniValue = True

End Function

Function CheckForStringInFile(strString As String, _
strFile As String) As Boolean

'result will be True if string is in the file
'and False if the string is missing
'because of vbBinaryCompare this will be case sensitive
'------------------------------------------------------

Dim hFile As Long
Dim buff As String

On Error GoTo ERROROUT

'obtain file handle, open file
'and load into a string buffer
hFile = FreeFile

Open strFile For Input As #hFile

buff = Input$(LOF(hFile), hFile)

Close #hFile

If InStr(1, buff, strString, vbBinaryCompare) = 0 Then
CheckForStringInFile = False
Else
CheckForStringInFile = True
End If

Exit Function
ERROROUT:

MsgBox "The file " & _
vbCrLf & vbCrLf & _
strFile & _
vbCrLf & vbCrLf & _
"was not present, so could't check for the string" & _
vbCrLf & vbCrLf & _
strString, , "CheckForStringInFile"
On Error GoTo 0

End Function

Public Function bFileExists(ByVal sFile As String) As Boolean

Dim lAttr As Long

On Error Resume Next
lAttr = GetAttr(sFile)
bFileExists = (Err.Number = 0) And ((lAttr And vbDirectory) = 0)
On Error GoTo 0

End Function


RBS


"Christmas May" wrote in message
...
I'm attempting to store a variable for reference when different workbooks
open. I'm aware of the following options

Hidden names: I believe this to be an undocumented/unsupported feature
which may be unstable or no longer available in future releases. (Are
there
"non-hidden" names?)

Excel worksheet cell (hidden worksheet, hidden workbook, personal.xls,
etc.)

Add-in: Not really sure of advantages/disadvantages?

INI file:

I would actually prefer to used the INI file if not only because other
applications could access the information. I was under the impression
that
an INI file was simply a text file. I opened c:\windows\win.ini and it
did
appear to be a simple text file of variables and their values. However,
the
following code retrieved a variable and it's value that doesn't appear to
be
in the INI file? Any ideas what happens if you try to retrieve a value
from
an INI file that doesn't exist. For example, if I provide a co-worker
with
the .xls file but forget to provide them with the INI file what happens
when
the code runs?

Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub readFromINI()
Dim sFileName As String, sHeader As String, sKey As String
Dim buf As String * 256
Dim length As Long


sFileName = "C:\WINDOWS\WIN.INI"
sHeader = "intl"
sKey = "sCountry"

length = GetPrivateProfileString( _
sHeader, sKey, "<no value", _
buf, Len(buf), sFileName)
MsgBox Left$(buf, length)
End Sub

Thanks in advance,

Christmas May


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
File:1 and File:2 -- Double Files when Opening One File dallin Excel Discussion (Misc queries) 1 January 25th 07 02:53 AM
I saved file A over file B. Can I get file B back? Lynn Excel Discussion (Misc queries) 2 May 12th 06 11:24 AM
opening an excel file opens a duplicate file of the same file skm Excel Discussion (Misc queries) 1 December 7th 05 05:52 PM
I SAVED A FILE OVER ANOTHER A FILE IN EXCEL. THE OLD FILE WAS AN . DUFFER8MCD Excel Discussion (Misc queries) 1 December 23rd 04 11:32 PM
i received a file that reads powerpoint document file file exten. CCAROLACEREC Excel Discussion (Misc queries) 1 December 4th 04 05:02 PM


All times are GMT +1. The time now is 10:30 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"