Even if you have a "native" Win32 app, you can still put a config file called MyApp.exe.config
right in the same directory as the app, and the .NET parts should be able to find and interpret that config file.
Your VB app won't know anything about that config file and won't do anything with it - but your .NET client library will find and use it.
I've used this technique to integrate C# code components into a native C++/Win32 app - works like a charm for me.
It requires a fully compiled, native EXE file for this method to work - not sure if your VBA project offers that, though...
If you can't live with this option, the only other option, really, is to programmatically define and load the config file. You cannot define / specify the location of the config file - but you can load a specific config file in code and use it (almost the same as the default config file).
Check out the ConfigurationManager.OpenMappedExeConfiguration method:
// you need to define a ExeConfigurationFileMap that defines what file to use
ExeConfigurationFileMap exeMap = new ExeConfigurationFileMap();
exeMap.ExeConfigFilename = @"C:\Application\Default.config";
// then, you need to load that file with the ConfigurationManager
Configuration exeConfig =
ConfigurationManager.OpenMappedExeConfiguration(exeMap, ConfigurationUserLevel.None);
// now you can access parts of that config
string someValue = exeConfig.AppSettings.Settings["SomeValue"].Value;
string connStr = exeConfig.ConnectionStrings.ConnectionStrings["Default"].ConnectionString;