Wa'alaikumussalam wr wb
Hai Farud,
Setiap image memiliki ukuran lebar dan tinggi tertentu. Ketika dipaksakan
agar mengikuti dimensi sebuah range, bisa jadi gambarnya akan mletot-mletot
tidak proporsional lagi. Jadi, untuk memproporsionalkannya, silakan
dipikirkan sendiri ya.... Konsepnya tetap saja seperti hal di bawah sana
pada bagian penentu dimensi si shapes picture penampung si image.
Misal,
1. sebuah potonya Kid dengan ukuran 1500 x 2000
2. poto tersimpan di file bernama Kid.gif yang tersimpan di drive D dengan
fullpath berbunyi : D:\Kid.gif
3. poto akan dimuat ke range A1 di sheet bernama 'poto'
4. range A1 dah diset berukuran 80 x 60 (gambar bakalan gak proporsional
karena dari 1500 jadi 80, tapi yang 2000 harus jadi lebih pendek dari 80,
yaotu 60
5. poto akan dimasukkan dalam sebuah wadah berupa shape (sebenernya enakan
pakai activex image control, karena gak perlu mikirin ukurannya, asal
loadpicture juga bisa jadi dan proporsional)
6. si shape wadah poto akan diberi nama dengan tetap, yaitu bernama 'shpKid'
Prosesnya begini :
1. deklarasikan dulu object shape
dim shp as shape
2. cari shape bernama 'shpKid' (kalo ada) di sheet 'poto', terus buang
(delete) [gak mau kalau filenya jadi gede banget karena kebanyakan shapes
berisi gambar kan...],
pake loop for each biar gampang walau agak lambat
for each shp in sheets("poto").shapes
if lcase(shp.name)="shpkid" then
exit for
else
set shp=nothing
endif
next shp
3. sekarang baru bikin shapes baru berupa picture yang diisi gambar
tertentu (potonya kid ding)
'ini cara pasang shape picture LANGSUNG disebuah range,
lengkap dengan set dimensi si shapes (potonya mengikuti si shape)
'yang perlu diingat, methods addpicture dilakukan terhadap
sheet, tapi butuh inputan berikut :
'1. nama file image yang mau di pasang
'2. status link ke file (selalu isi dengan
msotristatemixed)
'3. status save salinan picture dalam document
(diisi msofalse)
'4. posisi sisi kiri si shape (ini yang menentukan
mau dipasang di kolom apa)
'5. posisi sisi atas si shape (ini yang menentukan
mau dipasang di baris berapa)
'6. lebarnya si shape (ya tentukan lebarnya sesuai
kebutuhan)
'7. tingginya si shape (ya tentukan tingginy sesuai
kebutuhan)
'simpan hasil addpicture ke sebuah object variable
bertipe shape, biar bisa diatur-atur kelengkapan lainnya
with sheets("poto").range("a1") 'kerja di sheet poto range
a1 [KAGAK PAKE select-select-an ato activate-activate-an, buang-buang
energi
'di sheets poto, range a1, si shape didalam range dengan
jarak 1 twip dari pinggiran range, biar cakep beneran dalam range dan garis
pinggirnya batas range
'jangan tanya kenapa +1 dan -2 atau apa itu left, top,
width, height ya... lihat helep ajah...
set shp=sheets("poto").shapes.addpicture( "d:\kid.gif" ,
msotristatemixed , msofalse , .left+1 , .top+1 , .width-2 , .height-2 )
'picture dah di-insert-ken tuh
'si shape bisa diatur kelengkapan lainnya, seperti :
with shp 'kerja dengan si shape baru
.name="shpKid" 'kasih nama,
supaya gampang nyarinya
.lockaspectratio=msotrue 'biar kalo di-resize
user, perbantingannya tetap
.placement=xlmove 'cuma move doiang
bareng cells, tapi gak bakal ikutan resize kalo si cell di resize
end with
end with
4. save
Cara lainnya untuk insert shape selain dengan Shapes.AddPicture adalah
dengan Pictures.Insert
Pictures.Insert menghasilkan object Picture. Shapes.AddPicture menghasilkan
object Shape.
Pictures.Insert bisa jadi meng-embed disertai link, sehingga akan kesulitan
saat file dipindah ke komputer lain yang tidak ada file gambar yang
dibutuhkan. Tapi bisa mengambil picture dengan sebuah URL (kalau belum
di-obsolete sama si ms ya)
Shapes.AddPicture hanya bisa local picture (file image di dalam komputer
setempat saat akan di-insert, tapi akan ikut serta dengan file saat pindah
komputer)
Cara dengan Pictures.Insert begini :
nomor 1 :
ubah datatype dalam deklarasi menjadi Picture, kalau error, ubah jadi Object
nomor 2 : tetap
nomor 3 :
with sheets("poto").range("a1")
set shp=sheets("poto").pictures.insert("d:\kid.gif")
shp.name="shpKid"
shp.placement=xlmove
shp.left= .left
shp.top=.top
shp.width=.width
shp.height=.height
'jika lockaspectratio diletakkan sebelum pengaturan width, maka bisa
dilakukan resize mengikuti proporsi si image,
'bisa berdasar lebarnya atau berdasar tingginya tergantung kondisi
perbandingan asli si image
'misal, kalo tinggi si image > lebarnya, berarti lockaspect true terus atur
berdasar tingginya setinggi range
'begitu pula kalau si lebar > tinggi, berarti loacaspect true atur berdasar
lebar
'jadi, kadang si image pas lebarnya tapi nggantung tingginya, kadang pas
tingginya tapi lebih langsing lebarnya, yang jelas tetap proporsional
mengikuti asli si image
shp.shaperange.lockaspectratio=msotrue
Jadi, silakan gunakan manapun yang sesuai kebutuhan dan terasa nyaman untuk
dipahami
(kadang Pictures.Insert juga error di beberapa versi, dan mungkin butuh
update dengan service pack yang terbaru)
Wassalamu'alaikum wr wb
Kid
end with
Wassalamu'alaikum wr wb
Kid
2016-10-23 13:20 GMT+07:00 farud oke [email protected] [belajar-excel] <
[email protected]>:
>
>
> Assalamualaikum
> mohon bantuan para master sekalian
> saya sudah googling cara ganti logo dengan button dan sudah saya coba,tapi
> yang jadi masalah gambarnya tidak sesuai dengan ukuran sell yang di
> inginkan.
> untuk lebih jelasnya saya lampirkan filenya
> atas bantuannya saya ucapkan banyak2 terimakasih
>
>
>