VBA Lisa pildiviga - Exceli näpunäited

Lang L: none (table-of-contents)

Mul oli vaja lasta Exceli makrol lisada pilt Excelisse. Lülitasin makrosalvesti sisse, panin pildi sisse. Aga kui ma seda salvestatud koodi kasutasin, ei ilmu pilt üheski teises arvutis. Selle asemel saan punase X, kus pilt peaks olema.

Kood, mida kasutati programmis Excel 2007 või varasem. Kuid midagi muudeti programmis Excel 2010. Kui käivitate koodi ActiveSheet.Pictures .Sisestage, Excel * ei * sisesta pilti. Selle asemel lisab see pildi lingi.

Muidugi, kui käivitate koodi arvutis, näib, et kõik töötas. Kuvatakse pilt.

Tundub, et makro töötas.

Kuid kui keegi avab töövihiku teises arvutis, saab ta punase X ja teate, et pilt võib olla teisaldatud või ümber nimetatud.

Kujutise asemel punane X

Noh, muidugi pole pilti minu Manageri arvutis. Ma ei palunud Exceli pilti lingi loomiseks. Palusin, et Excel sisestaks pildi. Kuid salvestatud kood lisab pildile lingi.

Lahendus on minna üle teisele koodile. Kasutades kujundeid.AddPicture, saate selle täpsustada LinkToFile:=msoFalse. Siin on kasutatav kood:

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

Vaata videot

Video ärakiri

Õppige Exceli Podcastist, episood 2214: tõesti tüütu VBA-viga, kui proovite pilti lisada.

Hästi. Niisiis, hei, see hakkas toimuma Excelis 2010. Ma sain sellest hiljuti uuesti põlenud.

Niisiis lisan sellesse töövihikusse pildi, kuid tahan selle toimingu salvestada, et saaksin seda automaatselt teha. Vaade, makrod, maki makro, HowToInsertAPicture. Täiuslik. Ja ma lihtsalt panen siia pildi: illustratsioonid, pildid, valime ühe meie raketifotodest ja Insert. Hästi, lõpetage salvestamine. Ilus. Nüüd hakkan sellest lahti saama. Ma tahan heita pilgu makrodele, nii et Alt + F8, HowToInsertAPicture, Edit ja öeldakse nii: ActiveSheet.Pictures.Insert ja seejärel tee pildile. Hästi. Jah, see kõlab hästi. Ja tegelikult peaksime seda suutma juhtida. Nii et Alt + 8, HowToInsertAPicture ja Run ning saame pildi - see on ilus. Kuni ma selle töövihiku salvestan ja lasen teil selle alla laadida või kellelegi teisele saata, siis pilti ei tehta 'ma ei ilmu üldse - mul on ainult punane X, mis ütleb: Hei, me ei leia enam pilti. Nagu mida sa mõtled, et pilti ei leia? Ma palusin teil lisada pildi, mitte pildi linki. Kuid alates Excel 2010-st sisestab see salvestatud kood tegelikult pildi lingi. Ja kui avan selle töövihiku kusagil arvutis, millel puudub juurdepääs sellele draivile ja sellele pildile: punane X. Super tüütu.

Hästi. Nii et mingil põhjusel on Excel 2010-s uus asi, mida teha, selle asemel, et ActiveSheet.Pictures. Sisestage ActiveSheet.Shapes.AddPicture. Hästi. Ja me võime ikkagi määrata failinime, kuid siis need lisaväited, mis meil on: LinkToFile = msoFalse - teisisõnu, ärge looge rumalat punast linki - ja siis SaveWithDocument: = msoTrue - mis tähendab tegelikult pange kuradi pilt sinna ja nad saavad täpsustada, kus see peaks olema - vasak, ülemine osa …

Kuidas nüüd välja selgitada kõrgus ja laius? Hästi. Noh, me tahame seda proportsionaalselt muuta, eks? Nii et ma hoian all Shift-klahvi, et saada see vähem kui ühele ekraanitäitele andmetele, võib-olla just seal. Nii et see on minu eesmärk. Ma tahan pildi sisestada ja valida selle suurusega valgusvihu. Ma tulen kohe akna jaoks VBA Alt + F11, Ctrl + G juurde ja küsin: selection.width-- see on küsimärk, tühik, valikupunkti laius ja küsimärk, valikupunkti kõrgus (? Selection.height). Hästi, ja see räägib mulle umbes 140-st ja 195-st - nii laius, 140 ja 195, nagu see on. Vabanege kohe aknast ja siis siin kustutame selle ja käivitame koodi ning see sisestas selle tegelikult. See on õige suurus, see saab olla avatud, kui selle alla laadite,või laadin selle alla, kui teil pole originaalpildile juurdepääsu.

Saan aru, asjad muutuvad, nad pidid koodi muutma. Kuid see, et nad ei värskendanud makrofoni ja makrofonid andsid meile vale koodi, see ei toimi. See on ülimalt tüütu.

Kuule, makrode kohta lisateabe saamiseks vaadake seda Tracy Syrstadi ja minu enda raamatut Excel 2016 VBA makrod. Meil on tegelikult selle versioon kõigi versioonide jaoks, mis lähevad tagasi Excel 2003-ni. Nii et ükskõik, mis teil on, tingimusel et see on Windows, on olemas ka teie versioon.

Hästi, täna kokku - see on minu probleem. Salvestasin pildi lisamiseks koodi ja see loob lingi pildile, nii et keegi teine, kellele ma töövihiku saadan, pilti ei näe. Selle asemel kasutan makrosalvesti, mis teeb ActiveSheets.Shape.Picture, kasutage seda uut ActiveSheet.Shapes.AddPicture. Või saame määrata LinkToFile, ei; salvesta dokumendiga, jah; ja sul on hea minna.

Noh, hei, aitäh vaatamast, näeme järgmine kord järgmise netisaate jaoks.

Laadige alla Exceli fail

Exceli faili allalaadimiseks: vba-insert-picture-bug.xlsm

Mitu korda salvestab Exceli makrofailisalvestaja vale koodi. Ülaltoodud paranduse abil saate pilte VBA abil edukalt sisestada.

Exceli päeva mõte

Olen küsinud oma Exceli meistri sõpradelt Exceli kohta nõu. Tänane mõte mõelda:

"Excel on tööriist inimestele, kes peavad tagajärgedega elama."

Oz du Soleil

Huvitavad Artiklid...