Mengubah ukuran Chart Area

5 views
Skip to first unread message

Agus

unread,
Dec 16, 2020, 8:05:44 AM12/16/20
to milis-bel...@googlegroups.com
Assalamu'alaikum warahnatullah wabarakatuh.

Sahabat belajar excel,

saya sedang belajar membuat file gambar jpg menggunakan vba excel.
Gambar berhasil dibuat, namun sayang, gambar (Chart Area) masih terlalu
besar.

sudah saya perkecil menggunakan:
     With ActiveChart.ChartArea
         .Height = 300
         .Width = 500
     End With
Gambar yang berada di bawah masih merupakan gambar kosong.

Bagaimana cara meng-crop gambar tersebut agar yang tampak pada jpg hanya
range yang diperlukan saja? (bawah gambar yang masih kosong hilang)

Terima kasih

Wasalamu'alaikum warahmatullah wabarakatuh.

NangAgus

tanya.xlsm

Mr. Kid

unread,
Dec 19, 2020, 6:41:56 PM12/19/20
to milis-bel...@googlegroups.com
Wa'alaikumussalam wr wb

hmmm... sudah lama nggak nulik vba... moga2 gak error ya..

begini..
Tentang export image menjadi image file urutan prosesnya :
1. punya shape yang berisi image yang akan di-ekspor -> jenis shape : picture
2. buat sebuah chart kosong di sebuah worksheet dengan ukuran shape image nomor 1  -> menghasilkan shape dengan jenis chart 
    (sepertinya sheet chart sudah di-lock dari rize, jadi pakainya adalah chart di sebuah worksheet)
3. copy shape picture nomor 1
4. aktifkan sheet berisi shape chart -> select shape chart -> pada object chart di dalam shape chart lakukan paste (mem-paste nomor 3 ke dalam shape chart)
5. ekspor chart dalam shape chart menjadi image file

Kuncinya ada di nomor 1,2, dan 4.
Catatan :
a. Sebelum nomor 1 bisa dikembangkan sesuai kebutuhan
b. antara nomor 2 dan nomor 3 bisa dikembangkan sesuai kebutuhan
c. setelah nomor 5 bisa dikembangkan sesuai kebutuhan

Contoh 1 : Sudah punya sebuah shape picture berisi suatu gambar, shape picture ada di sheet bernama Kid, nama shape picture adalah Picture1
'a.  Sebelum nomor 1 bisa dikembangkan sesuai kebutuhan
dim sFile as string, shtBerisiPicture as worksheet, shpPicture as shape, shtBerisiChart as worksheet, shpChart as shape
sfile=thisworkbook.path & "\kid.jpg"

'1.  punya shape yang berisi image yang akan di-ekspor -> jenis shape : picture
set shtBerisiPicture=sheets("kid")
set shpPicture=shtBerisiPicture.Shapes("Picture1")

2. buat sebuah chart kosong di sebuah worksheet dengan ukuran shape image nomor 1  -> menghasilkan shape dengan jenis chart   
set shtBerisiChart=sheets.add
set shpChart=shtBerisiChart.Shapes.AddChart(width:=shpPicture.Width,height:=shpPicture.Height)

'b. antara nomor 2 dan nomor 3 bisa dikembangkan sesuai kebutuhan
shpChart.chart.chartarea.border.linestyle=xlLineStyleNone   'misal menghilangkan border dari object chart yang ada dalam shape chart

'3. copy shape picture nomor 1
shpPicture.copy

'4. aktifkan sheet berisi shape chart -> select shape chart -> pada object chart di dalam shape chart lakukan paste (mem-paste nomor 3 ke dalam shape chart)
shtBerisiChart.activate
shpChart.select     'harus pakai select supaya terpilih (bukan sekadar diaktifkan)
shpChart.chart.paste       

'5. ekspor chart dalam shape chart menjadi image file  
shpChart.chart.export sfile,"jpg"     'karena file ingin berupa jpg file (lihat ekstensi nama file hasil ekspor)

'c. setelah nomor 5 bisa dikembangkan sesuai kebutuhan  
'buang sheet berisi chart yang menjadi lokasi sementara shape chart selama proses ekspor
shtBerisiChart.delete


Contoh 2 : Gambar adalah hasil copy suatu area range, yaitu range A1:G7, yang ada di sheet bernama Kid
'a.  Sebelum nomor 1 bisa dikembangkan sesuai kebutuhan
dim sFile as string, shtBerisiPicture as worksheet, shpPicture as shape, shtBerisiChart as worksheet, shpChart as shape
sfile=thisworkbook.path & "\kid.jpg"
set shtBerisiPicture=sheets.add     'karena belum punya shape picture, bikin sheet baru saja untuk tempat shppicture

