i) ?System.Configuration.ConfigurationManager.AppSettings("MyTest")
'ConfigurationManager' is not a member of 'Configuration'.
ii) ?myconfig.dnaAppConfigGetSetting("MyTest")
"Forty-two"
iii) ?System.Configuration.ConfigurationManager.AppSettings("MyTest")
"Forty-two"
If I change the name of the config file from 'App.config' to something else such as <myAppname>.xll.config , then the sub returns 'nothing'.<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="nlog" type="NLog.Config, NLog"/>
</configSections>
<appSettings>
<add key="MyTest" value="Forty-two" />
</appSettings>
</configuration>
<ExcelFunction(Description:="Reads key,value pair from application configuration file")>
Public Shared Function dnaAppConfigGetSetting(ByVal key As Object) As String
Return dnaAppConfigGetSetting(key(0).ToString)
End Function
Shared Function dnaAppConfigGetSetting(key As String) As String
Try
Dim appSettings As Object = System.Configuration.ConfigurationManager.AppSettings
Dim result As Object = appSettings(key)
If IsNothing(result) Then
result = "Not found"
End If
Return result.ToString
Catch e As System.Configuration.ConfigurationErrorsException
Return e.ToString
End Try
End Function
<ExcelFunction(Description:="Writes key,value pair to application configuration file")>
Shared Function dnaAppConfigSetSetting(ByVal KeyVal() As Object) As Object
Try
Dim configFile As Object = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
Dim settings As Object = configFile.AppSettings.Settings
Dim newKeyVal() As String = KeyVal.Select(Function(item) item.ToString).ToArray() 'changes to a 1D array
Dim key As String = newKeyVal(0).ToString, val As String = newKeyVal(1).ToString
If IsNothing(settings(key)) Then
settings.Add(key, val)
Else
settings(key).Value = val
End If
configFile.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name)
Return "True"