Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 45
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

We are migrating from XCL 2003 to XCL 2010. The macro file resides on
a shared network drive. I am having difficulty getting the macro code
to "recognize" (extracting email parameters from the INI file; to be
used for the macro to send an email) the INI file. Each user has his
customized INI file stored on his H:\ drive.

These are my five unsuccessful attempts:

1) Public Const INI_PATH_TMPL = "H:\<USER_ID\My Documents\INI File\"

2) Public Const INI_PATH_TMPL = "\\ServerName\<USER_ID\My Documents
\INI File\"

whe
'sUserID = (Environ$("Username")) '<< THIS IS THE WIN 7 CODE FOR
ANY GIVEN USER

'GetUserID = Replace(sUserID, "corp\", "")

'GetINIFilename = Replace(APP_INI_PATH, "<USER_ID", GetUserID)

3) Public Const INI_PATH_TMPL = "H:\My Documents\INI File\"

4) Public Const INI_PATH_TMPL = "H:\loginID\My Documents\INI File\"

5) Public Const APP_INI_PATH = INI_PATH_TMPL & "Email.ini"

Please help.
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 45
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

On Aug 16, 2:58*pm, JingleRock wrote:
We are migrating from XCL 2003 to XCL 2010. The macro file resides on
a shared network drive. I am having difficulty getting the macro code
to "recognize" (extracting email parameters from the INI file; to be
used for the macro to send an email) the INI file. Each user has his
customized INI file stored on his H:\ drive.

These are my five unsuccessful attempts:

1) Public Const INI_PATH_TMPL = "H:\<USER_ID\My Documents\INI File\"

2) Public Const INI_PATH_TMPL = "\\ServerName\<USER_ID\My Documents
\INI File\"

whe
* * 'sUserID = (Environ$("Username")) '<< THIS IS THE WIN 7 CODE FOR
ANY GIVEN USER

* * 'GetUserID = Replace(sUserID, "corp\", "")

* * 'GetINIFilename = Replace(APP_INI_PATH, "<USER_ID", GetUserID)

3) Public Const INI_PATH_TMPL = "H:\My Documents\INI File\"

4) Public Const INI_PATH_TMPL = "H:\loginID\My Documents\INI File\"

5) Public Const APP_INI_PATH = INI_PATH_TMPL & "Email.ini"

Please help.


Actually, #5 is NOT an unsuccessful attempt; just indicates the INI
Filename string.
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,514
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

INI files are usually managed using the PrivateProfileStrings APIs.
There's no reason I can see why code that worked in xl2003 shouldn't
work in xl2010 unless you were using some other dubious method.

--
Garry

Free usenet access at http://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 45
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

On Aug 16, 6:34*pm, GS wrote:
INI files are usually managed using the PrivateProfileStrings APIs.
There's no reason I can see why code that worked in xl2003 shouldn't
work in xl2010 unless you were using some other dubious method.

--
Garry

Free usenet access athttp://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc


Thanks Garry.

A couple of things I failed to mention: at the same time we upgraded
OFFICE, we went to WIN 7; and, for each NW user, his/her 'My
Documents' folder is on the H:\ drive, instead of on the C:\drive.

Yes, you are correct; we are using 'GetPrivateProfileStringA' code and
'GetPrivateProfileIntA' code. Are there any References to Object
Libraries that we need? << as I key, there are five References -- they
are all pretty basic. I have not converted the .xls extension on the
macro file.

This code has been working fine for two years using xl2003 VBA. Also,
when I "hard-code" the email parameters (as opposed to extracting them
from the INI file) into the VBA code, the email is sent as directed.
Also, (Environ$("Username")) is working fine (no hard-coding).

Thanks for your help,
JingleRock
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 45
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

On Aug 16, 10:16*pm, JingleRock wrote:
On Aug 16, 6:34*pm, GS wrote:

INI files are usually managed using the PrivateProfileStrings APIs.
There's no reason I can see why code that worked in xl2003 shouldn't
work in xl2010 unless you were using some other dubious method.


