Вопрос

У меня была эта повторяющаяся проблема со всеми моими электронными таблицами в течение нескольких месяцев. Электронная таблица будет работать нормально и импортирует XML-файлы, извлеченные с нашего веб-сайта, а затем при импорте внезапно будет зависать каждый раз. Единственное, что исправляет это - это взять все содержимое (листы, код, ссылки) и поместить их в новую рабочую книгу.

Это строка, на которой он падает.

ActiveWorkbook.XmlImport URL:=l_strXMLFileName, _
ImportMap:=Nothing, Destination:=Sheets("Imported Data").Range("$A$1")

У кого-нибудь была эта проблема? Если так, есть ли лучший способ предотвратить его падение?

Это было полезно?

Решение

Я опубликовал этот вопрос после того, как нашел ответ только потому, что это было для меня таким бедствием, которое мучило меня в течение многих месяцев. Надеюсь, этот пост не позволит кому-то еще вырвать волосы, как я делал так долго.

Исправление довольно простое. Каждый раз, когда Excel импортирует XML-файл, он сохраняет XML-карту в этой электронной таблице. Поэтому, если вы используете одну и ту же электронную таблицу и продолжаете ее сохранять, они со временем накапливаются. Лучшее решение, которое я нашел, это просто удалить эти карты xml или повторно использовать одну и ту же (много раз последняя не подходит).

Вот код для удаления всех из них (я просто запускаю его перед кодом, который я включил в свой вопрос):

Dim XmlMap as XmlMap
    For Each XmlMap In ActiveWorkbook.XmlMaps
        XmlMap.Delete
    Next

Другие советы

Есть ли вероятность, что во входном XML есть недопустимые / неэкранированные символы?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top