Проблема, с которой вы столкнулись, может быть связана с различными факторами, включая настройки безопасности, кэширование запросов HTTP, проблему с многопоточностью или особенностями реализации VBA на разных версиях Windows и Office.
Вот несколько причин и возможные решения:
1. **Кэширование HTTP-запросов**:
- Некоторые версии библиотек MSXML могут кешировать HTTP-запросы. Вы можете попробовать добавить заголовок, который отключает кэширование. Например:
```vba
http.setRequestHeader "Cache-Control", "no-cache"
```
2. **Состояние объекта HTTP**:
- Убедитесь, что каждый раз создается новый объект `http`. В вашем коде видно, что вы создаете новый объект в начале цикла, но если где-то происходит ошибка и объект не обновляется, это может вызвать проблемы. Убедитесь, что конструкция `Set http = CreateObject("MSXML2.XMLHTTP")` действительно выполняется для каждого запроса.
3. **Проблемы с многопоточностью**:
- В Excel могут быть проблемы с многопоточностью, особенно с асинхронными запросами. Хотя в вашем случае используется синхронный вызов `http.Open ...`, этот момент стоит проверить.
4. **Проверка правильности токена**:
- Убедитесь, что правильно передается токен из Excel. Попробуйте сначала вывести на экран или в строку отладочной информации значение токена перед отправкой запроса, чтобы убедиться в его корректности:
```vba
Debug.Print "Токен: " & token
```
5. **Используйте другой метод запроса**:
- Если проблема сохраняется, попробуйте использовать библиотеку `WinHttp`, которая может иметь другую реализацию и не включать кэширование:
```vba
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
```
6. **Обновление Office или Windows**:
- Убедитесь, что на обоих компьютерах установлены последние обновления Office и Windows, так как в старых версиях могут быть ошибки.
7. **Попробуйте на другом ПК**:
- Если возможно, протестируйте скрипт на третьем компьютере, чтобы выявить, связана ли проблема с конкретной машиной или конфигурацией.
Если указанные варианты не помогают, попробуйте добавить дополнительную отладочную информацию, чтобы лучше понять, где именно происходит сбой.