--
Garry


Free usenet access athttp://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc


Thanks Garry.

A couple of things I failed to mention: *at the same time we upgraded
OFFICE, we went to WIN 7; and, for each NW user, his/her 'My
Documents' folder is on the H:\ drive, instead of on the C:\drive.

Yes, you are correct; we are using 'GetPrivateProfileStringA' code and
'GetPrivateProfileIntA' code. Are there any References to Object
Libraries that we need? << as I key, there are five References -- they
are all pretty basic. I have not converted the .xls extension on the
macro file.

This code has been working fine for two years using xl2003 VBA.

Using xl2010 VBA,
when I "hard-code" the email parameters (as opposed to extracting them
from the INI file) into the VBA code, the email is sent as directed.
Also, *(Environ$("Username")) is working fine (no hard-coding).

Thanks for your help,
JingleRock


ADDITIONAL INPUT BY JingleRock:

Attempt #3 is most consistent w/ clicking on 'Start' and then
'searching programs and files'; also, it is most consistent w/ xl2003
coding ("C:\Documents and Settings\<USER_ID\My Documents\INI File\").
Attempt #2 makes the most sense, I guess, but it is not consistent w/
clicking on 'Start' and then 'searching programs and files'.

JingleRock


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,514
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

JingleRock wrote on 8/16/2011 :
On Aug 16, 10:16*pm, JingleRock wrote:
On Aug 16, 6:34*pm, GS wrote:

INI files are usually managed using the PrivateProfileStrings APIs.
There's no reason I can see why code that worked in xl2003 shouldn't
work in xl2010 unless you were using some other dubious method.
--
Garry


Free usenet access athttp://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc


Thanks Garry.

A couple of things I failed to mention: *at the same time we upgraded
OFFICE, we went to WIN 7; and, for each NW user, his/her 'My
Documents' folder is on the H:\ drive, instead of on the C:\drive.

Yes, you are correct; we are using 'GetPrivateProfileStringA' code and
'GetPrivateProfileIntA' code. Are there any References to Object
Libraries that we need? << as I key, there are five References -- they
are all pretty basic. I have not converted the .xls extension on the
macro file.

This code has been working fine for two years using xl2003 VBA. Using
xl2010 VBA, when I "hard-code" the email parameters (as opposed to
extracting them from the INI file) into the VBA code, the email is sent as
directed. Also, *(Environ$("Username")) is working fine (no hard-coding).

Thanks for your help,
JingleRock


ADDITIONAL INPUT BY JingleRock:

Attempt #3 is most consistent w/ clicking on 'Start' and then
'searching programs and files'; also, it is most consistent w/ xl2003
coding ("C:\Documents and Settings\<USER_ID\My Documents\INI File\").
Attempt #2 makes the most sense, I guess, but it is not consistent w/
clicking on 'Start' and then 'searching programs and files'.

JingleRock


Sounds to me like Win7 access permissions may be at play here. The user
must have read/write permission to the location of the INI file.
Normally, this should work fine when files are stored under ~Documents
and Settings\<userid\My Documents\ or any of its subfolders.

--
Garry

Free usenet access at http://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc


  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 45
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

Sounds to me like Win7 access permissions may be at play here. The user
must have read/write permission to the location of the INI file.
Normally, this should work fine when files are stored under ~Documents
and Settings\<userid\My Documents\ or any of its subfolders.

--
Garry


Since I created the 'INI File' folder and the INI file in it, I don't
think that is an issue.
And no 'Documents and Settings' folder, now.
  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 45
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

Progress:

I now believe that Attempt #3 in my original post is the correct way
to go. (mapping to the correct server and to the correct user is
automatically taken care of by Win 7).

However, I still cannot get my macro to recognize the INI File. What
about my question as to:

Yes, you are correct; we are using 'GetPrivateProfileStringA' code
and
'GetPrivateProfileIntA' code. Are there any References to Object
Libraries that we need? << as I key, there are five References --
they
are all pretty basic. I have not converted the .xls extension on the
macro file.

JingleRock
  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,514
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

JingleRock pretended :
Progress:

I now believe that Attempt #3 in my original post is the correct way
to go. (mapping to the correct server and to the correct user is
automatically taken care of by Win 7).

However, I still cannot get my macro to recognize the INI File. What
about my question as to:

Yes, you are correct; we are using 'GetPrivateProfileStringA' code
and
'GetPrivateProfileIntA' code. Are there any References to Object
Libraries that we need? << as I key, there are five References --
they
are all pretty basic. I have not converted the .xls extension on the
macro file.

JingleRock


You do need to make the API declarations in the module that uses them.
The ones I use are...

Private Declare Function GetPrivateProfileStringA Lib "kernel32" (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 GetPrivateProfileIntA Lib "kernel32" (ByVal
lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault
As Long, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileSectionA Lib "kernel32"
(ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal
nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileStringA Lib "kernel32"
(ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal
lpString As String, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileSectionA Lib "kernel32"
(ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName
As String) As Long


Helper declares...

Public Const glNOT_SET As Long = -9999
Public Const glBASIC_STRING_BUFFER As Long = 257
Public Const glHANDLED_ERROR As Long = 9999
Public Const gszEMPTY_STRING As String = ""


To read a key value...

Public Function szGetStringKeyValue(ByVal szFilename As String, ByVal
szSection As String, ByVal szKey As String, Optional ByVal szDefault As
String = vbNullString) As String
'
' Comments: Returns the string value of the specified INI file Key.
'
' Arguments: szFilename [in] The full path and filename of the INI
file to look in.
' szSection [in] The name of the Section in which the
Key to be queried is located.
' szKey [in] The name of the Key to return the
value for.
' szDefault [in] (Optional) The default value to return
if the specified Key is not found in the INI file.
' Default = gszEMPTY_STRING.
'
' Returns: String The value for szKey, or gszEMPTY_STRING on
error.
'
' Date Developer Action
'
--------------------------------------------------------------------------
' 10/10/98 Rob Bovey Created
'

Const sSource As String = "szGetStringKeyValue()"

Dim lReturn As Long
Dim lLength As Long
Dim szKeyBuffer As String

'Set default values
lLength = glBASIC_STRING_BUFFER
szKeyBuffer = String$(lLength, vbNullChar)

TryAgain: 'Execution returns here if the buffer allocation wasn't large
enough.

'Call the API function.
lReturn = GetPrivateProfileStringA(szSection, szKey, szDefault,
szKeyBuffer, lLength, szFilename)

'Return the value from the buffer if a value was located.
If lReturn 0 Then
If lReturn = lLength - 1 Then
'The buffer wasn't large enough to hold the return value,
'increase it and try again.
lLength = lLength * 2
szKeyBuffer = String$(lLength, vbNullChar)
GoTo TryAgain
Else
'Strip the return value out of the buffer and pass it back.
szGetStringKeyValue = Left$(szKeyBuffer, lReturn)
End If
Else
'No value was located.
szGetStringKeyValue = vbNullString
End If

End Function

Public Function lGetNumericKeyValue(ByVal szFilename As String, ByVal
szSection As String, ByVal szKey As String, Optional ByVal lDefault As
Long = glNOT_SET) As Long
'
' Comments: Returns the numeric value of the specified INI file Key.
'
' Arguments: szFilename The full path and filename of the INI file
to look in.
' szSection The name of the Section in which the Key is
located.
' szKey The name of the Key to return the value
for.
' lDefault (Optional) The default value to return if
the specified Key is not found in the INI file.
' Default = glNOT_SET.
'
' Returns: Long The value for szKey, or 0 on error.
'
' Date Developer Action
'
--------------------------------------------------------------------------
' 10/10/98 Rob Bovey Created
'

Const sSource As String = "lGetNumericKeyValue()"

'Call the API function with the specified arguments.
lGetNumericKeyValue = GetPrivateProfileIntA(szSection, szKey,
lDefault, szFilename)

End Function


To write a key value...

Public Function bAddRemoveKeyValue(ByVal szFilename As String, ByVal
szSection As String, ByVal szKey As String, Optional ByVal szValue As
String = vbNullString) As Boolean
'
' Comments: Sets and deletes Key values in INI files.
'
' Arguments: szFilename [in] The full path and filename of the
INI file to use.
' szSection [in] The name of the Section in which the
Key is located.
' szKey [in] The name of the Key to set/delete
the value for.
' szValue [in] (Optional) If passed, this will be
the value set
' for the specified Key (this key will
be added if it does not already exist).
' If not passed, the specified key
will be deleted.
'
' Returns: Boolean True on success, False on error.
'
' Date Developer Action
'
--------------------------------------------------------------------------
' 10/10/98 Rob Bovey Created
' 11/8/2005 Garry Sansom Updated Error Handling
'

Const sSource As String = "bAddRemoveKeyValue()"

Dim lReturn As Long

If gbDEBUG_MODE Then
On Error GoTo 0
Else
On Error GoTo ErrorHandler
End If

If Len(szValue) 0 Then
'Set this value for the specified key.
lReturn = WritePrivateProfileStringA(szSection, szKey, szValue,
szFilename)
Else
'Delete any current value for the specified key.
lReturn = WritePrivateProfileStringA(szSection, szKey,
vbNullString, szFilename)
End If

If lReturn = 0 Then Err.Raise Number:=glHANDLED_ERROR

ErrorExit:
bAddRemoveKeyValue = True
Exit Function

ErrorHandler:
If Len(Err.Description) 0 Then gszErrMsg = Err.Description
If Err.Number < glHANDLED_ERROR Then gszErrMsg = gszErrMsg & "
(bAddRemoveKeyValue)"
bAddRemoveKeyValue = False

' If Err.Number < glHANDLED_ERROR Then Err.Description =
Err.Description & " (" & sSource & ")"
' If bCentralErrorHandler(msModule, sSource) Then
' Stop
' Resume
' Else
' Resume ErrorExit
' End If

End Function

**NOTE 1** I use a central error handling methodology so you may want
to comment out my code for that and/or replace it with your own.

**NOTE 2** This code represents only part of the entire
mPrivateProfileStrings.bas, which was originally provided by the noted
author.

HTH

--
Garry

Free usenet access at http://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc


  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 45
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

Thanks for all the great code, Garry. It will take a while for me to
work through it.
What is the initial value of 'ILength' that you use?

JingleRock


  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,514
Default EXCEL 2010 VBA; trying to use INI File stored on local desktop machines

JingleRock explained on 8/18/2011 :
Thanks for all the great code, Garry. It will take a while for me to
work through it.
What is the initial value of 'ILength' that you use?

JingleRock


lLength is initialized with the declared constant glBASIC_STRING_BUFFER
in the szGetStringKeyValue() function. This is one of the 4 helper
declares to be pasted below the API declares at the top of the module.

--
Garry

Free usenet access at http://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc


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
double click excel file on the desktop excel opens but not file? JPT4266 Excel Discussion (Misc queries) 3 May 7th 09 04:24 PM
Connecting to a DB without using the local machines ODBC David Wessell Excel Programming 0 May 3rd 07 04:01 PM
Stoping users from saving tables to their local machines... Philippe Roy Excel Discussion (Misc queries) 1 August 17th 05 06:47 PM
Local excel file to update website Anonymous Chief Excel Programming 0 August 17th 05 02:14 AM
Desktop shortcut to a named Excel file - every time I open it adds a "1" to the file name - how to disable? [email protected] Setting up and Configuration of Excel 2 November 27th 04 09:02 PM


All times are GMT +1. The time now is 03:08 AM.

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

About Us

"It's about Microsoft Excel"