'1.  punya shape yang berisi image yang akan di-ekspor -> jenis shape : picture  
sheets("kid").range("a1:g7").copypicture xlScreen,xlPicture      'mulai bikin image dari range yang ditentukan
shtberisipicture.paste      'paste image range yang di-copy ke clipboard tadi menjadi sebuah shape picture di sheet berisi picture
set shpPicture=shtberisipicture.shapes(1)      'karena di sheet baru wadah picture ini hanya ada 1 shape hasil paste tadi

'nomor 2,3,4,5 bisa seperti contoh 1, termasuk poin b bila perlu

'c. setelah nomor 5 bisa dikembangkan sesuai kebutuhan  
shtBerisiChart.delete     'buang sheet berisi chart yang menjadi lokasi sementara shape chart selama proses ekspor
shtBerisiPicture.delete  'buang sheet berisi picture yang menjadi lokasi sementara shape picture selama proses ekspor


Kalau sudah bisa paham prinsip-prinsipnya, semua script diatas bisa dibuat menjadi lebih sederhana.
Jadi, pada kasus ini, solusinya ada dilangkah proses nomor 2. Syaratnya, ada di nomor 1 pada contoh 2.

Wassalamu'alaikum wr wb
Kid



--
You received this message because you are subscribed to the Google Groups "milis Belajar-Excel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to milis-belajar-e...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/milis-belajar-excel/9389dfe5-ee6b-a0b9-6b11-0d6423445d76%40gmail.com.

Agus

unread,
Dec 21, 2020, 8:57:24 AM12/21/20
to milis-bel...@googlegroups.com
Assalamu'alaikum warahmatullah...
Terima kasih, Mas Kid atas penjelasannya.
Jadinya kebutuhan berkembang,
Bagaimana cara mengkopi range dan multiple shape (yang sudah digroup saja sehingga namanya hanya group 3) menjadi satu gambar.
Saya masih bingung untuk menggabungnya, langkah apa yang harus saya lakukan?

terima kasih
wasalamu'alaikum warahmatullah ...
Kenang Agus.

Mr. Kid

unread,
Dec 22, 2020, 9:02:26 PM12/22/20
to Agus, milis Belajar-Excel
Wa'alaikumussalam wr wb

Misal shape sudah diketahui namanya bernama Satu dan Dua
Untuk group :
sheets("nama sheet").shapes.range( array( "Satu" , "Dua" ) ).group

Misal semua shapes dalam sebuah sheet :
sheets("nama sheet").shapes.selectall
selection.shaperange.group

Misal shapes yang namanya diawali kata kid
dim shp as shape
for each shp in sheets("nama sheet").shapes
      if shp.name like "kid*" then shp.select replace:=false 
next shp

Agus

unread,
Dec 23, 2020, 8:25:54 AM12/23/20
to Mr. Kid, milis Belajar-Excel
Assalamu'alaikum warahmatullah.

Terima kasih Mas Kid, atas penjelasannya.
namun bukan itu yang saya tanyakan.

Bagaimana caranya agar saya dapat membuat gambar(jpg) dari sebuah Range, yang di dalam range tersebut terdapat banyak gambar.
Jadi data dan shape dapat disimpan dalam satu gambar(jpg)

Terima kasih
Wasalamualaikum warahmatullah.

NangAgus.

Mr. Kid

unread,
Dec 23, 2020, 9:38:42 AM12/23/20
to Agus, milis Belajar-Excel
oh maksudnya paste range yang di-copy jadi picture ?
      sheets("nama sheet").range("a1:g7").copy
      sheets("nama sheet").picture.paste
Kalau mau disimpan dalam variabel, object shape hasil paste pakai tipe object karena menggunakan object selection
     dim shpPic as object
      sheets("nama sheet").range("a1:g7").copy
       sheets("nama sheet").picture.paste.select
     set shppic=selection

setelah itu pakai contoh 1 yang ada di imil lalu



Agus

unread,
Dec 23, 2020, 10:34:28 AM12/23/20
to Mr. Kid, milis Belajar-Excel
Assalamu'alaikum Warahmatullah,
Mohon maaf mas Kid, saya gagal paham email terakhir.
pada email yang pertama kemarin saya sudah paham dua duanya (dari range dan dari shape).  sekarang yang saya inginkan adalah menggabung keduanya jadi satu.

Setelah saya coba ternyata tidak perlu menggabungkan kedua cekrip, cukup menggunakan copy range.
Terima kasih mas Kid,
(Jadinya ketawa sendiri mengingat kebodohan ini ;D )
Wasalamu'alaikum warahmatullah.
NangAgus.

Mr. Kid

unread,
Dec 23, 2020, 2:37:35 PM12/23/20
to Agus, milis Belajar-Excel
Wa'alaikumussalam wr wb

Hahaha...
Saya juga bingung mau menjawabnya... Tapi ya sekalian saja dipakai untuk bahas hal lain. Asal dicontoh masih ada baris range.copy, nantikan ngeh juga


Sent from my smart enough phone
Reply all
Reply to author
Forward
0 new messages