Последний пост в этой теме на форуме Microsoft содержит возможный подход. Для будущих читателей я скопирую содержимое здесь.
Примечание. Этот подход не работает с "встроенными объектами", а только с простыми файлами изображений (подробности см. В нижней части ответа).
Файлы изображений :-)
Сначала создайте резервную копию файла с вашим словом. Затем переименуйте файл .docx
в .zip
(потому что это всего лишь zip-файл). Извлеките zip-файл и откройте файл word/_rels/document.xml.rels
в текстовом редакторе. Вы должны найти разделы, подобные следующим:
<Relationship
Id="rId9"
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
Target="file:///C:\Hugh\Dropbox\figures\foo.png"
TargetMode="External" />
Просто удалите путь из строки Target для каждой записи: Target="foo.png"
Затем сохраните файл и снова заархивируйте папку (или скопируйте только измененный файл в исходный zip-файл, если ваш менеджер архивов поддерживает это). Переименуйте файл .zip
обратно в .docx
и попробуйте открыть его с помощью Word. Надеюсь, что это не жалуется.
Вложенные или связанные объекты :-(
Внедренные или связанные объекты OLE обрабатываются иначе, чем связанные файлы изображений. Они указываются в файле word/document.xml
с использованием другого синтаксиса. Например, встроенный файл Visio может выглядеть следующим образом:
<w:instrText xml:space="preserve"> LINK Visio.Drawing.11 "\\\\path\\to\\file.vsd" "" \a \p \f 0 \* MERGEFORMAT </w:instrText>
К сожалению, мне не удалось сократить путь до "file.vsd"
или ".\\file.vsd"
(файл находится в том же каталоге, что и документ Word). Word жалуется, что документ поврежден при попытке открыть его. Если вы скажете ему восстановить документ, он удалит весь блок w:instrText
.