Assalamu'alaikum warahmatullah wabarakatuh
Terima kasih mas Kid,
Kesimpulannya tidak bisa diatur agar klik kanan sheet, move or copy hasilnya values. Seandainya dibuatkan macro, bisa apa tidak yaa code untuk klik kanan dibuat sendiri?

Ilustrasi:
Sebuah icon pada sebuah group dapat kita nonaktifkan dengan customUI, kemudian icon tersebut kita ganti dengan icon yang baru namun gambarnya persis sama dengan icon yang lama.
icon yang baru kita jalankan dengan macro.
sebagai pengguna awam, saya menganggap tidak ada perubahan apapun pada tab, walaupun sebenarnya ada icon dengan perintah baru.

Mas Kid, dapat atau tidak klik kanan pada sheet diubah seperti ilustrasi di atas?

Terima kasih.
Regard
Wasalamu'alaikum warahmatullah wabarakatuh

NangAgus

On 6/26/2019 23:54, 'Mr. Kid' mr.nm...@gmail.com [belajar-excel] wrote:
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





  • [belajar-excel] c... Budi Priyo monexd...@gmail.com [belajar-excel]
    • Re: [belajar... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
      • Re: [bel... Agus nanga...@gmail.com [belajar-excel]
        • Re: ... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
          • ... Agus nanga...@gmail.com [belajar-excel]
            • ... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
              • ... Agus nanga...@gmail.com [belajar-excel]
                • ... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
            • ... Budi Priyo monexd...@gmail.com [belajar-excel]
        • Re: ... hendrik karnadi hendrikkarn...@yahoo.com [belajar-excel]
          • ... Agus nanga...@gmail.com [belajar-excel]
            • ... hendrik karnadi hendrikkarn...@yahoo.com [belajar-excel]

Kirim email ke