VBA Вставити помилку зображення - Поради Excel

Мені потрібно було, щоб макрос Excel вставляв зображення в Excel. Увімкнув макромагнітофон, вставив малюнок. Але коли я використав цей записаний код, картинка не з’явиться на жодному іншому комп’ютері. Натомість я отримую червоний X там, де має бути зображення.

Код, який використовувався для роботи в Excel 2007 або раніше. Але в Excel 2010 щось змінилося. Коли ви запускаєте код до ActiveSheet.Pictures.Insert, Excel * не * вставляє зображення. Натомість він вставляє посилання на зображення.

Звичайно, коли ви запускаєте код на своєму комп’ютері, здається, що все спрацювало. З'являється малюнок.

Схоже, макрос спрацював.

Але коли хтось відкриває книгу на іншому ПК, він отримує червоний X і повідомлення про те, що малюнок, можливо, було переміщено або перейменовано.

Червоний Х замість зображення

Ну, звичайно, зображення немає на комп’ютері мого менеджера. Я не просив Excel створити посилання на малюнок. Я попросив Excel вставити малюнок. Але записаний код вставляє посилання на картинку.

Рішення полягає в переході на інший код. За допомогою Shapes.AddPicture ви можете вказати LinkToFile:=msoFalse. Ось код, який слід використовувати:

Sub HowToInsertPicture() ' This code fails in 2010 or newer ' ActiveSheet.Pictures.Insert( _ ' "C:UsersBillDesktopPhotoPrintAll RocketaWalg180422-3.jpg.webp").Select NewFN = "C:UsersBillDesktopPhotoPrintAll RocketaWalg180422-3.jpg.webp" ActiveSheet.Shapes.AddPicture(Filename:=NewFN, _ LinkToFile:=msoFalse, _ SaveWithDocument:=msoTrue, _ Left:=1, Top:=1, Width:=140, Height:=195).Select End Sub

Переглянути відео

Стенограма відео

Дізнайтеся Excel з подкасту, епізод 2214: Дійсно дратує помилка VBA, коли ви намагаєтесь вставити малюнок.

Гаразд Отже, привіт, це почало відбуватися в Excel 2010. Я нещодавно це знову опікся.

Тож я збираюся вставити малюнок у цю книгу, але я хочу записати цю дію, щоб я міг це зробити автоматично. Перегляд, макроси, рекордер, макрос, HowToInsertAPicture. Ідеально І я просто збираюся вставити сюди малюнок: Ілюстрації, Картинки, давайте виберемо одну з наших ракетних фотографій та Вставку. Добре, припиніть запис. Гарний. Тепер я збираюся позбутися цього. Я хочу поглянути на макроси, тому Alt + F8, HowToInsertAPicture, Edit, і там написано: ActiveSheet.Pictures.Insert, а потім шлях до зображення. Гаразд Так, це добре звучить. І насправді ми повинні мати змогу це запустити. Тож Alt + 8, HowToInsertAPicture та Run, і ми отримуємо картинку - це чудово. Поки я не збережу цю книгу і не дозволю вам її завантажити або надіслати комусь іншому, і тоді зображення не будея взагалі не з’являюсь - все, що я отримую, - це червоний X, який говорить: „Гей, ми більше не можемо знайти картину. Наприклад, що ви маєте на увазі, що не можете знайти малюнок? Я попросив вас вставити малюнок, а не посилання на нього. Але починаючи з Excel 2010, цей записаний код фактично вставляє посилання на зображення. І якщо я відкрию цю книгу десь на комп’ютері, який не має доступу до цього диска і до цієї картинки: червоний X. Супер надокучливо.

Гаразд Отже, з якихось причин у Excel 2010 нове, що потрібно зробити, - це замість ActiveSheet.Pictures.Insert ви робите ActiveSheet.Shapes.AddPicture. Гаразд І ми все ще можемо вказати ім'я файлу, але тоді ці додаткові аргументи, які ми маємо: LinkToFile = msoFalse - іншими словами, не створюйте дурне червоне посилання - а потім SaveWithDocument: = msoTrue - що означає, насправді покладіть туди прокляту картинку, і вони зможуть вказати, де вона повинна бути - ліва, верхня …

Тепер, як ми розберемо висоту та ширину? Гаразд Ну, ми хочемо пропорційно змінити його розмір, так? Тож я збираюся утримувати клавішу Shift, наприклад, повернути це менше ніж на один екран, заповнений даними, можливо, ось так саме там. Тож це моя мета. Я хочу вставити малюнок і мати промінь такого розміру з вибраним. Я повернусь до VBA Alt + F11, Ctrl + G для безпосереднього вікна і попрошу:? selection.width - отже, це знак питання, пробіл, ширина крапки виділення та знак питання, висота крапки виділення (? Selection.height). Гаразд, і це говорить мені про 140 і 195 - отже, ширина, 140 і 195, така. Позбудьтеся безпосереднього вікна, а потім тут ми видалимо це і запустимо код, і він насправді його вставив. Він правильного розміру, він зможе бути відкритим, коли ви завантажите його,або я завантажую це, якщо у вас немає доступу до оригінального зображення.

Я розумію, речі змінюються, їм довелося змінити код. Але той факт, що вони не оновлювали макрофон, і макрофон записував нам неправильний код, це не працює. Це надзвичайно дратує.

Ну, привіт, щоб дізнатись більше про макроси, ознайомтесь із цією книгою, Excel 2016 VBA Macros, від Трейсі Сирстад і від мене. Насправді у нас є версія цієї версії для кожної версії, яка перевищує 2003 рік. Отже, що б у вас не було, за умови, що це Windows, є версія для вас.

Добре, підведення підсумків сьогодні - це моя проблема. Я записав код, щоб вставити малюнок, і він створює посилання на зображення, тому будь-хто інший, кого я надсилаю до книги, не може бачити зображення. Натомість я використовую записник макросів, який робить ActiveSheets.Shape.Picture, використовую цей новий ActiveSheet.Shapes.AddPicture. Або ми можемо вказати LinkToFile, ні; зберегти за допомогою документа, так; і вам буде добре їхати.

Ну, привіт, дякую за перегляд, я побачусь наступного разу для ще одного трансляції від

Завантажте файл Excel

Щоб завантажити файл Excel: vba-insert-picture-bug.xlsm

Багато разів макрофон у програмі Excel записує неправильний код. За допомогою виправлення вище, ви можете успішно вставляти зображення за допомогою VBA.

Думка дня в Excel

Я попросив своїх друзів Excel Master порадити їх щодо Excel. Сьогоднішня думка поміркувати:

"Excel - це інструмент, який служить людям, котрі повинні жити з наслідками".

Оз дю Солей

Цікаві статті...