Wa'alaikumussalam wr wb
mas Nang,
melalui proses tersebut tidak dimungkinkan..
begini :
imgVBAcopysht.gifDari gambar di atas :
1. Proses copy sheet di workbook yang sama dengan context menu milik
tab sheet
yaitu proses klik kanan tab sheet -> move or copy -> ke workbook
yang sama sebelum sheet tertentu -> centang create a copy -> OK
> hasilnya seperti gambar pojok kiri atas <myData.xlsx:1 [baca:
file myData.xlsx window 1 (yaitu di sheet DATA)]> ke gambar pojok kiri
bawah (myData.xlsx:2)
> sheet akan di-copy secara utuh (formula, format [termasuk
conditional formatting], dsb)
> memanfaatkan VBA, bisa dengan kode berbunyi seperti ini :
(sesuaikan object dengan keadaan setempat)
Sheet1.Copy after:=Sheets(Sheets.Count)
> jadi, ketika ingin hasilnya values tapi tetap menjaga semua
format, maka hasil copy sheet tersebut yang di-values dengan kode :
Sheets(Sheets.Count).usedrange.copy
Sheets(Sheets.Count).usedrange.pastespecial xlpastevalues
2. Proses copy sheet ke workbook baru dengan context menu milik tab sheet
yaitu proses klik kanan tab sheet -> move or copy -> pilih (new
book) -> centang create a copy -> OK
> hasilnya seperti gambar pojok kiri atas <myData.xlsx:1 [baca:
file myData.xlsx window 1 (yaitu di sheet DATA)]> ke gambar atas kedua
dari kiri (book2)
> sheet akan di-copy secara utuh (formula, format [termasuk
conditional formatting], dsb) ke workbook baru
> memanfaatkan VBA, perlu 2 proses, yaitu :
1. membuat workbook baru sebagai target
2. copy sheet dari file sumber ke workbook baru
> hal ini dimungkinkan karena workbook baru dibuat di instance
Excel yang sama (lihat gambar task manager), yaitu :
pada instance Microsoft Excel (3) berisi workbook bernama book2
(hasil buat workbook baru sebagai target lokasi paste) dan workbook
myData.xlsx (file sumber)
> terkadang, perlu juga untuk membuang sheets yang dibuat Excel
saat membentuk workbook baru.
> secara umum, baris kodenya begini :
Dim wbkb As Workbook, shta As Worksheet
Set shta = Sheet1
Set wbkb = Workbooks.Add
shta.Copy after:=wbkb.Sheets( wbkb.Sheets.count)
> jika butuh mem-values formula, maka lakukan copy paste values
terhadap object wbkb.Sheets( wbkb.Sheets.count)
3. Proses copy sheet ke workbook baru langsung hanya values-nya (tanpa
formula, tanpa conditional format, dsb)
> dilakukan dengan cara melakukan copy paste ke workbook baru yang
ada di-instance Excel yang berbeda
> hasilnya seperti gambar pojok kiri atas <myData.xlsx:1 [baca:
file myData.xlsx window 1 (yaitu di sheet DATA)]> ke gambar kanan
bawah (book1)
> pada task manager, workbook myData.xlsx berada di instance
Microsoft Excel (3) [yang bawah], sedangkan workbook book1 berada di
instance Microsoft Excel [yang atas]
> memanfaatkan VBA, perlu 4 proses, yaitu :
1. membentuk Excel Application baru (instance Excel yang baru)
2. membentuk workbook baru dalam instance baru tersebut
3. meng-copy area range data di file sumber (instance Excel sumber)
4. mem-paste ke sheet target di workbook baru yang ada di
instance Excel yang baru
> secara umum, bunyi baris kode-nya begini :
Dim shta As Worksheet, xlapp2 As Excel.Application, wbkb As
Workbook
Set shta = Sheet1
Set xlapp2 = New Excel.Application
xlapp2.Visible = True
Set wbkb = xlapp2.Workbooks.Add
shta.UsedRange.Copy
wbkb.Sheets(1).Paste
Set xlapp2 = Nothing
Dari uraian diatas, maka perlu penanganan tersendiri untuk mencegah
munculnya menu move or copy sheet di dalam context menu tab sheet.
Hal ini bisa dilakukan dengan cara mem-protect struktur workbook
(cukup strukturnya saja).
Proses proteksi pertama kali bisa dilakukan secara manual melalui menu
Review -> grup menu Protect -> Protect Workbook -> isi password ->
centang hanya Structure -> OK -> save workbook
Kemudian dalam proses copy sheet oleh VBA, diawali dengan baris :
thisworkbook.unprotect "passwordnya"
lalu sebelum proses selesai, dilakukan protek workbook kembali :
thisworkbook.protect "passwordnya", structure:=true
Kira-kira demikianlah...
Wassalamu'alaikum wr wb
Kid
On Wed, Jun 26, 2019 at 7:34 PM Agus nanga...@gmail.com
<mailto:nanga...@gmail.com> [belajar-excel]
<belajar-excel@yahoogroups.com <mailto:belajar-excel@yahoogroups.com>>
wrote:
Assalamu'alaikum warahmatullah wabarakatuh,
Mas Kid mau tanya:
Kalau seandainya saya klik kanan di sheet, terus Move or copy ..
pilih to_book :(newbook).
bisa apa tidak diatur lewat vba hasil copyannya hanya values.
Maksudnya mencegah orang lain untuk copy seluruh sheet, namun
hanya copy values-nya saja.
terima kasih
Wasalamualaikum warahmatullah.
Kenang Agus
On 6/26/2019 10:34, 'Mr. Kid' mr.nm...@gmail.com
<mailto:mr.nm...@gmail.com> [belajar-excel] wrote:
Hai Budi Priyo,
1. apakah ada protec nya menggunakan macro juga. dan apakah
protec tsb tidak berpengaruh dengan macro yg ada
*** yang ini terkait proteksi sheet dan proteksi cells
> pastikan sheet tidak dalam keadaan ter-protect
> blok seluruh cells (atau hanya cells tertentu yang akan
disembunyikan formulanya) -> klik kanan cells terpilih -> format
cells -> tab Protection -> centang Locked dan Hidden -> OK
> lalu protect sheet secara manual
> atau dengan baris kode berbunyi (jalankan di intermediate
window [tekan ctrl G -> tulis baris kodenya -> tekan enter])
sheets("nama sheetnya").protect "passwordnya"
> jika ingin agar VBA bisa bekerja pada sheet terproteksi tanpa
perlu membuka proteksi sheet, gunakan baris kode berikut ini :
sheets("nama sheetnya")..protect "passwordnya",
userinterfaceonly:=true
> save workbook
2. apa bila sheet tersebut di copy (copysheet) formula yg ada
dalam sheet tersebut tidak ikut alias values secara otomatis,
*** yang ini terkait copy values sheet
> buat sebuah general module -> buat sebuah blok prosedur jenis
sub, misal bernama CopasValueSheet
> jika sheet diproteksi secara manual atau dengan VBA tanpa opsi
userinterfaceonly:=true, maka perlu di-unprotect dulu dengan
baris kode :
sheets("nama sheetnya").unprotect "passwordnya"
> proses akan terdiri dari 2 bagian utama, yaitu copy sheet
menjadi sheet baru, kemudian copy values nilai yang ada di hasil
copy sheet tadi
'jika copy di workbook yang sama
sheets("nama sheetnya").copy before:=sheets(1) 'copy sheet
'copy paste values hasil copy sheet
sheets(1).usedrange.copy
sheets(1).usedrange.pastespecial xlpastevalues
'jika copy ke workbook baru :
dim wbka as workbook, wbkb as workbook
set wbka=thisworkbook
set wbkb=workbooks.add
with wbkb
wbka.sheets("nama sheetnya").copy before:= ..sheets(1)
'copy sheet
.sheets(1).usedrange.copy
.sheets(1).usedrange.pastespecial xlpastevalues
end with
wbka.activate
3. dijalankan dengan macro di sheet
*** ini tentang pemicu (event) yang digunakan agar VBA copy sheet
diproses
> sebaiknya diletakkan di modul Thisworkbook dengan event yang
sesuai, misal event ketika cells a1 di double click (sila
disesuaikan dengan kebutuhan setempat)
> pada modul Thisworkbook -> di object Workbook -> buat event
bernama Workbook_SheetBeforeDoubleClick -> isi dengan baris kode
berikut (sesuaikan dengan keadaan setempat)
if sht.name <http://sht.name>="nama sheetnya" then
'jalankan prosedur copy sheet, misal prosedur
CopasValueSheet hasil nomor 2 di atas
CopasValueSheet
cancel=true
endif
> dengan begini, maka VBA code yang ada di sheet yang di-copy
tidak akan terbawa ke hasil copy sheet
Regards,
Kid
On Thu, Jun 20, 2019 at 11:28 AM Budi Priyo monexd...@gmail..com
<mailto:monexd...@gmail.com> [belajar-excel]
<belajar-excel@yahoogroups.com
<mailto:belajar-excel@yahoogroups.com>> wrote:
Salam kenal, saya baru bergabung di sini dan ingin menanyakan,
Saya punya dokument yg dijalankan dengan macro di sheet dan
apa bila sheet tersebut di copy (copysheet) formula yg ada
dalam sheet tersebut tidak ikut alias values secara otomatis,
apakah ada protec nya menggunakan macro juga. dan apakah
protec tsb tidak berpengaruh dengan macro yg ada, karena
dokument tersebut terdapat formula rahasianya.
Mohon rekan milis mungkin ada yg bisa bantu.
Sayaucapkan terima kasih