При использовании ODBC имя соединения имеет большое значение.С другой стороны, я обнаружил, что все, что вам действительно нужно, это DSN, и он отзовет любую информацию о соединении в зависимости от того, как вы установили соединение.
Тем не менее, вы, похоже, имеетеэто обрабатывается в вашем if / then.
Я никогда не использовал запросы в списке, который вы перечисляете - я всегда делаю их в виде таблиц в рабочем наборе.В этом духе, вот быстрый и грязный шаблон для того, как я добавляю таблицу через VBA.По сути, это способ VBA сделать то, что указано в этом ответе:
https://stackoverflow.com/a/51444029/1278553
Попробуйте - на обеих машинах - и посмотрите, работают ли они оба с соответственно именованным DNS.
Dim lo As ListObject
Dim ws As Worksheet
Set ws = Sheets("Sheet1")
Set lo = ws.ListObjects.Add(SourceType:=0, _
Source:=Array(Array("ODBC;DSN=mydbs")), _
Destination:=Range("A1"))
lo.QueryTable.CommandText = "select foo from bar"
lo.Refresh
Также, есть ли вред при добавлении соединения ODBC с подходящим именем?