Wa'alaikumussalam wr wb

mas Nang,

melalui proses tersebut tidak dimungkinkan.
begini :
[image: imgVBAcopysht.gif]Dari 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 [email protected] [belajar-excel] <
[email protected]> 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' [email protected] [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="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 [email protected]
> <[email protected]> [belajar-excel] <[email protected]>
> 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
>>
>
> 
>

Kirim email ke