Minggu, 17 Maret 2019

[belajar-excel] Digest Number 4735

15 Messages

Digest #4735
2a
2b
Re: Perbedaan penulisan error handling by "Mr. Kid" nmkid.family@ymail.com
3a
Re: Cara penulisan error handling by "Tio Adi Bayu Adjie"
3b
Re: Cara penulisan error handling by "Mr. Kid" nmkid.family@ymail.com
3c
Re: Cara penulisan error handling by "Tio Adi Bayu Adjie"
3d
Re: Cara penulisan error handling by "Mr. Kid" nmkid.family@ymail.com
4b
Re: Parameter yang dilihat untuk penggunaan memory by "Mr. Kid" nmkid.family@ymail.com

Messages

Sat Mar 16, 2019 10:59 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

No 1
Variabel wbkF sesuai deklarasinya sebagai workbook, berisi workbook utuh (ada sheet, range, autofilter, nama workbook, nama file, lokasi file, dab). Bukan hanya berisi path dan nama file.

Object workbooks berisi koleksi (kumpulan) workbook. Untuk memilih salah satu barang dalam kumpulan perlu penanda (identifier), yang berbagai macam bentuknya tergantung yang disediakan.
Object workbooks (kumpulan workbook) menyediakan identier berupa index (nomor urut masuk kumpulan), teks tertentu (dalam hal ini teks nama workbook).
Jadi, kalau baru buka 1 workbook bernama kid.xlsx, maka
Hasil
Workbooks("kid.xlsx")
akan sama dengan
Workbooks(1)
yang hasilnya berupa object workbook, yang isinya ya utuh satu workbook (ada sheet, range, autofilter, dsb, termasuk path, nama file, nama workbook, dan lainnya).

Jadi, salah jika dikatakan mengakses workbook dengan atau tanpa path. Mengakses workbook ya mengakses object workbook, yaitu dengan pointer (lokasi memory di ram) dari si object workbook.

No. 2
Nanti lagi

Sent from my smart enough phone

> On Mar 17, 2019, at 01:27, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
>
> Terima kasih banyak Mr. Kid atas jawabannya semoga amal baiknya diterima Allah SWT. Amiin.
>
> Pertanyaan lanjutan :
>
> 1. Mr. Kid menulis wbkF.Close False dimana wbkF adalah workbook yang isinya adalah nama file beserta path nya. Tapi yang saya baca di referensi lain adalah kalau menutup workbook, maka cukup dengan nama filenya saja tanpa path seperti workbooks("namafilenya.xlsx").close true. Mohon bimbingannya lagi, kapan saya harus menutup workbook dengan path dan kapan tanpa path ?
>
>
>
> 2. Berarti kalau mau tahu apakah file itu terbuka di computer saya atau di computer orang lain, saya harus buka file itu dulu ya ? Adakah code VBA yang bisa mengetahui itu tanpa harus buka file dulu ? Maaf karena file yang dibuka ukurannya besar, jadi kalau buka file dulu, maka akan lama ..
>
>
>
>
>
> 3. Kalau ada kasus dengan code VBA seperti ini.
>
> Dim Alamatfile as string
>
> Dim Mywb as workbook,Wbbaru as workbook
>
> Dim wbbaruSh as worksheet,MywbSh as worksheet
>
>
>
> On error goto Keluar
>
> Alamatfile="D:\\myfolder\mysubfolder\namafilesaya.xlsx"
>
> '''Buka file dari server
>
> BukaFile Alamatfile,"PasswordSaya"
>
> Set Mywb=ThisWorkbook
>
> Set Wbbaru=workbooks("namafilesaya.xlsx")
>
> Wbbaru.activate
>
> Set WbbaruSh=Wbbaru.worksheets("mySheet")
>
> With WbbaruSh
>
> .Cells(1,1).value="XXX"
>
> '''Code lain…..….
>
> End with
>
> Mywb.activate
>
> Set MywbSh=Mywb.worksheets("mySheetJuga")
>
> With MywbSh
>
> .Cells(1,1).value="YYY"
>
> '''Code lain…
>
> End with
>
> Wbbaru.close true -------------à Saya selalu error disini. Adakah yang salah dari coding saya ?padahal saya sudah modif dengan
>
>
>
> On error resume next 'modif saya
>
> Wbbaru.Close true 'modif saya
>
> Err.clear 'modif saya
>
> On error goto 0 'modif saya
>
>
>
> Set mywb=nothing
>
> Set wbbaru=nothing
>
> Set wbbaruSh=nothing
>
> Set MywbSh=nothing
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
>
>
> End sub
>
>
>
> 4. Bagaimana urutan penulisan yang benar seperti contoh dibawah ini : Label dulu atau clear memory (set rg=nothing misalnya ) ?
>
> Private sub contohsaja()
>
> On error goto Keluar
>
> Set myrange=range(Cells(1,1),Cells(1,100))
>
>
>
>
>
> Set myrange=nothing
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> End sub
>
>
>
> Atau….
>
>
>
> Private sub contohsaja()
>
> On error goto Keluar
>
> Set myrange=range(Cells(1,1),Cells(1,100))
>
>
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
>
>
> Set myrange=nothing
>
> End sub
>
>
>
> Mana urutan penulisan yang benar. Label dulu atau clear memory (dengan set myrange=nothing) ?
>
>
>
>
>
> 5. Kalau mengurangi memory untuk range, dengan menulis diakhirnya set myRange=nothing. Bagaimana dengan worksheet apakah harus set mySheet=nothing ?
>
> Bagaimana juga dengan ukuran variable seperti Dim L as long dan ditulis di akhirnya L=empty atau variable byte, string apakah juga ditulis myString=vbnullstring ?
>
>
>
> 6. Bagaimana clear memory untuk Public Events ? Tolong diberi contoh clear memory untuk Public Events..
>
>
>
> Terima kasih atas bimbingannya, semoga amal baiknya diterima Allah SWT.. Amiin
>
>
>
> Tio
>
>
>
>
>
> From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
> Sent: 15 Maret 2019 9:03
> To: BeExcel
> Subject: Re: [belajar-excel] Cek file open di server apakah dibuka dikomputer sendiri atau di komputer orang lain
>
>
>
>
>
> Public Sub BukaFile(Optional sFile As String, Optional sPwdOpen As String = vbNullString)
>
> Dim sMsgTxt As String, sMsgTitle As String, lMsg As Long, lTry As Long, wbkF As Workbook
>
>
>
> sMsgTxt = "Pembukaan ke-"
>
> sMsgTitle = "Buka File"
>
> lMsg = 20
>
> If Len(sFile) * Len(Dir(sFile, vbNormal)) = 0 Then
>
> MsgBox "File tidak ada atau tidak dapat di akses.", vbExclamation, sMsgTitle
>
> Exit Sub
>
> End If
>
> Application.Calculation = xlCalculationManual
>
> Application.ScreenUpdating = False
>
> Application.DisplayAlerts = False
>
> On Error GoTo Keluar
>
>
>
> Ulangi:
>
> lTry = lTry + 1
>
> Set wbkF = Workbooks.Open(sFile, 0, True, Password:=sPwdOpen, IgnoreReadOnlyRecommended:=True, Notify:=False)
>
> wbkF.ChangeFileAccess xlReadWrite, Notify:=False
>
> If wbkF.ReadOnly Then
>
> wbkF.Close False
>
> If lTry Mod lMsg > 0 Then GoTo Ulangi
>
> If MsgBox(sMsgTxt & lTry, vbExclamation + vbRetryCancel + vbDefaultButton2, sMsgTitle & " : Read Only") = vbRetry Then GoTo Ulangi
>
> End If
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
> End Sub
>
>
>
> Cara pakai :
>
> BukaFile "path\file.extension","Pwd"
>
>
>
> On Thu, Mar 14, 2019 at 5:46 AM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
>
>
>
> Dear Be-Exceller,
>
> Saya mau cek apakah file di server dibuka oleh orang lain atau dibuka dikomputer sendiri. File itu ada di server. Saya sudah bikin code nya tapi kok gak bisa ya ? Mohon bimbingannya.
>
>
>
> Ini code saya :
>
>
>
> Public function sFileAdaAccess(fname) as Boolean
>
> sFileAdaAccess = True
>
> If IsFileOpen(fname) = True Then
>
> Set wbbook = Workbooks(fname)
>
>
>
> If Not wbbook.ReadOnly = True Then
>
> MsgBox "Silahkan ditutup dulu File Master", vbExclamation, "File master terbuka"
>
> sFileAdaAccess = false
>
> Exit Function
>
> Else
>
> sFileAdaAccess = True
>
> End If
>
> Set wbbook = Nothing
>
> 'End If
>
>
>
> Public Function IsFileOpen(filename As String) As Boolean
>
> Dim filenum As Integer
>
> Dim errnum As Integer
>
>
>
> On Error Resume Next ' Turn error checking off..
>
>
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' If we were passed in an empty string,
>
> ' there is no file to test so return FALSE.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> If filename = vbNullString Then
>
> IsFileOpen = False
>
> Exit Function
>
> End If
>
>
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' If the file doesn't exist,
>
> ' it isn't open so get out now.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> If Dir(filename) = vbNullString Then
>
> IsFileOpen = False
>
> Exit Function
>
> End If
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> ' Get a free file number.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> filenum = FreeFile()
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' Attempt to open the file
>
> ' and lock it.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> Err.Clear
>
> Open filename For Input Lock Read As #filenum
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> ' Save the error number that occurred.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> errnum = Err.Number
>
> On Error GoTo 0 ' Turn error checking back on.
>
> Close #filenum ' Close the file.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> ' Check to see which error occurred.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> Select Case errnum
>
> Case 0
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' No error occurred.
>
> ' File is NOT already open by another user.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> IsFileOpen = False
>
>
>
> Case 70
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' Error number for "Permission Denied."
>
> ' File is already opened by another user.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> IsFileOpen = True
>
>
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' Another error occurred. Assume the file
>
> ' cannot be accessed.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> Case Else
>
> IsFileOpen = True
>
>
>
> End Select
>
>
>
> End Function
>
>
>
> Kenapa tidak berhasil ? Mohon bimbingannya.
>
> Terima kasih.
>
> Tio
>
>
>

Sun Mar 17, 2019 3:30 am (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

No. 2
Yup, pasti.
Hanya cara bukanya bermacam-macam tergantung media yang digunakan.
Kalau pakai workbooks.open berarti pakai cara excel melalui menu file open.
Kalau pakai select * from namaLinkedServer...[nama_sheet$] berarti pakai linked server memanfaatkan data provider tertentu via sql server
Kalau pakai objectConnection.open connectionstring berarti pakai ado object
Kalau pakai Open filefullname for blbla (open statement) berarti pakai io file
dan masih banyak lagi cara lain.
Semua itu diawali dengan membuka si file. Ada yang tampak tampil dimata user, ada yang tidak. Semua juga bisa dipakai untuk cek apakah file tersebut sedang digunakan secara ekslusif di tempat lain atau tidak. Kalau dari dalam Excel (misal melalui VBA), ingin tahu file sedang terbuka atau tidak, lalu kalau tidak terbuka maka dilakukan proses buka file, yang paling aman adalah pakai Workbooks.Open, karena lebih mudah diatur dan mudah diprediksi hasilnya, apalagi untuk yang awam dengan programming.

Tentang : "file yang dibuka ukurannya besar, jadi kalau buka file dulu, maka akan lama"
> tergantung apa tujuan pemeriksaan terbuka dan tidaknya file.
> kalau sekadar tahu saja dan tidak perlu melakukan sesuatu di dalam file tersebut, bisa pakai cara lain, seperti open statement misalnya.
> tapi kalau tujuan akhirnya, yaitu ketika tahu bahwa file tidak dibuka di tempat lain, lalu ingin membuka dan melakukan sesuatu terhadapnya, ya tetap pakai workbooks.open yang aman. Karena pada kondisi ingin membuka dan melakukan sesuatu terhadap file itu, tidak akan ada bedanya antara cepat atau lambatnya membuka file, karena hasil akhirnya ingin membuka file dan melakukan sesuatu.

No. 3
Sebelum diubah dengan memberi error handler :
> bisa jadi ada pengubah error handler di bunyi baris kode di bagian Code lain milik Anda

Setelah diubah :
> mestinya sudah tidak muncul error

No. 4
Yang mana saja sesuai kebutuhan proses yang Anda buat.

No. 5
Begitulah kira-kira.
Prinsipnya, variabel dengan scope local akan dihancurkan oleh VB/VBA begitu proses sudah sampai diluar scope.
Sedang untuk variabel dengan scope module atau yang lebih luas,
tergantung alur proses utuhnya membutuhkan hal tersebut atau tidak.

No. 6
Saya tidak tahu apa itu public events.
Biasanya events itu diusahakan dengan scope modular.

Regards,
Kid
Sent from my smart enough phone

> On Mar 17, 2019, at 01:27, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
>
> Terima kasih banyak Mr. Kid atas jawabannya semoga amal baiknya diterima Allah SWT. Amiin.
>
> Pertanyaan lanjutan :
>
> 1. Mr. Kid menulis wbkF.Close False dimana wbkF adalah workbook yang isinya adalah nama file beserta path nya. Tapi yang saya baca di referensi lain adalah kalau menutup workbook, maka cukup dengan nama filenya saja tanpa path seperti workbooks("namafilenya.xlsx").close true. Mohon bimbingannya lagi, kapan saya harus menutup workbook dengan path dan kapan tanpa path ?
>
>
>
> 2. Berarti kalau mau tahu apakah file itu terbuka di computer saya atau di computer orang lain, saya harus buka file itu dulu ya ? Adakah code VBA yang bisa mengetahui itu tanpa harus buka file dulu ? Maaf karena file yang dibuka ukurannya besar, jadi kalau buka file dulu, maka akan lama ..
>
>
>
>
>
> 3. Kalau ada kasus dengan code VBA seperti ini.
>
> Dim Alamatfile as string
>
> Dim Mywb as workbook,Wbbaru as workbook
>
> Dim wbbaruSh as worksheet,MywbSh as worksheet
>
>
>
> On error goto Keluar
>
> Alamatfile="D:\\myfolder\mysubfolder\namafilesaya.xlsx"
>
> '''Buka file dari server
>
> BukaFile Alamatfile,"PasswordSaya"
>
> Set Mywb=ThisWorkbook
>
> Set Wbbaru=workbooks("namafilesaya.xlsx")
>
> Wbbaru.activate
>
> Set WbbaruSh=Wbbaru.worksheets("mySheet")
>
> With WbbaruSh
>
> .Cells(1,1).value="XXX"
>
> '''Code lain…..….
>
> End with
>
> Mywb.activate
>
> Set MywbSh=Mywb.worksheets("mySheetJuga")
>
> With MywbSh
>
> .Cells(1,1).value="YYY"
>
> '''Code lain…
>
> End with
>
> Wbbaru.close true -------------à Saya selalu error disini. Adakah yang salah dari coding saya ?padahal saya sudah modif dengan
>
>
>
> On error resume next 'modif saya
>
> Wbbaru.Close true 'modif saya
>
> Err.clear 'modif saya
>
> On error goto 0 'modif saya
>
>
>
> Set mywb=nothing
>
> Set wbbaru=nothing
>
> Set wbbaruSh=nothing
>
> Set MywbSh=nothing
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
>
>
> End sub
>
>
>
> 4. Bagaimana urutan penulisan yang benar seperti contoh dibawah ini : Label dulu atau clear memory (set rg=nothing misalnya ) ?
>
> Private sub contohsaja()
>
> On error goto Keluar
>
> Set myrange=range(Cells(1,1),Cells(1,100))
>
>
>
>
>
> Set myrange=nothing
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> End sub
>
>
>
> Atau….
>
>
>
> Private sub contohsaja()
>
> On error goto Keluar
>
> Set myrange=range(Cells(1,1),Cells(1,100))
>
>
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
>
>
> Set myrange=nothing
>
> End sub
>
>
>
> Mana urutan penulisan yang benar. Label dulu atau clear memory (dengan set myrange=nothing) ?
>
>
>
>
>
> 5. Kalau mengurangi memory untuk range, dengan menulis diakhirnya set myRange=nothing. Bagaimana dengan worksheet apakah harus set mySheet=nothing ?
>
> Bagaimana juga dengan ukuran variable seperti Dim L as long dan ditulis di akhirnya L=empty atau variable byte, string apakah juga ditulis myString=vbnullstring ?
>
>
>
> 6. Bagaimana clear memory untuk Public Events ? Tolong diberi contoh clear memory untuk Public Events..
>
>
>
> Terima kasih atas bimbingannya, semoga amal baiknya diterima Allah SWT.. Amiin
>
>
>
> Tio
>
>
>
>
>
> From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
> Sent: 15 Maret 2019 9:03
> To: BeExcel
> Subject: Re: [belajar-excel] Cek file open di server apakah dibuka dikomputer sendiri atau di komputer orang lain
>
>
>
>
>
> Public Sub BukaFile(Optional sFile As String, Optional sPwdOpen As String = vbNullString)
>
> Dim sMsgTxt As String, sMsgTitle As String, lMsg As Long, lTry As Long, wbkF As Workbook
>
>
>
> sMsgTxt = "Pembukaan ke-"
>
> sMsgTitle = "Buka File"
>
> lMsg = 20
>
> If Len(sFile) * Len(Dir(sFile, vbNormal)) = 0 Then
>
> MsgBox "File tidak ada atau tidak dapat di akses.", vbExclamation, sMsgTitle
>
> Exit Sub
>
> End If
>
> Application.Calculation = xlCalculationManual
>
> Application.ScreenUpdating = False
>
> Application.DisplayAlerts = False
>
> On Error GoTo Keluar
>
>
>
> Ulangi:
>
> lTry = lTry + 1
>
> Set wbkF = Workbooks.Open(sFile, 0, True, Password:=sPwdOpen, IgnoreReadOnlyRecommended:=True, Notify:=False)
>
> wbkF.ChangeFileAccess xlReadWrite, Notify:=False
>
> If wbkF.ReadOnly Then
>
> wbkF.Close False
>
> If lTry Mod lMsg > 0 Then GoTo Ulangi
>
> If MsgBox(sMsgTxt & lTry, vbExclamation + vbRetryCancel + vbDefaultButton2, sMsgTitle & " : Read Only") = vbRetry Then GoTo Ulangi
>
> End If
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
> End Sub
>
>
>
> Cara pakai :
>
> BukaFile "path\file.extension","Pwd"
>
>
>
> On Thu, Mar 14, 2019 at 5:46 AM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
>
>
>
> Dear Be-Exceller,
>
> Saya mau cek apakah file di server dibuka oleh orang lain atau dibuka dikomputer sendiri. File itu ada di server. Saya sudah bikin code nya tapi kok gak bisa ya ? Mohon bimbingannya.
>
>
>
> Ini code saya :
>
>
>
> Public function sFileAdaAccess(fname) as Boolean
>
> sFileAdaAccess = True
>
> If IsFileOpen(fname) = True Then
>
> Set wbbook = Workbooks(fname)
>
>
>
> If Not wbbook.ReadOnly = True Then
>
> MsgBox "Silahkan ditutup dulu File Master", vbExclamation, "File master terbuka"
>
> sFileAdaAccess = false
>
> Exit Function
>
> Else
>
> sFileAdaAccess = True
>
> End If
>
> Set wbbook = Nothing
>
> 'End If
>
>
>
> Public Function IsFileOpen(filename As String) As Boolean
>
> Dim filenum As Integer
>
> Dim errnum As Integer
>
>
>
> On Error Resume Next ' Turn error checking off..
>
>
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' If we were passed in an empty string,
>
> ' there is no file to test so return FALSE.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> If filename = vbNullString Then
>
> IsFileOpen = False
>
> Exit Function
>
> End If
>
>
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' If the file doesn't exist,
>
> ' it isn't open so get out now.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> If Dir(filename) = vbNullString Then
>
> IsFileOpen = False
>
> Exit Function
>
> End If
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> ' Get a free file number.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> filenum = FreeFile()
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' Attempt to open the file
>
> ' and lock it.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> Err.Clear
>
> Open filename For Input Lock Read As #filenum
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> ' Save the error number that occurred.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> errnum = Err.Number
>
> On Error GoTo 0 ' Turn error checking back on.
>
> Close #filenum ' Close the file.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> ' Check to see which error occurred.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> Select Case errnum
>
> Case 0
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' No error occurred.
>
> ' File is NOT already open by another user.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> IsFileOpen = False
>
>
>
> Case 70
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' Error number for "Permission Denied."
>
> ' File is already opened by another user.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> IsFileOpen = True
>
>
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' Another error occurred. Assume the file
>
> ' cannot be accessed.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> Case Else
>
> IsFileOpen = True
>
>
>
> End Select
>
>
>
> End Function
>
>
>
> Kenapa tidak berhasil ? Mohon bimbingannya.
>
> Terima kasih.
>
> Tio
>
>
>

Sun Mar 17, 2019 5:36 am (PDT) . Posted by:

"Tio Adi Bayu Adjie"

Terima kasih Mr. Kid atas jawabannya. Semoga amal baiknya diterima disisiNya. Amiin.

No. 2
Saya sudah buat function berikut untuk menentukan apakah file di server dibuka di network atau di computer sendiri. Tapi belum dicoba. Tolong tanggapannya.

Public Function FileTerbuka() As Boolean
Dim alamatfilemaster As String
alamatfilemaster = "\\AlamatServer\FolderServer\Subfolder\NamaFilenya.xlsx"

FileTerbuka = False

On Error GoTo not_open

Workbooks(alamatfilemaster).Activate

Exit Function
not_open:
MsgBox "File master terbuka di computer anda" & vbNewLine & vbNewLine & _
"Silahkan tutup file master dulu", vbInformation, "Info"
FileTerbuka = True
Err.Clear
Resume Next
End Function

5. Berarti kesimpulannya, setiap variable local maka akan dihancurkan VBA setelah keluar procedure. Berarti juga kalau set range di local procedure yg diperlukan hanya di local procedure, maka tidak perlu set range=nothing. Begitukah ?
Contoh :
Private sub contohsaja()
Dim myrange as range

Set myrange=Cells(1,1)
''Code lain…..
Set myrange=nothing '''--------> Karena myrange tidak diperlukan oleh procedure lain, ini tidak perlu. Benarkah ?

End sub

Nomor lain sudah puas jawabannya. Terima kasih atas jawabannya.

Tambahan pertanyaan :

1. Apakah public variable juga harus di clear kan memory nya ?

Contoh Public rangesaya as range

Maka karena public variable juga dibutuhkan oleh procedure lain, maka di clear kan setelah form ditutup yakni dengan set rangesaya=nothing. Benarkah ?

Terima kasih . Mohon jawabannya.
Tio
From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 17 Maret 2019 18:31
To: BeExcel
Subject: Re: [belajar-excel] Cek file open di server apakah dibuka dikomputer sendiri atau di komputer orang lain


No.. 2
Yup, pasti.
Hanya cara bukanya bermacam-macam tergantung media yang digunakan.
Kalau pakai workbooks.open berarti pakai cara excel melalui menu file open.
Kalau pakai select * from namaLinkedServer...[nama_sheet$] berarti pakai linked server memanfaatkan data provider tertentu via sql server
Kalau pakai objectConnection.open connectionstring berarti pakai ado object
Kalau pakai Open filefullname for blbla (open statement) berarti pakai io file
dan masih banyak lagi cara lain.
Semua itu diawali dengan membuka si file. Ada yang tampak tampil dimata user, ada yang tidak. Semua juga bisa dipakai untuk cek apakah file tersebut sedang digunakan secara ekslusif di tempat lain atau tidak. Kalau dari dalam Excel (misal melalui VBA), ingin tahu file sedang terbuka atau tidak, lalu kalau tidak terbuka maka dilakukan proses buka file, yang paling aman adalah pakai Workbooks.Open, karena lebih mudah diatur dan mudah diprediksi hasilnya, apalagi untuk yang awam dengan programming.

Tentang : "file yang dibuka ukurannya besar, jadi kalau buka file dulu, maka akan lama"
> tergantung apa tujuan pemeriksaan terbuka dan tidaknya file.
> kalau sekadar tahu saja dan tidak perlu melakukan sesuatu di dalam file tersebut, bisa pakai cara lain, seperti open statement misalnya.
> tapi kalau tujuan akhirnya, yaitu ketika tahu bahwa file tidak dibuka di tempat lain, lalu ingin membuka dan melakukan sesuatu terhadapnya, ya tetap pakai workbooks.open yang aman. Karena pada kondisi ingin membuka dan melakukan sesuatu terhadap file itu, tidak akan ada bedanya antara cepat atau lambatnya membuka file, karena hasil akhirnya ingin membuka file dan melakukan sesuatu.

No. 3
Sebelum diubah dengan memberi error handler :
> bisa jadi ada pengubah error handler di bunyi baris kode di bagian Code lain milik Anda

Setelah diubah :
> mestinya sudah tidak muncul error

No. 4
Yang mana saja sesuai kebutuhan proses yang Anda buat.

No. 5
Begitulah kira-kira.
Prinsipnya, variabel dengan scope local akan dihancurkan oleh VB/VBA begitu proses sudah sampai diluar scope.
Sedang untuk variabel dengan scope module atau yang lebih luas,
tergantung alur proses utuhnya membutuhkan hal tersebut atau tidak.

No. 6
Saya tidak tahu apa itu public events.
Biasanya events itu diusahakan dengan scope modular.

Regards,
Kid
Sent from my smart enough phone

On Mar 17, 2019, at 01:27, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id<mailto:tio.adjie@ptssb.co.id> [belajar-excel] <belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups.com>> wrote:

Terima kasih banyak Mr. Kid atas jawabannya semoga amal baiknya diterima Allah SWT. Amiin.
Pertanyaan lanjutan :

1. Mr. Kid menulis wbkF.Close False dimana wbkF adalah workbook yang isinya adalah nama file beserta path nya. Tapi yang saya baca di referensi lain adalah kalau menutup workbook, maka cukup dengan nama filenya saja tanpa path seperti workbooks("namafilenya.xlsx").close true. Mohon bimbingannya lagi, kapan saya harus menutup workbook dengan path dan kapan tanpa path ?



2. Berarti kalau mau tahu apakah file itu terbuka di computer saya atau di computer orang lain, saya harus buka file itu dulu ya ? Adakah code VBA yang bisa mengetahui itu tanpa harus buka file dulu ? Maaf karena file yang dibuka ukurannya besar, jadi kalau buka file dulu, maka akan lama .





3. Kalau ada kasus dengan code VBA seperti ini.

Dim Alamatfile as string

Dim Mywb as workbook,Wbbaru as workbook

Dim wbbaruSh as worksheet,MywbSh as worksheet



On error goto Keluar
Alamatfile="D:\\myfolder\mysubfolder\namafilesaya..xlsx"
'''Buka file dari server
BukaFile Alamatfile,"PasswordSaya"
Set Mywb=ThisWorkbook
Set Wbbaru=workbooks("namafilesaya.xlsx")
Wbbaru.activate
Set WbbaruSh=Wbbaru.worksheets("mySheet")
With WbbaruSh
.Cells(1,1).value="XXX"
'''Code lain…..….
End with
Mywb.activate
Set MywbSh=Mywb.worksheets("mySheetJuga")
With MywbSh
.Cells(1,1).value="YYY"
'''Code lain…
End with
Wbbaru.close true ---------------> Saya selalu error disini. Adakah yang salah dari coding saya ?padahal saya sudah modif dengan

On error resume next 'modif saya
Wbbaru..Close true 'modif saya
Err.clear 'modif saya
On error goto 0 'modif saya

Set mywb=nothing
Set wbbaru=nothing
Set wbbaruSh=nothing
Set MywbSh=nothing

Keluar:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Err.Clear
On Error GoTo 0

End sub


4. Bagaimana urutan penulisan yang benar seperti contoh dibawah ini : Label dulu atau clear memory (set rg=nothing misalnya ) ?
Private sub contohsaja()
On error goto Keluar
Set myrange=range(Cells(1,1),Cells(1,100))


Set myrange=nothing
Keluar:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End sub

Atau….

Private sub contohsaja()
On error goto Keluar
Set myrange=range(Cells(1,1),Cells(1,100))


Keluar:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

Set myrange=nothing
End sub

Mana urutan penulisan yang benar. Label dulu atau clear memory (dengan set myrange=nothing) ?



5. Kalau mengurangi memory untuk range, dengan menulis diakhirnya set myRange=nothing. Bagaimana dengan worksheet apakah harus set mySheet=nothing ?

Bagaimana juga dengan ukuran variable seperti Dim L as long dan ditulis di akhirnya L=empty atau variable byte, string apakah juga ditulis myString=vbnullstring ?


6. Bagaimana clear memory untuk Public Events ? Tolong diberi contoh clear memory untuk Public Events..



Terima kasih atas bimbingannya, semoga amal baiknya diterima Allah SWT. Amiin



Tio



From: belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups..com> [mailto:belajar-excel@yahoogroups.com]
Sent: 15 Maret 2019 9:03
To: BeExcel
Subject: Re: [belajar-excel] Cek file open di server apakah dibuka dikomputer sendiri atau di komputer orang lain


Public Sub BukaFile(Optional sFile As String, Optional sPwdOpen As String = vbNullString)
Dim sMsgTxt As String, sMsgTitle As String, lMsg As Long, lTry As Long, wbkF As Workbook

sMsgTxt = "Pembukaan ke-"
sMsgTitle = "Buka File"
lMsg = 20
If Len(sFile) * Len(Dir(sFile, vbNormal)) = 0 Then
MsgBox "File tidak ada atau tidak dapat di akses.", vbExclamation, sMsgTitle
Exit Sub
End If
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error GoTo Keluar

Ulangi:
lTry = lTry + 1
Set wbkF = Workbooks.Open(sFile, 0, True, Password:=sPwdOpen, IgnoreReadOnlyRecommended:=True, Notify:=False)
wbkF.ChangeFileAccess xlReadWrite, Notify:=False
If wbkF.ReadOnly Then
wbkF.Close False
If lTry Mod lMsg > 0 Then GoTo Ulangi
If MsgBox(sMsgTxt & lTry, vbExclamation + vbRetryCancel + vbDefaultButton2, sMsgTitle & " : Read Only") = vbRetry Then GoTo Ulangi
End If

Keluar:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Err.Clear
On Error GoTo 0
End Sub

Cara pakai :
BukaFile "path\file.extension","Pwd"

On Thu, Mar 14, 2019 at 5:46 AM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id<mailto:tio.adjie@ptssb.co.id> [belajar-excel] <belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups.com>> wrote:

Dear Be-Exceller,
Saya mau cek apakah file di server dibuka oleh orang lain atau dibuka dikomputer sendiri. File itu ada di server. Saya sudah bikin code nya tapi kok gak bisa ya ? Mohon bimbingannya.

Ini code saya :

Public function sFileAdaAccess(fname) as Boolean
sFileAdaAccess = True
If IsFileOpen(fname) = True Then
Set wbbook = Workbooks(fname)

If Not wbbook.ReadOnly = True Then
MsgBox "Silahkan ditutup dulu File Master", vbExclamation, "File master terbuka"
sFileAdaAccess = false
Exit Function
Else
sFileAdaAccess = True
End If
Set wbbook = Nothing
'End If

Public Function IsFileOpen(filename As String) As Boolean
Dim filenum As Integer
Dim errnum As Integer

On Error Resume Next ' Turn error checking off..

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
' If we were passed in an empty string,
' there is no file to test so return FALSE.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
If filename = vbNullString Then
IsFileOpen = False
Exit Function
End If

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
' If the file doesn't exist,
' it isn't open so get out now.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
If Dir(filename) = vbNullString Then
IsFileOpen = False
Exit Function
End If
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
' Get a free file number.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
filenum = FreeFile()
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
' Attempt to open the file
' and lock it.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
Err.Clear
Open filename For Input Lock Read As #filenum
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
' Save the error number that occurred.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
errnum = Err.Number
On Error GoTo 0 ' Turn error checking back on.
Close #filenum ' Close the file.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
' Check to see which error occurred.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
Select Case errnum
Case 0
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
' No error occurred.
' File is NOT already open by another user.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
IsFileOpen = False

Case 70
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
' Error number for "Permission Denied."
' File is already opened by another user.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
IsFileOpen = True

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
' Another error occurred. Assume the file
' cannot be accessed.
''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
Case Else
IsFileOpen = True

End Select

End Function

Kenapa tidak berhasil ? Mohon bimbingannya.
Terima kasih.
Tio

Sun Mar 17, 2019 5:44 am (PDT) . Posted by:

"Iman Darusman" idz.iman

Salam kenal pak Tio...Ternyata ad org SSB di group ini hehe... saya iman di TMT 1 lantai 9 hehe

Sent from Yahoo Mail for iPhone

On Sunday, March 17, 2019, 6:44 PM, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id [belajar-excel] <belajar-excel@yahoogroups.com> wrote:

 

Terima kasih Mr. Kid atas jawabannya. Semoga amal baiknya diterima disisiNya. Amiin.

 

No. 2

Saya sudah buat function berikut untuk menentukan apakah file di server dibuka di network atau di computer sendiri.Tapi belum dicoba. Tolong tanggapannya.

 

Public Function FileTerbuka() As Boolean

Dim alamatfilemaster As String

alamatfilemaster = "\\AlamatServer\FolderServer\Subfolder\NamaFilenya.xlsx"

 

FileTerbuka = False

 

On Error GoTo not_open

 

Workbooks(alamatfilemaster).Activate

 

Exit Function

not_open:

    MsgBox "File master terbuka di computer anda" & vbNewLine & vbNewLine & _

    "Silahkan tutup file master dulu", vbInformation, "Info"

    FileTerbuka = True

    Err.Clear

    Resume Next

End Function

 

5. Berarti kesimpulannya, setiap variable local maka akan dihancurkan VBA setelah keluar procedure. Berarti juga kalau set range di local procedure yg diperlukan hanya di local procedure, maka tidak perlu set range=nothing. Begitukah ?

                Contoh :

                Private sub contohsaja()

                Dim myrange as range

 

                Set myrange=Cells(1,1)

                ''Code lain…..

               Set myrange=nothing '''------à Karena myrange tidak diperlukan oleh procedure lain, ini tidak perlu. Benarkah ?

 

               End sub

 

Nomor lain sudah puas jawabannya. Terima kasih atas jawabannya.

 

Tambahan pertanyaan :

1.      Apakah public variable juga harus di clear kan memory nya ?

ContohPublic rangesaya as range

Maka karena public variable juga dibutuhkan oleh procedure lain, maka di clear kan setelah form ditutup yakni denganset rangesaya=nothing. Benarkah ?

 

Terima kasih . Mohon jawabannya.

Tio

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 17 Maret 2019 18:31
To: BeExcel
Subject: Re: [belajar-excel] Cek file open di server apakah dibuka dikomputer sendiri atau di komputer orang lain

 

 

No.. 2

Yup, pasti.

Hanya cara bukanya bermacam-macam tergantung media yang digunakan.

Kalau pakai workbooks.open berarti pakai cara excel melalui menu file open.

Kalau pakai select * from namaLinkedServer...[nama_sheet$] berarti pakai linked server memanfaatkan data provider tertentu via sql server
Kalau pakai objectConnection.open connectionstring berarti pakai ado object

Kalau pakai Open filefullname for blbla (open statement) berarti pakai io file

dan masih banyak lagi cara lain.

Semua itu diawali dengan membuka si file. Ada yang tampak tampil dimata user, ada yang tidak. Semua juga bisa dipakai untuk cek apakah file tersebut sedang digunakan secara ekslusif di tempat lain atau tidak. Kalau dari dalam Excel (misal melalui VBA), ingin tahu file sedang terbuka atau tidak, lalu kalau tidak terbuka maka dilakukan proses buka file, yang paling aman adalah pakai Workbooks.Open, karena lebih mudah diatur dan mudah diprediksi hasilnya, apalagi untuk yang awam dengan programming.

 

Tentang : "file yang dibuka ukurannya besar, jadi kalau buka file dulu, maka akan lama"

> tergantung apa tujuan pemeriksaan terbuka dan tidaknya file.

> kalau sekadar tahu saja dan tidak perlu melakukan sesuatu di dalam file tersebut, bisa pakai cara lain, seperti open statement misalnya.

> tapi kalau tujuan akhirnya, yaitu ketika tahu bahwa file tidak dibuka di tempat lain, lalu ingin membuka dan melakukan sesuatu terhadapnya, ya tetap pakai workbooks.open yang aman. Karena pada kondisi ingin membuka dan melakukan sesuatu terhadap file itu, tidak akan ada bedanya antara cepat atau lambatnya membuka file, karena hasil akhirnya ingin membuka file dan melakukan sesuatu.

 

No. 3

Sebelum diubah dengan memberi error handler :

> bisa jadi ada pengubah error handler di bunyi baris kode di bagian Code lain milik Anda 

 

Setelah diubah :

> mestinya sudah tidak muncul error

 

No. 4

Yang mana saja sesuai kebutuhan proses yang Anda buat.

 

No. 5

Begitulah kira-kira.

Prinsipnya, variabel dengan scope local akan dihancurkan oleh VB/VBA begitu proses sudah sampai diluar scope.

Sedang untuk variabel dengan scope module atau yang lebih luas,

tergantung alur proses utuhnya membutuhkan hal tersebut atau tidak.

 

No. 6

Saya tidak tahu apa itu public events.

Biasanya events itu diusahakan dengan scope modular.

 

Regards,

Kid
Sent from my smart enough phone


On Mar 17, 2019, at 01:27, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id [belajar-excel] <belajar-excel@yahoogroups.com> wrote:


 

Terima kasih banyak Mr. Kid atas jawabannya semoga amal baiknya diterima Allah SWT. Amiin.

Pertanyaan lanjutan :

1.     Mr. Kid menulis wbkF.Close False dimana wbkF adalah workbook yang isinya adalah nama file beserta path nya. Tapi yang saya baca di referensi lain adalah kalau menutup workbook, maka cukup dengan nama filenya saja tanpa path seperti workbooks("namafilenya.xlsx").close true. Mohon bimbingannya lagi, kapan saya harus menutup workbook dengan path dan kapan tanpa path ?

 

2.     Berarti kalau mau tahu apakah file itu terbuka di computer saya atau di computer orang lain, saya harus buka file  itu dulu ya ? Adakah code VBA yang bisa mengetahui itu tanpa harus buka file dulu ? Maaf karena file yang dibuka ukurannya besar, jadi kalau buka file dulu, maka akan lama .

 

 

3.     Kalau ada kasus dengan code VBA seperti ini..

Dim Alamatfile as string

Dim Mywb as workbook,Wbbaru as workbook

Dim wbbaruSh as worksheet,MywbSh as worksheet

 

On error goto Keluar

Alamatfile="D:\\myfolder\mysubfolder\namafilesaya..xlsx"

'''Buka file dari server

BukaFile Alamatfile,"PasswordSaya"

Set Mywb=ThisWorkbook

Set Wbbaru=workbooks("namafilesaya.xlsx")

Wbbaru.activate

Set WbbaruSh=Wbbaru.worksheets("mySheet")

With WbbaruSh

      .Cells(1,1).value="XXX"

      '''Code lain…..….

End with

Mywb.activate

Set MywbSh=Mywb.worksheets("mySheetJuga")

With MywbSh

      .Cells(1,1).value="YYY"

      '''Code lain…

End with

Wbbaru.close true -------------à Saya selalu error disini. Adakah yang salah dari coding saya ?padahal saya sudah modif dengan

 

On error resume next   'modif saya

Wbbaru..Close true     'modif saya

Err.clear         'modif saya

On error goto 0     'modif saya

 

Set mywb=nothing

Set wbbaru=nothing

Set wbbaruSh=nothing

Set MywbSh=nothing

 

Keluar:

    Application.Calculation = xlCalculationAutomatic

    Application.ScreenUpdating = True

    Application.DisplayAlerts = True

    Err.Clear

    On Error GoTo 0

 

End sub

 

4.     Bagaimana urutan penulisan yang benar seperti contoh dibawah ini : Label dulu atau clear memory (set rg=nothing misalnya ) ?

Private sub contohsaja()

On error goto Keluar

            Set myrange=range(Cells(1,1),Cells(1,100))

 

 

Set myrange=nothing

Keluar:

    Application.Calculation = xlCalculationAutomatic

    Application.ScreenUpdating = True

End sub

 

Atau….

 

Private sub contohsaja()

On error goto Keluar

            Set myrange=range(Cells(1,1),Cells(1,100))

 

 

Keluar:

    Application.Calculation = xlCalculationAutomatic

    Application.ScreenUpdating = True

 

Set myrange=nothing

End sub

 

Mana urutan penulisan yang benar. Label dulu atau clear memory (dengan set myrange=nothing) ?

   

 

5.     Kalau mengurangi memory untuk range, dengan menulis diakhirnya set myRange=nothing. Bagaimana dengan worksheet apakah harus set mySheet=nothing ?

Bagaimana juga dengan ukuran variable seperti Dim L as long dan ditulis di akhirnya L=empty  atau variable byte, string apakah juga ditulis myString=vbnullstring ?

 

6.     Bagaimana clear memory untuk Public Events ? Tolong diberi contoh clear memory untuk Public Events..

 

Terima kasih atas bimbingannya, semoga amal baiknya diterima Allah SWT. Amiin

 

Tio

 

 

From:belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 15 Maret 2019 9:03
To: BeExcel
Subject: Re: [belajar-excel] Cek file open di server apakah dibuka dikomputer sendiri atau di komputer orang lain

 

 

Public Sub BukaFile(Optional sFile As String, Optional sPwdOpen As String = vbNullString)

    Dim sMsgTxt As String, sMsgTitle As String, lMsg As Long, lTry As Long, wbkF As Workbook

    

    sMsgTxt = "Pembukaan ke-"

    sMsgTitle = "Buka File"

    lMsg = 20

    If Len(sFile) * Len(Dir(sFile, vbNormal)) = 0 Then

        MsgBox "File tidak ada atau tidak dapat di akses.", vbExclamation, sMsgTitle

        Exit Sub

    End If

    Application.Calculation = xlCalculationManual

    Application.ScreenUpdating = False

    Application.DisplayAlerts = False

    On Error GoTo Keluar

    

Ulangi:

    lTry = lTry + 1

    Set wbkF = Workbooks.Open(sFile, 0, True, Password:=sPwdOpen, IgnoreReadOnlyRecommended:=True, Notify:=False)

    wbkF.ChangeFileAccess xlReadWrite, Notify:=False

    If wbkF.ReadOnly Then

        wbkF.Close False

        If lTry Mod lMsg > 0 Then GoTo Ulangi

        If MsgBox(sMsgTxt & lTry, vbExclamation + vbRetryCancel + vbDefaultButton2, sMsgTitle & " : Read Only") = vbRetry Then GoTo Ulangi

    End If

    

Keluar:

    Application.Calculation = xlCalculationAutomatic

    Application.ScreenUpdating = True

    Application.DisplayAlerts = True

    Err.Clear

    On Error GoTo 0

End Sub

 

Cara pakai :

BukaFile "path\file.extension","Pwd"

 

On Thu, Mar 14, 2019 at 5:46 AM Tio Adi Bayu Adjietio.adjie@ptssb.co.id [belajar-excel] <belajar-excel@yahoogroups.com> wrote:


 

Dear Be-Exceller,

Saya mau cek apakah file di server dibuka oleh orang lain atau dibuka dikomputer sendiri. File itu ada di server. Saya sudah bikin code nya tapi kok gak bisa ya ? Mohon bimbingannya.

 

Ini code saya :

 

Public function sFileAdaAccess(fname) as Boolean

   sFileAdaAccess = True

If IsFileOpen(fname) = True Then

Set wbbook = Workbooks(fname)

 

If Not wbbook.ReadOnly = True Then

                MsgBox "Silahkan  ditutup dulu File Master", vbExclamation, "File master terbuka"

sFileAdaAccess = false

                 Exit Function

Else

                 sFileAdaAccess = True

End If

  Set wbbook = Nothing

'End If

 

Public Function IsFileOpen(filename As String) As Boolean

Dim filenum As Integer

Dim errnum As Integer

 

On Error Resume Next   ' Turn error checking off..

 

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

' If we were passed in an empty string,

' there is no file to test so return FALSE.

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

If filename = vbNullString Then

    IsFileOpen = False

    Exit Function

End If

 

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

' If the file doesn't exist,

' it isn't open so get out now.

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

If Dir(filename) = vbNullString Then

    IsFileOpen = False

    Exit Function

End If

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'

' Get a free file number.

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'

filenum = FreeFile()

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

' Attempt to open the file

' and lock it.

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

Err.Clear

Open filename For Input Lock Read As #filenum

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'

' Save the error number that occurred.

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'

errnum = Err.Number

On Error GoTo 0        ' Turn error checking back on.

Close #filenum       ' Close the file.

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'

' Check to see which error occurred.

''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'

Select Case errnum

    Case 0

    ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

    ' No error occurred.

    ' File is NOT already open by another user.

    ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

        IsFileOpen = False

 

    Case 70

    ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

    ' Error number for "Permission Denied."

    ' File is already opened by another user.

    ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

        IsFileOpen = True

   

    ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

    ' Another error occurred. Assume the file

    ' cannot be accessed.

    ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;

    Case Else

        IsFileOpen = True

       

End Select

 

End Function

 

Kenapa tidak berhasil ? Mohon bimbingannya.

Terima kasih.

Tio


#yiv7950884092 #yiv7950884092 -- #yiv7950884092ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv7950884092 #yiv7950884092ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv7950884092 #yiv7950884092ygrp-mkp #yiv7950884092hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv7950884092 #yiv7950884092ygrp-mkp #yiv7950884092ads {margin-bottom:10px;}#yiv7950884092 #yiv7950884092ygrp-mkp .yiv7950884092ad {padding:0 0;}#yiv7950884092 #yiv7950884092ygrp-mkp .yiv7950884092ad p {margin:0;}#yiv7950884092 #yiv7950884092ygrp-mkp .yiv7950884092ad a {color:#0000ff;text-decoration:none;}#yiv7950884092 #yiv7950884092ygrp-sponsor #yiv7950884092ygrp-lc {font-family:Arial;}#yiv7950884092 #yiv7950884092ygrp-sponsor #yiv7950884092ygrp-lc #yiv7950884092hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv7950884092 #yiv7950884092ygrp-sponsor #yiv7950884092ygrp-lc .yiv7950884092ad {margin-bottom:10px;padding:0 0;}#yiv7950884092 #yiv7950884092actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv7950884092 #yiv7950884092activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv7950884092 #yiv7950884092activity span {font-weight:700;}#yiv7950884092 #yiv7950884092activity span:first-child {text-transform:uppercase;}#yiv7950884092 #yiv7950884092activity span a {color:#5085b6;text-decoration:none;}#yiv7950884092 #yiv7950884092activity span span {color:#ff7900;}#yiv7950884092 #yiv7950884092activity span .yiv7950884092underline {text-decoration:underline;}#yiv7950884092 .yiv7950884092attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv7950884092 .yiv7950884092attach div a {text-decoration:none;}#yiv7950884092 .yiv7950884092attach img {border:none;padding-right:5px;}#yiv7950884092 .yiv7950884092attach label {display:block;margin-bottom:5px;}#yiv7950884092 .yiv7950884092attach label a {text-decoration:none;}#yiv7950884092 blockquote {margin:0 0 0 4px;}#yiv7950884092 .yiv7950884092bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv7950884092 .yiv7950884092bold a {text-decoration:none;}#yiv7950884092 dd.yiv7950884092last p a {font-family:Verdana;font-weight:700;}#yiv7950884092 dd.yiv7950884092last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv7950884092 dd.yiv7950884092last p span.yiv7950884092yshortcuts {margin-right:0;}#yiv7950884092 div.yiv7950884092attach-table div div a {text-decoration:none;}#yiv7950884092 div.yiv7950884092attach-table {width:400px;}#yiv7950884092 div.yiv7950884092file-title a, #yiv7950884092 div.yiv7950884092file-title a:active, #yiv7950884092 div.yiv7950884092file-title a:hover, #yiv7950884092 div.yiv7950884092file-title a:visited {text-decoration:none;}#yiv7950884092 div.yiv7950884092photo-title a, #yiv7950884092 div.yiv7950884092photo-title a:active, #yiv7950884092 div.yiv7950884092photo-title a:hover, #yiv7950884092 div.yiv7950884092photo-title a:visited {text-decoration:none;}#yiv7950884092 div#yiv7950884092ygrp-mlmsg #yiv7950884092ygrp-msg p a span.yiv7950884092yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv7950884092 .yiv7950884092green {color:#628c2a;}#yiv7950884092 .yiv7950884092MsoNormal {margin:0 0 0 0;}#yiv7950884092 o {font-size:0;}#yiv7950884092 #yiv7950884092photos div {float:left;width:72px;}#yiv7950884092 #yiv7950884092photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv7950884092 #yiv7950884092photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv7950884092 #yiv7950884092reco-category {font-size:77%;}#yiv7950884092 #yiv7950884092reco-desc {font-size:77%;}#yiv7950884092 .yiv7950884092replbq {margin:4px;}#yiv7950884092 #yiv7950884092ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv7950884092 #yiv7950884092ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv7950884092 #yiv7950884092ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv7950884092 #yiv7950884092ygrp-mlmsg select, #yiv7950884092 input, #yiv7950884092 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv7950884092 #yiv7950884092ygrp-mlmsg pre, #yiv7950884092 code {font:115% monospace;}#yiv7950884092 #yiv7950884092ygrp-mlmsg * {line-height:1.22em;}#yiv7950884092 #yiv7950884092ygrp-mlmsg #yiv7950884092logo {padding-bottom:10px;}#yiv7950884092 #yiv7950884092ygrp-msg p a {font-family:Verdana;}#yiv7950884092 #yiv7950884092ygrp-msg p#yiv7950884092attach-count span {color:#1E66AE;font-weight:700;}#yiv7950884092 #yiv7950884092ygrp-reco #yiv7950884092reco-head {color:#ff7900;font-weight:700;}#yiv7950884092 #yiv7950884092ygrp-reco {margin-bottom:20px;padding:0px;}#yiv7950884092 #yiv7950884092ygrp-sponsor #yiv7950884092ov li a {font-size:130%;text-decoration:none;}#yiv7950884092 #yiv7950884092ygrp-sponsor #yiv7950884092ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv7950884092 #yiv7950884092ygrp-sponsor #yiv7950884092ov ul {margin:0;padding:0 0 0 8px;}#yiv7950884092 #yiv7950884092ygrp-text {font-family:Georgia;}#yiv7950884092 #yiv7950884092ygrp-text p {margin:0 0 1em 0;}#yiv7950884092 #yiv7950884092ygrp-text tt {font-size:120%;}#yiv7950884092 #yiv7950884092ygrp-vital ul li:last-child {border-right:none !important;}#yiv7950884092

Sun Mar 17, 2019 2:59 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

No 2.
Coba saja.
Yang jelas sudah aneh saja, on error goto not_open kok pesannya msgbox
sudah terbuka.

No. 5.
Ya begitulah kerjanya.

No. 1 tambahan.
Tergantung kebutuhan. Kalau butuh di-clear, maka di-clear. Kalau gak butuh
di-clear, ya gak di-clear. Kalau butuh menunda clear, ya ditunda proses
clear-nya.
Prinsipnya sih tergantung kebutuhan alur proses yang disusun.
Yang tahu kebutuhannya, ya si penyusun alur proses itu sendiri.

Regards,
Kid

On Sun, Mar 17, 2019 at 7:36 PM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
[belajar-excel] <belajar-excel@yahoogroups.com> wrote:

>
>
> Terima kasih Mr. Kid atas jawabannya. Semoga amal baiknya diterima
> disisiNya. Amiin.
>
>
>
> No. 2
>
> Saya sudah buat function berikut untuk menentukan apakah file di server
> dibuka di network atau di computer sendiri. *Tapi belum dicoba. Tolong
> tanggapannya.*
>
>
>
> *Public Function FileTerbuka() As Boolean*
>
> Dim alamatfilemaster As String
>
> alamatfilemaster = "\\AlamatServer\FolderServer\Subfolder\NamaFilenya.xlsx"
>
>
>
> FileTerbuka = False
>
>
>
> On Error GoTo not_open
>
>
>
> Workbooks(alamatfilemaster).Activate
>
>
>
> Exit Function
>
> not_open:
>
> MsgBox "File master terbuka di computer anda" & vbNewLine & vbNewLine
> & _
>
> "Silahkan tutup file master dulu", vbInformation, "Info"
>
> FileTerbuka = True
>
> Err.Clear
>
> Resume Next
>
> *End Function*
>
>
>
> 5. Berarti kesimpulannya, setiap variable local maka akan dihancurkan VBA
> setelah keluar procedure. Berarti juga kalau set range di local procedure
> yg diperlukan hanya di local procedure, maka tidak perlu set range=nothing.
> Begitukah ?
>
> Contoh :
>
> Private sub contohsaja()
>
> Dim myrange as range
>
>
>
> Set myrange=Cells(1,1)
>
> ''Code lain…..
>
> *Set myrange=nothing '''------**à** Karena myrange tidak
> diperlukan oleh procedure lain, ini tidak perlu. Benarkah ?*
>
>
>
> End sub
>
>
>
> Nomor lain sudah puas jawabannya. Terima kasih atas jawabannya.
>
>
>
> Tambahan pertanyaan :
>
> 1. Apakah public variable juga harus di clear kan memory nya ?
>
> Contoh *Public rangesaya as range*
>
> Maka karena public variable juga dibutuhkan oleh procedure lain, maka di
> clear kan setelah form ditutup yakni dengan *set rangesaya=nothing*.
> Benarkah ?
>
>
>
> Terima kasih . Mohon jawabannya.
>
> Tio
>
> *From:* belajar-excel@yahoogroups.com [mailto:
> belajar-excel@yahoogroups.com]
> *Sent:* 17 Maret 2019 18:31
> *To:* BeExcel
> *Subject:* Re: [belajar-excel] Cek file open di server apakah dibuka
> dikomputer sendiri atau di komputer orang lain
>
>
>
>
>
> No.. 2
>
> Yup, pasti.
>
> Hanya cara bukanya bermacam-macam tergantung media yang digunakan.
>
> Kalau pakai workbooks.open berarti pakai cara excel melalui menu file open.
>
> Kalau pakai select * from namaLinkedServer...[nama_sheet$] berarti pakai
> linked server memanfaatkan data provider tertentu via sql server
> Kalau pakai objectConnection.open connectionstring berarti pakai ado object
>
> Kalau pakai Open filefullname for blbla (open statement) berarti pakai io
> file
>
> dan masih banyak lagi cara lain.
>
> Semua itu diawali dengan membuka si file. Ada yang tampak tampil dimata
> user, ada yang tidak. Semua juga bisa dipakai untuk cek apakah file
> tersebut sedang digunakan secara ekslusif di tempat lain atau tidak. Kalau
> dari dalam Excel (misal melalui VBA), ingin tahu file sedang terbuka atau
> tidak, lalu kalau tidak terbuka maka dilakukan proses buka file, yang
> paling aman adalah pakai Workbooks.Open, karena lebih mudah diatur dan
> mudah diprediksi hasilnya, apalagi untuk yang awam dengan programming.
>
>
>
> Tentang : "file yang dibuka ukurannya besar, jadi kalau buka file dulu,
> maka akan lama"
>
> > tergantung apa tujuan pemeriksaan terbuka dan tidaknya file.
>
> > kalau sekadar tahu saja dan tidak perlu melakukan sesuatu di dalam file
> tersebut, bisa pakai cara lain, seperti open statement misalnya.
>
> > tapi kalau tujuan akhirnya, yaitu ketika tahu bahwa file tidak dibuka di
> tempat lain, lalu ingin membuka dan melakukan sesuatu terhadapnya, ya tetap
> pakai workbooks.open yang aman. Karena pada kondisi ingin membuka dan
> melakukan sesuatu terhadap file itu, tidak akan ada bedanya antara cepat
> atau lambatnya membuka file, karena hasil akhirnya ingin membuka file dan
> melakukan sesuatu.
>
>
>
> No. 3
>
> Sebelum diubah dengan memberi error handler :
>
> > bisa jadi ada pengubah error handler di bunyi baris kode di bagian Code
> lain milik Anda
>
>
>
> Setelah diubah :
>
> > mestinya sudah tidak muncul error
>
>
>
> No. 4
>
> Yang mana saja sesuai kebutuhan proses yang Anda buat.
>
>
>
> No. 5
>
> Begitulah kira-kira.
>
> Prinsipnya, variabel dengan scope local akan dihancurkan oleh VB/VBA
> begitu proses sudah sampai diluar scope.
>
> Sedang untuk variabel dengan scope module atau yang lebih luas,
>
> tergantung alur proses utuhnya membutuhkan hal tersebut atau tidak.
>
>
>
> No. 6
>
> Saya tidak tahu apa itu public events.
>
> Biasanya events itu diusahakan dengan scope modular.
>
>
>
> Regards,
>
> Kid
> Sent from my smart enough phone
>
>
> On Mar 17, 2019, at 01:27, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
> [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
>
>
>
> Terima kasih banyak Mr. Kid atas jawabannya semoga amal baiknya diterima
> Allah SWT. Amiin.
>
> Pertanyaan lanjutan :
>
> 1. Mr. Kid menulis wbkF.Close False dimana wbkF adalah workbook yang
> isinya adalah nama file beserta path nya. Tapi yang saya baca di referensi
> lain adalah kalau menutup workbook, maka cukup dengan nama filenya saja
> tanpa path seperti workbooks("namafilenya.xlsx").close true. Mohon
> bimbingannya lagi, kapan saya harus menutup workbook dengan path dan kapan
> tanpa path ?
>
>
>
> 2. Berarti kalau mau tahu apakah file itu terbuka di computer saya
> atau di computer orang lain, saya harus buka file itu dulu ya ? Adakah
> code VBA yang bisa mengetahui itu tanpa harus buka file dulu ? Maaf karena
> file yang dibuka ukurannya besar, jadi kalau buka file dulu, maka akan lama
> .
>
>
>
>
>
> 3. Kalau ada kasus dengan code VBA seperti ini.
>
> Dim Alamatfile as string
>
> Dim Mywb as workbook,Wbbaru as workbook
>
> Dim wbbaruSh as worksheet,MywbSh as worksheet
>
>
>
> On error goto Keluar
>
> Alamatfile="D:\\myfolder\mysubfolder\namafilesaya.xlsx"
>
> '''Buka file dari server
>
> BukaFile Alamatfile,"PasswordSaya"
>
> Set Mywb=ThisWorkbook
>
> Set Wbbaru=workbooks("namafilesaya.xlsx")
>
> Wbbaru.activate
>
> Set WbbaruSh=Wbbaru.worksheets("mySheet")
>
> With WbbaruSh
>
> .Cells(1,1).value="XXX"
>
> '''Code lain…..….
>
> End with
>
> Mywb.activate
>
> Set MywbSh=Mywb.worksheets("mySheetJuga")
>
> With MywbSh
>
> .Cells(1,1).value="YYY"
>
> '''Code lain…
>
> End with
>
> Wbbaru.close true -------------à Saya selalu error disini. Adakah yang
> salah dari coding saya ?padahal saya sudah modif dengan
>
>
>
> On error resume next 'modif saya
>
> Wbbaru..Close true 'modif saya
>
> Err.clear 'modif saya
>
> On error goto 0 'modif saya
>
>
>
> Set mywb=nothing
>
> Set wbbaru=nothing
>
> Set wbbaruSh=nothing
>
> Set MywbSh=nothing
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
>
>
> End sub
>
>
>
> 4. Bagaimana urutan penulisan yang benar seperti contoh dibawah ini
> : Label dulu atau clear memory (set rg=nothing misalnya ) ?
>
> Private sub contohsaja()
>
> On error goto Keluar
>
> Set myrange=range(Cells(1,1),Cells(1,100))
>
>
>
>
>
> Set myrange=nothing
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> End sub
>
>
>
> *Atau….*
>
>
>
> Private sub contohsaja()
>
> On error goto Keluar
>
> Set myrange=range(Cells(1,1),Cells(1,100))
>
>
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
>
>
> Set myrange=nothing
>
> End sub
>
>
>
> Mana urutan penulisan yang benar. Label dulu atau clear memory (dengan set
> myrange=nothing) ?
>
>
>
>
>
> 5. Kalau mengurangi memory untuk range, dengan menulis diakhirnya
> set myRange=nothing. Bagaimana dengan worksheet apakah harus set
> mySheet=nothing ?
>
> Bagaimana juga dengan ukuran variable seperti Dim L as long dan ditulis di
> akhirnya L=empty atau variable byte, string apakah juga ditulis
> myString=vbnullstring ?
>
>
>
> 6. Bagaimana clear memory untuk Public Events ? Tolong diberi contoh
> clear memory untuk Public Events..
>
>
>
> Terima kasih atas bimbingannya, semoga amal baiknya diterima Allah SWT..
> Amiin
>
>
>
> Tio
>
>
>
>
>
> *From:* belajar-excel@yahoogroups.com <belajar-excel@yahoogroups..com> [
> mailto:belajar-excel@yahoogroups.com <belajar-excel@yahoogroups.com>]
> *Sent:* 15 Maret 2019 9:03
> *To:* BeExcel
> *Subject:* Re: [belajar-excel] Cek file open di server apakah dibuka
> dikomputer sendiri atau di komputer orang lain
>
>
>
>
>
> Public Sub BukaFile(Optional sFile As String, Optional sPwdOpen As String
> = vbNullString)
>
> Dim sMsgTxt As String, sMsgTitle As String, lMsg As Long, lTry As
> Long, wbkF As Workbook
>
>
>
> sMsgTxt = "Pembukaan ke-"
>
> sMsgTitle = "Buka File"
>
> lMsg = 20
>
> If Len(sFile) * Len(Dir(sFile, vbNormal)) = 0 Then
>
> MsgBox "File tidak ada atau tidak dapat di akses.", vbExclamation,
> sMsgTitle
>
> Exit Sub
>
> End If
>
> Application.Calculation = xlCalculationManual
>
> Application.ScreenUpdating = False
>
> Application.DisplayAlerts = False
>
> On Error GoTo Keluar
>
>
>
> Ulangi:
>
> lTry = lTry + 1
>
> Set wbkF = Workbooks.Open(sFile, 0, True, Password:=sPwdOpen,
> IgnoreReadOnlyRecommended:=True, Notify:=False)
>
> wbkF.ChangeFileAccess xlReadWrite, Notify:=False
>
> If wbkF.ReadOnly Then
>
> wbkF.Close False
>
> If lTry Mod lMsg > 0 Then GoTo Ulangi
>
> If MsgBox(sMsgTxt & lTry, vbExclamation + vbRetryCancel +
> vbDefaultButton2, sMsgTitle & " : Read Only") = vbRetry Then GoTo Ulangi
>
> End If
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
> End Sub
>
>
>
> Cara pakai :
>
> BukaFile "path\file.extension","Pwd"
>
>
>
> On Thu, Mar 14, 2019 at 5:46 AM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
> [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
>
>
>
> Dear Be-Exceller,
>
> Saya mau cek apakah file di server dibuka oleh orang lain atau dibuka
> dikomputer sendiri. File itu ada di server. Saya sudah bikin code nya tapi
> kok gak bisa ya ? Mohon bimbingannya.
>
>
>
> Ini code saya :
>
>
>
> Public function sFileAdaAccess(fname) as Boolean
>
> sFileAdaAccess = True
>
> If IsFileOpen(fname) = True Then
>
> Set wbbook = Workbooks(fname)
>
>
>
> If Not wbbook.ReadOnly = True Then
>
> MsgBox "Silahkan ditutup dulu File Master",
> vbExclamation, "File master terbuka"
>
> sFileAdaAccess = false
>
> Exit Function
>
> Else
>
> sFileAdaAccess = True
>
> End If
>
> Set wbbook = Nothing
>
> 'End If
>
>
>
> Public Function IsFileOpen(filename As String) As Boolean
>
> Dim filenum As Integer
>
> Dim errnum As Integer
>
>
>
> On Error Resume Next ' Turn error checking off..
>
>
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' If we were passed in an empty string,
>
> ' there is no file to test so return FALSE.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> If filename = vbNullString Then
>
> IsFileOpen = False
>
> Exit Function
>
> End If
>
>
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' If the file doesn't exist,
>
> ' it isn't open so get out now.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> If Dir(filename) = vbNullString Then
>
> IsFileOpen = False
>
> Exit Function
>
> End If
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> ' Get a free file number.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> filenum = FreeFile()
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' Attempt to open the file
>
> ' and lock it.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> Err.Clear
>
> Open filename For Input Lock Read As #filenum
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> ' Save the error number that occurred.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> errnum = Err.Number
>
> On Error GoTo 0 ' Turn error checking back on.
>
> Close #filenum ' Close the file.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> ' Check to see which error occurred.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'
>
> Select Case errnum
>
> Case 0
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' No error occurred.
>
> ' File is NOT already open by another user.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> IsFileOpen = False
>
>
>
> Case 70
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' Error number for "Permission Denied."
>
> ' File is already opened by another user.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> IsFileOpen = True
>
>
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> ' Another error occurred. Assume the file
>
> ' cannot be accessed.
>
> ''&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;'&#39;
>
> Case Else
>
> IsFileOpen = True
>
>
>
> End Select
>
>
>
> End Function
>
>
>
> Kenapa tidak berhasil ? Mohon bimbingannya.
>
> Terima kasih.
>
> Tio
>
>
>

Sun Mar 17, 2019 3:18 pm (PDT) . Posted by:

"Agus"

Dear All,

Saya gagal paham penulisan Resume next,
yang benar penulisan resume next (on error resume next) di awal atau di
akhir?
kalau ditulis di akhir gunanya apa?

Regard
NangAgus
On 3/17/2019 18:44, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
[belajar-excel] wrote:
>
> Terima kasih Mr. Kid atas jawabannya. Semoga amal baiknya diterima
> disisiNya. Amiin.
>
> No. 2
>
> Saya sudah buat function berikut untuk menentukan apakah file di
> server dibuka di network atau di computer sendiri. *Tapi belum dicoba.
> Tolong tanggapannya.*
>
> **
>
> *Public Function FileTerbuka() As Boolean*
>
> Dim alamatfilemaster As String
>
> alamatfilemaster =
> "\&#92;AlamatServer&#92;FolderServer\Subfolder&#92;NamaFilenya.xlsx"
>
> FileTerbuka = False
>
> On Error GoTo not_open
>
> Workbooks(alamatfilemaster).Activate
>
> Exit Function
>
> not_open:
>
>     MsgBox "File master terbuka di computer anda" & vbNewLine &
> vbNewLine & _
>
>     "Silahkan tutup file master dulu", vbInformation, "Info"
>
> FileTerbuka = True
>
>     Err.Clear
>
>     Resume Next
>
> *End Function*
>
> **
>

Sun Mar 17, 2019 5:37 am (PDT) . Posted by:

"Tio Adi Bayu Adjie"

Terima kasih Mr. Kid atas jawabannya semoga amal baiknya diterima disisiNya. Amiin.

Dari lampiran yang Mr. Kid kasih, disitu tertulis :

[cid:image001.png@01D4DCFA.8F1E4F50]

Berarti code number 0 disesuaikan dengan situasi, yaitu kalau cek file ada/tidak, maka number error 0 itu maksudnya file ada sehingga selain 0 file tidak ada. Dan kalau cek file open/tidak, maka number error 0 itu maksudnya file open sehingga selain 0 file itu tertutup Benarkah itu sesuai situasi yang diinginkan ?

Terima kasih atas jawabannya.
Tio

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 17 Maret 2019 12:26
To: BeExcel
Subject: Re: [belajar-excel] Perbedaan penulisan error handling


Nambahin ini :
Daftar kode error (err.number)<https://www.vba-market.com/list-of-vba-error-codes/>

Sent from my smart enough phone

On Mar 17, 2019, at 09:55, Agus nangagus@gmail.com<mailto:nangagus@gmail..com> [belajar-excel] <belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups.com>> wrote:

Dear Tio,
Coba baca kembali Helepnya Excel:

<cppgkdmhbkkjkcka.png>

1. Apa perbedaan error handling antara penulisan Err.clear dengan on error goto -1 ? Tolong diberikan contohnya untuk kedua error handling tsb.
>> Bukankah tulisannya sudah berbeda? apa yang ditanyakan? mungkin perbedaan ada pada angkanya, err.clear tidak ada angka sedangkan on error go to -1 ada angkanya .......... he he he he, jangan marah ya...
>> Err.clear hanya menghapus nomor error yang sudah ada sebelumnya.
>> on error goto -1 digunakan untuk menghapus exception object (error sebelumnya), kalau error sebelunya tidak dihapus maka error tersebut tidak dapat ditangani.
Contoh:
Sub Test1()
Dim dblValue As Double
On Error GoTo ErrHandler1
dblValue = 1 / 0
ErrHandler1:
MsgBox "Iki error no 11"
Err.Clear
MsgBox "Kesalahan nomer: " & Err.Number & Vbcrlf & " harusnya muncul no 11, tetapi jadi 0 karena ada err.clear"
On Error GoTo -1
On Error GoTo ErrHandler2
dblValue = "a"
ErrHandler2:
MsgBox Err.Number
MsgBox "Iki error no 13"
End Sub

Untuk mengetahui perbedaannya silahkan buang err.clear dan onerror go to -1 secara bergantian!
2. Apakah penulisan error handling on error goto -1 akan mereset error di baris sebelumnya atau baris sesudahnya ? Tolong diberikan contohnya….
>>> yang direset adalah error sebelumnya. Contoh di atas yaaaaaa......

3. Tolong berikan penjelasan error number 0. Apakah pengertiannya disesuaikan dengan kondisi ?
>>>>> Kelihatannya tidak ada deskripsi untuk error ini, nunggu penjelasan yang lebih kompeten yaa...

Regard
KenangAgus


Sun Mar 17, 2019 3:08 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Tentang :

Berarti code number 0 disesuaikan dengan situasi, yaitu kalau cek file
ada/tidak, maka number error 0 itu maksudnya file ada sehingga selain 0
file tidak ada. Dan kalau cek file open/tidak, maka number error 0 itu
maksudnya file open sehingga selain 0 file itu tertutup Benarkah itu sesuai
situasi yang diinginkan ?

> Tergantung baris perintahnya.
> Baris kode cek file ada atau tidak itu kan ada banyak. Jadi sesuaikan
dengan bunyi baris kodenya.
Kalau bunyi baris kodenya bisa menghasilkan error, maka ketika terjadi
error, err.number BUKAN 0.
Kalau tidak terjadi error, err.number akan bernilai 0.
Contoh :
> Cek file ada/tidak pakai : len(dir(file))<>0 -> tidak pernah
menghasilkan error, jadi err.number akan seperti sesaat sebelum baris cek
itu diproses.
> Cek file ada/tidak pakai : open sfile for blabla -> error akan muncul
kalau file tidak ada atau option blabla (setelah for) itu menuntut harus
exclusive
Tuh kan.. ada banyak kondisi...
Jawaban pertanyaan Anda yang seperti itu selamanya adalah 'tergantung baris
perintahnya'

Regards,
Kid

On Sun, Mar 17, 2019 at 7:37 PM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
[belajar-excel] <belajar-excel@yahoogroups.com> wrote:

>
>
> Terima kasih Mr. Kid atas jawabannya semoga amal baiknya diterima
> disisiNya. Amiin.
>
>
>
> Dari lampiran yang Mr. Kid kasih, disitu tertulis :
>
>
>
>
>
> Berarti code number 0 disesuaikan dengan situasi, yaitu kalau cek file
> ada/tidak, maka number error 0 itu maksudnya file ada sehingga selain 0
> file tidak ada. Dan kalau cek file open/tidak, maka number error 0 itu
> maksudnya file open sehingga selain 0 file itu tertutup Benarkah itu sesuai
> situasi yang diinginkan ?
>
>
>
> Terima kasih atas jawabannya.
>
> Tio
>
>
>
> *From:* belajar-excel@yahoogroups.com [mailto:
> belajar-excel@yahoogroups.com]
> *Sent:* 17 Maret 2019 12:26
> *To:* BeExcel
> *Subject:* Re: [belajar-excel] Perbedaan penulisan error handling
>
>
>
>
>
> Nambahin ini :
>
> Daftar kode error (err.number)
> <https://www.vba-market.com/list-of-vba-error-codes/>
>
> Sent from my smart enough phone
>
>
> On Mar 17, 2019, at 09:55, Agus nangagus@gmail.com [belajar-excel] <
> belajar-excel@yahoogroups.com> wrote:
>
>
>
> Dear Tio,
>
> Coba baca kembali Helepnya Excel:
>
>
>
> <cppgkdmhbkkjkcka.png>
>
>
>
> 1. Apa perbedaan error handling antara penulisan *Err.clear* dengan *on
> error goto -1* ? Tolong diberikan contohnya untuk kedua error handling
> tsb.
> >> Bukankah tulisannya sudah berbeda? apa yang ditanyakan? mungkin
> perbedaan ada pada angkanya, err.clear tidak ada angka sedangkan on error
> go to -1 ada angkanya .......... he he he he, jangan marah ya...
>
> >> *Err.clear *hanya menghapus nomor error yang sudah ada sebelumnya.
>
> >> *on error goto -1 *digunakan untuk menghapus exception object (error
> sebelumnya), kalau error sebelunya tidak dihapus maka error tersebut tidak
> dapat ditangani.
>
> Contoh:
>
> Sub Test1()
> Dim dblValue As Double
> On Error GoTo ErrHandler1
> dblValue = 1 / 0
> ErrHandler1:
> MsgBox "Iki error no 11"
> Err.Clear
> MsgBox "Kesalahan nomer: " & Err.Number & Vbcrlf & " harusnya muncul
> no 11, tetapi jadi 0 karena ada err.clear"
> On Error GoTo -1
> On Error GoTo ErrHandler2
> dblValue = "a"
> ErrHandler2:
> MsgBox Err.Number
> MsgBox "Iki error no 13"
> End Sub
>
> Untuk mengetahui perbedaannya silahkan buang err.clear dan onerror go to
> -1 secara bergantian!
>
> 2. Apakah penulisan error handling* on error goto -1 *akan mereset
> error di baris sebelumnya atau baris sesudahnya ? Tolong diberikan
> contohnya….
>
> >>> yang direset adalah error sebelumnya. Contoh di atas yaaaaaa.....
>
>
>
> 3. Tolong berikan penjelasan error number 0. Apakah pengertiannya
> disesuaikan dengan kondisi ?
>
> >>>>> Kelihatannya tidak ada deskripsi untuk error ini, nunggu penjelasan
> yang lebih kompeten yaa...
>
>
>
> Regard
>
> KenangAgus
>
>
>
>
>

Sun Mar 17, 2019 5:37 am (PDT) . Posted by:

"Tio Adi Bayu Adjie"

Ok. Berarti sudah benar ya cara penulisan saya untuk nangkap nomor errornya ? yaitu label Mylabel dulu baru label Keluar ? Soalnya ini saya sudah coba sebelumnya dan tidak bisa nangkap nomor errornya.
Maksud saya, kalau sudah benar cara penulisannya, berarti errornya bukan disitu. Makanya saya butuh kepastian cara penulisannya.

Terima kasih atas jawabannya.
Tio

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 17 Maret 2019 12:39
To: belajar-excel@yahoogroups.com
Subject: Re: [belajar-excel] Cara penulisan error handling


Coba saja...
Yang penting itu, sebelum pasang error handler (trap error), sudah tahu setiap baris program bisa error ketika apa saja.
Contoh : baris program buka file akan error kalau file yang mau dibuka tidak ada. Jadi butuh baris program validasi jika memungkinkan. Kalau susah bikin validasi, bisa jadi error handler mampu membantu.
Barulah baris program buka file.

Sent from my smart enough phone

On Mar 17, 2019, at 02:19, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id<mailto:tio.adjie@ptssb.co.id> [belajar-excel] <belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups.com>> wrote:

Salam Be-Exceller.
Ini melanjutkan topik tentang cek file di server.

Kalau ada kasus VBA seperti ini :
Private sub ContohKodeSaya()

Dim Alamatfile as string

Dim Mywb as workbook,Wbbaru as workbook

Dim wbbaruSh as worksheet,MywbSh as worksheet


On error goto Keluar
Alamatfile="D:\\myfolder&#92;mysubfolder&#92;namafilesaya.xlsx"
'''Buka file dari server
BukaFile Alamatfile,"PasswordSaya&quot;
Set Mywb=ThisWorkbook
Set Wbbaru=workbooks("namafilesaya.xlsx")
Wbbaru.activate
Set WbbaruSh=Wbbaru.worksheets("mySheet")
With WbbaruSh
.Cells(1,1).value="XXX"
'''Code lain…..….
End with
Mywb.activate
Set MywbSh=Mywb.worksheets("mySheetJuga")
With MywbSh
.Cells(1,1).value="YYY"
'''Code lain…
End with
Wbbaru.close true ---------------> Saya selalu error disini.

Set mywb=nothing
Set wbbaru=nothing
Set wbbaruSh=nothing
Set MywbSh=nothing

Keluar:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Err.Clear
On Error GoTo 0

End sub

Pertanyaannya :
Karena baris Wbbaru.close true selalu error, maka saya mau menangkap nomor Error nya sehingga bisa dihandle.
Bagaimana cara penulisannya kalau dengan kondisi diatas (multiple error handling). Apakah yang benar seperti ini ?(Yaitu dengan 2 error handling, Mylabel dan Keluar)

Private sub ContohKodeSaya()

Dim Alamatfile as string

Dim Mywb as workbook,Wbbaru as workbook

Dim wbbaruSh as worksheet,MywbSh as worksheet


On error goto Keluar
Alamatfile="D:\\myfolder&#92;mysubfolder&#92;namafilesaya.xlsx"
'''Buka file dari server
BukaFile Alamatfile,"PasswordSaya&quot;
Set Mywb=ThisWorkbook
Set Wbbaru=workbooks("namafilesaya.xlsx")
Wbbaru.activate
Set WbbaruSh=Wbbaru.worksheets("mySheet")
With WbbaruSh
.Cells(1,1).value="XXX"
'''Code lain…..….
End with
Mywb.activate
Set MywbSh=Mywb.worksheets("mySheetJuga")
With MywbSh
.Cells(1,1).value="YYY"
'''Code lain…
End with
On error goto Mylabel
Wbbaru.close true

Set mywb=nothing
Set wbbaru=nothing
Set wbbaruSh=nothing
Set MywbSh=nothing

Exit sub

Mylabel:
Msgbox "Nomor Errornya :" & Err.number &" dengan deskripsi error sbb : " & Err.description

Keluar:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Err.Clear
On Error GoTo 0

End sub

Terima kasih atas bimbingannya semoga amal baiknya diterima disisiNya. Amiin.
Tio

Sun Mar 17, 2019 2:41 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Coba semua baris On error di-off-kan dulu, lalu coba file untuk buka
berbagai kondisi file data (coba saat sudah dibuka user lain, coba saat
tidak ada yang buka, coba saat dibuka sendiri, dsb), lalu perhatikan error
yang terjadi dan karena apa.
Kalau sudah tahu karena apa, butuh pesan atau tidak.
Yang butuh pesan, on error nya goto mylabel
Yang gak butuh pesan, on error nya goto keluar

Baris kode yang ada itu sekilas saja sudah tampak bahwa sumber error-nya
bisa jadi di baris-baris kode yang Anda tulis dengan 'code lain itu, karena
disana bisa jadi ada baris on error yang bikin masalah.
Karena on error goto Keluar di paling atas sudah menghandle error akibat
Anda mengactivate workbook yang belum terbuka (misal user gak mau mencoba
membuka ulang setelah sekian ratus kali gak berhasil buka).
Baris error setelah baris itu pun (misal ketika sudah berhasil buka
workbook, akan di-handle oleh on error goto keluar (langsung ke label
keluar)
Jadi baris yang dikatakan selalu terjadi error di baris itu, sebenarnya
tidak pernah terjadi kalau tidak ada bagian baris kode 'code lain Anda itu.
Dan nggak perlu repot-repot bikin on orror baru.

Pertanyaannya kan, 'Kenapa bisa begitu ?'
> karena Anda memakai error handler secara serampangan, dengan tidak
menganalisa setiap kemungkinan error yang muncul dari setiap (SETIAP loh
ya) baris yang ada itu apa saja dan sudahkah dihandle oleh error handler
sebelum baris itu.

Jadi, di-troubleshoot pun akan sulit karena sama saja Anda harus
menjelaskan secara rinci tugas setiap baris kode yang dibuat.

Regards,
Kid

On Sun, Mar 17, 2019 at 7:37 PM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
[belajar-excel] <belajar-excel@yahoogroups.com> wrote:

>
>
> Ok. Berarti sudah benar ya cara penulisan saya untuk nangkap nomor
> errornya ? yaitu label *Mylabel* dulu baru label *Keluar* ? Soalnya ini
> saya sudah coba sebelumnya dan tidak bisa nangkap nomor errornya.
>
> Maksud saya, kalau sudah benar cara penulisannya, berarti errornya bukan
> disitu. Makanya saya butuh kepastian cara penulisannya.
>
>
>
> Terima kasih atas jawabannya.
>
> Tio
>
>
>
> *From:* belajar-excel@yahoogroups.com [mailto:
> belajar-excel@yahoogroups.com]
> *Sent:* 17 Maret 2019 12:39
> *To:* belajar-excel@yahoogroups.com
> *Subject:* Re: [belajar-excel] Cara penulisan error handling
>
>
>
>
>
> Coba saja...
> Yang penting itu, sebelum pasang error handler (trap error), sudah tahu
> setiap baris program bisa error ketika apa saja.
>
> Contoh : baris program buka file akan error kalau file yang mau dibuka
> tidak ada. Jadi butuh baris program validasi jika memungkinkan. Kalau susah
> bikin validasi, bisa jadi error handler mampu membantu.
>
> Barulah baris program buka file.
>
> Sent from my smart enough phone
>
>
> On Mar 17, 2019, at 02:19, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
> [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
>
>
>
> Salam Be-Exceller.
>
> Ini melanjutkan topik tentang cek file di server.
>
>
>
> Kalau ada kasus VBA seperti ini :
>
> Private sub ContohKodeSaya()
>
> Dim Alamatfile as string
>
> Dim Mywb as workbook,Wbbaru as workbook
>
> Dim wbbaruSh as worksheet,MywbSh as worksheet
>
>
>
> On error goto Keluar
>
> Alamatfile="D:\\myfolder&#92;mysubfolder&#92;namafilesaya.xlsx"
>
> '''Buka file dari server
>
> BukaFile Alamatfile,"PasswordSaya&quot;
>
> Set Mywb=ThisWorkbook
>
> Set Wbbaru=workbooks("namafilesaya.xlsx")
>
> Wbbaru.activate
>
> Set WbbaruSh=Wbbaru.worksheets("mySheet")
>
> With WbbaruSh
>
> .Cells(1,1).value="XXX"
>
> '''Code lain…..….
>
> End with
>
> Mywb.activate
>
> Set MywbSh=Mywb.worksheets("mySheetJuga")
>
> With MywbSh
>
> .Cells(1,1).value="YYY"
>
> '''Code lain…
>
> End with
>
> *Wbbaru.close true* -------------à *Saya selalu error disini.. *
>
>
>
> Set mywb=nothing
>
> Set wbbaru=nothing
>
> Set wbbaruSh=nothing
>
> Set MywbSh=nothing
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
>
>
> End sub
>
>
>
> Pertanyaannya :
>
> Karena baris *Wbbaru.close true *selalu error, maka saya mau menangkap
> nomor Error nya sehingga bisa dihandle.
>
> Bagaimana cara penulisannya kalau dengan kondisi diatas (multiple error
> handling). Apakah yang benar seperti ini ?(Yaitu dengan 2 error handling,
> Mylabel dan Keluar)
>
>
>
> Private sub ContohKodeSaya()
>
> Dim Alamatfile as string
>
> Dim Mywb as workbook,Wbbaru as workbook
>
> Dim wbbaruSh as worksheet,MywbSh as worksheet
>
>
>
> On error goto Keluar
>
> Alamatfile="D:\\myfolder&#92;mysubfolder&#92;namafilesaya.xlsx"
>
> '''Buka file dari server
>
> BukaFile Alamatfile,"PasswordSaya&quot;
>
> Set Mywb=ThisWorkbook
>
> Set Wbbaru=workbooks("namafilesaya.xlsx")
>
> Wbbaru.activate
>
> Set WbbaruSh=Wbbaru.worksheets("mySheet")
>
> With WbbaruSh
>
> .Cells(1,1).value="XXX"
>
> '''Code lain…..….
>
> End with
>
> Mywb.activate
>
> Set MywbSh=Mywb.worksheets("mySheetJuga")
>
> With MywbSh
>
> .Cells(1,1).value="YYY"
>
> '''Code lain…
>
> End with
>
> *On error goto Mylabel*
>
> *Wbbaru.close true*
>
>
>
> Set mywb=nothing
>
> Set wbbaru=nothing
>
> Set wbbaruSh=nothing
>
> Set MywbSh=nothing
>
>
>
> Exit sub
>
>
>
> Mylabel:
>
> Msgbox "Nomor Errornya :" & Err.number &" dengan deskripsi error
> sbb : " & Err.description
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
>
>
> End sub
>
>
>
> Terima kasih atas bimbingannya semoga amal baiknya diterima disisiNya.
> Amiin.
>
> Tio
>
>
>

Sun Mar 17, 2019 3:09 pm (PDT) . Posted by:

"Tio Adi Bayu Adjie"

Iya Mr. Kid. Sepertinya memang begitu. Karena saya bikin label keluar dengan tambahan saya sendiri. Saya buat label Keluar dengan diakhiri on error goto 0.
Kalau dilihat di code saya sebelumnya, tertulis :
Keluar:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Err.Clear
On Error GoTo 0 ''====> Ini yang buat proses berikutnya jadi terhenti, dimana seharusnya jalan terus ke kode berikutnya. Saya rubah jadi resume next.
''======
Saya coba buat simulasi bikin error , dan kalau pakai resume next (bukan On error goto 0), proses berjalan terus ke kode berikutnya.
Terima kasih Mr. Kid. Saya kabari lagi setelah saya coba ke kondisi yang sesungguhnya.


From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 18 Maret 2019 5:38
To: BeExcel
Subject: Re: [belajar-excel] Cara penulisan error handling


Coba semua baris On error di-off-kan dulu, lalu coba file untuk buka berbagai kondisi file data (coba saat sudah dibuka user lain, coba saat tidak ada yang buka, coba saat dibuka sendiri, dsb), lalu perhatikan error yang terjadi dan karena apa.
Kalau sudah tahu karena apa, butuh pesan atau tidak.
Yang butuh pesan, on error nya goto mylabel
Yang gak butuh pesan, on error nya goto keluar

Baris kode yang ada itu sekilas saja sudah tampak bahwa sumber error-nya bisa jadi di baris-baris kode yang Anda tulis dengan 'code lain itu, karena disana bisa jadi ada baris on error yang bikin masalah.
Karena on error goto Keluar di paling atas sudah menghandle error akibat Anda mengactivate workbook yang belum terbuka (misal user gak mau mencoba membuka ulang setelah sekian ratus kali gak berhasil buka).
Baris error setelah baris itu pun (misal ketika sudah berhasil buka workbook, akan di-handle oleh on error goto keluar (langsung ke label keluar)
Jadi baris yang dikatakan selalu terjadi error di baris itu, sebenarnya tidak pernah terjadi kalau tidak ada bagian baris kode 'code lain Anda itu.. Dan nggak perlu repot-repot bikin on orror baru.

Pertanyaannya kan, 'Kenapa bisa begitu ?'
> karena Anda memakai error handler secara serampangan, dengan tidak menganalisa setiap kemungkinan error yang muncul dari setiap (SETIAP loh ya) baris yang ada itu apa saja dan sudahkah dihandle oleh error handler sebelum baris itu.

Jadi, di-troubleshoot pun akan sulit karena sama saja Anda harus menjelaskan secara rinci tugas setiap baris kode yang dibuat.

Regards,
Kid



On Sun, Mar 17, 2019 at 7:37 PM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id<mailto:tio.adjie@ptssb.co.id> [belajar-excel] <belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups.com>> wrote:

Ok. Berarti sudah benar ya cara penulisan saya untuk nangkap nomor errornya ? yaitu label Mylabel dulu baru label Keluar ? Soalnya ini saya sudah coba sebelumnya dan tidak bisa nangkap nomor errornya.
Maksud saya, kalau sudah benar cara penulisannya, berarti errornya bukan disitu. Makanya saya butuh kepastian cara penulisannya.

Terima kasih atas jawabannya.
Tio

From: belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups..com> [mailto:belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups.com>]
Sent: 17 Maret 2019 12:39
To: belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups.com>
Subject: Re: [belajar-excel] Cara penulisan error handling


Coba saja...
Yang penting itu, sebelum pasang error handler (trap error), sudah tahu setiap baris program bisa error ketika apa saja.
Contoh : baris program buka file akan error kalau file yang mau dibuka tidak ada. Jadi butuh baris program validasi jika memungkinkan. Kalau susah bikin validasi, bisa jadi error handler mampu membantu.
Barulah baris program buka file.

Sent from my smart enough phone

On Mar 17, 2019, at 02:19, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id<mailto:tio.adjie@ptssb.co.id> [belajar-excel] <belajar-excel@yahoogroups.com<mailto:belajar-excel@yahoogroups.com>> wrote:

Salam Be-Exceller.
Ini melanjutkan topik tentang cek file di server.

Kalau ada kasus VBA seperti ini :
Private sub ContohKodeSaya()

Dim Alamatfile as string

Dim Mywb as workbook,Wbbaru as workbook

Dim wbbaruSh as worksheet,MywbSh as worksheet


On error goto Keluar
Alamatfile="D:\\myfolder&#92;mysubfolder&#92;namafilesaya.xlsx"
'''Buka file dari server
BukaFile Alamatfile,"PasswordSaya&quot;
Set Mywb=ThisWorkbook
Set Wbbaru=workbooks("namafilesaya.xlsx")
Wbbaru.activate
Set WbbaruSh=Wbbaru.worksheets("mySheet")
With WbbaruSh
.Cells(1,1).value="XXX"
'''Code lain…..….
End with
Mywb.activate
Set MywbSh=Mywb.worksheets("mySheetJuga")
With MywbSh
.Cells(1,1).value="YYY"
'''Code lain…
End with
Wbbaru.close true ---------------> Saya selalu error disini.

Set mywb=nothing
Set wbbaru=nothing
Set wbbaruSh=nothing
Set MywbSh=nothing

Keluar:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Err.Clear
On Error GoTo 0

End sub

Pertanyaannya :
Karena baris Wbbaru.close true selalu error, maka saya mau menangkap nomor Error nya sehingga bisa dihandle.
Bagaimana cara penulisannya kalau dengan kondisi diatas (multiple error handling). Apakah yang benar seperti ini ?(Yaitu dengan 2 error handling, Mylabel dan Keluar)

Private sub ContohKodeSaya()

Dim Alamatfile as string

Dim Mywb as workbook,Wbbaru as workbook

Dim wbbaruSh as worksheet,MywbSh as worksheet


On error goto Keluar
Alamatfile="D:\\myfolder&#92;mysubfolder&#92;namafilesaya.xlsx"
'''Buka file dari server
BukaFile Alamatfile,"PasswordSaya&quot;
Set Mywb=ThisWorkbook
Set Wbbaru=workbooks("namafilesaya.xlsx")
Wbbaru.activate
Set WbbaruSh=Wbbaru.worksheets("mySheet")
With WbbaruSh
.Cells(1,1).value="XXX"
'''Code lain…..….
End with
Mywb.activate
Set MywbSh=Mywb.worksheets("mySheetJuga")
With MywbSh
.Cells(1,1).value="YYY"
'''Code lain…
End with
On error goto Mylabel
Wbbaru.close true

Set mywb=nothing
Set wbbaru=nothing
Set wbbaruSh=nothing
Set MywbSh=nothing

Exit sub

Mylabel:
Msgbox "Nomor Errornya :" & Err.number &" dengan deskripsi error sbb : " & Err.description

Keluar:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Err.Clear
On Error GoTo 0

End sub

Terima kasih atas bimbingannya semoga amal baiknya diterima disisiNya. Amiin.
Tio

Sun Mar 17, 2019 3:12 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Analisa Anda itu kurang tepat.
On error goto 0 nya ada di akhir prosedur kok dituding jadi penyebab
masalah.
Kasihan si on error goto 0.
On error goto 0 di akhir prosedur itu tidak bikin masalah apa-apa.
Jangan-jangan Anda yang bermasalah dalam menyusun alur prosesnya...
hmmm..

ya sudah, atur saja deh

On Mon, Mar 18, 2019 at 5:10 AM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
[belajar-excel] <belajar-excel@yahoogroups.com> wrote:

>
>
> Iya Mr. Kid. Sepertinya memang begitu. Karena saya bikin label keluar
> dengan tambahan saya sendiri. Saya buat label Keluar dengan diakhiri *on
> error goto 0*.
>
> Kalau dilihat di code saya sebelumnya, tertulis :
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> *On Error GoTo 0 ''==**è * Ini yang buat proses berikutnya jadi
> terhenti, dimana seharusnya jalan terus ke kode berikutnya. Saya rubah
> jadi* resume next. *
>
> *''======*
>
> Saya coba buat simulasi bikin error , dan kalau pakai resume next (bukan
> On error goto 0), proses berjalan terus ke kode berikutnya.
>
> Terima kasih Mr. Kid. Saya kabari lagi setelah saya coba ke kondisi yang
> sesungguhnya.
>
>
>
>
>
> *From:* belajar-excel@yahoogroups.com [mailto:
> belajar-excel@yahoogroups.com]
> *Sent:* 18 Maret 2019 5:38
> *To:* BeExcel
> *Subject:* Re: [belajar-excel] Cara penulisan error handling
>
>
>
>
>
> Coba semua baris On error di-off-kan dulu, lalu coba file untuk buka
> berbagai kondisi file data (coba saat sudah dibuka user lain, coba saat
> tidak ada yang buka, coba saat dibuka sendiri, dsb), lalu perhatikan error
> yang terjadi dan karena apa.
>
> Kalau sudah tahu karena apa, butuh pesan atau tidak.
>
> Yang butuh pesan, on error nya goto mylabel
>
> Yang gak butuh pesan, on error nya goto keluar
>
>
>
> Baris kode yang ada itu sekilas saja sudah tampak bahwa sumber error-nya
> bisa jadi di baris-baris kode yang Anda tulis dengan 'code lain itu, karena
> disana bisa jadi ada baris on error yang bikin masalah.
>
> Karena on error goto Keluar di paling atas sudah menghandle error akibat
> Anda mengactivate workbook yang belum terbuka (misal user gak mau mencoba
> membuka ulang setelah sekian ratus kali gak berhasil buka).
>
> Baris error setelah baris itu pun (misal ketika sudah berhasil buka
> workbook, akan di-handle oleh on error goto keluar (langsung ke label
> keluar)
>
> Jadi baris yang dikatakan selalu terjadi error di baris itu, sebenarnya
> tidak pernah terjadi kalau tidak ada bagian baris kode 'code lain Anda itu.
> Dan nggak perlu repot-repot bikin on orror baru.
>
>
>
> Pertanyaannya kan, 'Kenapa bisa begitu ?'
>
> > karena Anda memakai error handler secara serampangan, dengan tidak
> menganalisa setiap kemungkinan error yang muncul dari setiap (SETIAP loh
> ya) baris yang ada itu apa saja dan sudahkah dihandle oleh error handler
> sebelum baris itu.
>
>
>
> Jadi, di-troubleshoot pun akan sulit karena sama saja Anda harus
> menjelaskan secara rinci tugas setiap baris kode yang dibuat.
>
>
>
> Regards,
>
> Kid
>
>
>
>
>
>
>
> On Sun, Mar 17, 2019 at 7:37 PM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
> [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
>
>
>
> Ok. Berarti sudah benar ya cara penulisan saya untuk nangkap nomor
> errornya ? yaitu label *Mylabel* dulu baru label *Keluar* ? Soalnya ini
> saya sudah coba sebelumnya dan tidak bisa nangkap nomor errornya.
>
> Maksud saya, kalau sudah benar cara penulisannya, berarti errornya bukan
> disitu. Makanya saya butuh kepastian cara penulisannya.
>
>
>
> Terima kasih atas jawabannya.
>
> Tio
>
>
>
> *From:* belajar-excel@yahoogroups.com <belajar-excel@yahoogroups..com>
> [mailto:belajar-excel@yahoogroups.com]
> *Sent:* 17 Maret 2019 12:39
> *To:* belajar-excel@yahoogroups.com
> *Subject:* Re: [belajar-excel] Cara penulisan error handling
>
>
>
>
>
> Coba saja...
> Yang penting itu, sebelum pasang error handler (trap error), sudah tahu
> setiap baris program bisa error ketika apa saja.
>
> Contoh : baris program buka file akan error kalau file yang mau dibuka
> tidak ada. Jadi butuh baris program validasi jika memungkinkan. Kalau susah
> bikin validasi, bisa jadi error handler mampu membantu.
>
> Barulah baris program buka file.
>
> Sent from my smart enough phone
>
>
> On Mar 17, 2019, at 02:19, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
> [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
>
>
>
> Salam Be-Exceller.
>
> Ini melanjutkan topik tentang cek file di server.
>
>
>
> Kalau ada kasus VBA seperti ini :
>
> Private sub ContohKodeSaya()
>
> Dim Alamatfile as string
>
> Dim Mywb as workbook,Wbbaru as workbook
>
> Dim wbbaruSh as worksheet,MywbSh as worksheet
>
>
>
> On error goto Keluar
>
> Alamatfile="D:\\myfolder&#92;mysubfolder&#92;namafilesaya.xlsx"
>
> '''Buka file dari server
>
> BukaFile Alamatfile,"PasswordSaya&quot;
>
> Set Mywb=ThisWorkbook
>
> Set Wbbaru=workbooks("namafilesaya.xlsx")
>
> Wbbaru.activate
>
> Set WbbaruSh=Wbbaru.worksheets("mySheet")
>
> With WbbaruSh
>
> .Cells(1,1).value="XXX"
>
> '''Code lain…..….
>
> End with
>
> Mywb.activate
>
> Set MywbSh=Mywb.worksheets("mySheetJuga")
>
> With MywbSh
>
> .Cells(1,1).value="YYY"
>
> '''Code lain…
>
> End with
>
> *Wbbaru.close true* -------------à *Saya selalu error disini.. *
>
>
>
> Set mywb=nothing
>
> Set wbbaru=nothing
>
> Set wbbaruSh=nothing
>
> Set MywbSh=nothing
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
>
>
> End sub
>
>
>
> Pertanyaannya :
>
> Karena baris *Wbbaru.close true *selalu error, maka saya mau menangkap
> nomor Error nya sehingga bisa dihandle.
>
> Bagaimana cara penulisannya kalau dengan kondisi diatas (multiple error
> handling). Apakah yang benar seperti ini ?(Yaitu dengan 2 error handling,
> Mylabel dan Keluar)
>
>
>
> Private sub ContohKodeSaya()
>
> Dim Alamatfile as string
>
> Dim Mywb as workbook,Wbbaru as workbook
>
> Dim wbbaruSh as worksheet,MywbSh as worksheet
>
>
>
> On error goto Keluar
>
> Alamatfile="D:\\myfolder&#92;mysubfolder&#92;namafilesaya.xlsx"
>
> '''Buka file dari server
>
> BukaFile Alamatfile,"PasswordSaya&quot;
>
> Set Mywb=ThisWorkbook
>
> Set Wbbaru=workbooks("namafilesaya.xlsx")
>
> Wbbaru.activate
>
> Set WbbaruSh=Wbbaru.worksheets("mySheet")
>
> With WbbaruSh
>
> .Cells(1,1).value="XXX"
>
> '''Code lain…..….
>
> End with
>
> Mywb.activate
>
> Set MywbSh=Mywb.worksheets("mySheetJuga")
>
> With MywbSh
>
> .Cells(1,1).value="YYY"
>
> '''Code lain…
>
> End with
>
> *On error goto Mylabel*
>
> *Wbbaru.close true*
>
>
>
> Set mywb=nothing
>
> Set wbbaru=nothing
>
> Set wbbaruSh=nothing
>
> Set MywbSh=nothing
>
>
>
> Exit sub
>
>
>
> Mylabel:
>
> Msgbox "Nomor Errornya :" & Err.number &" dengan deskripsi error
> sbb : " & Err.description
>
>
>
> Keluar:
>
> Application.Calculation = xlCalculationAutomatic
>
> Application.ScreenUpdating = True
>
> Application.DisplayAlerts = True
>
> Err.Clear
>
> On Error GoTo 0
>
>
>
> End sub
>
>
>
> Terima kasih atas bimbingannya semoga amal baiknya diterima disisiNya.
> Amiin.
>
> Tio
>
>
>

Sun Mar 17, 2019 5:38 am (PDT) . Posted by:

"Tio Adi Bayu Adjie"

Terima kasih mas KenangAgus atas jawabannya. Semoga amal baiknya diterima disisiNya. Amiin.

Kalau begitu, kenapa ya ada error tersebut sehingga file tidak bisa di simpan ? Sementara memory yang digunakan Excel cuma 27 K ?

Terima kasih atas jawabannya.
Tio

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 17 Maret 2019 9:19
To: belajar-excel@yahoogroups.com
Subject: Re: [belajar-excel] Parameter yang dilihat untuk penggunaan memory [2 Attachments]


Dear Tio,

A merupakan Memory yang sedang digunakan Excel, sedangkan B merupakan jumlah memory keseluruhan yang digunakan Komputer
Lihat saja memory habis digunakan untuk program firefox.
Regard
NangAgus
On 3/17/2019 03:22, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id<mailto:tio.adjie@ptssb.co.id> [belajar-excel] wrote:

Salam Be-Exceller.
[mailbox:///E:/File%20Email/NangAgusGmail/Inbox?number=955339754&header=quotebody&part=1.2&filename=image001.png]
Mau tanya.

1. Parameter yang mana yang ditunjukkan huruf A atau B yang dijadikan acuan untuk melihat penggunaan memory ?
Sebelumnya saya berpikir untuk penggunaan memory adalah di huruf A yaitu untuk gambar tersebut adalah sebesar 27.156 K.
Tapi pernah dalam suatu kasus, saya kekurangan memory sehingga tidak bisa save file padahal huruf A tersebut hanya 27 K. Apakah huruf B juga harus dijadikan parameter juga dalam penggunaan memory atau ada parameter lain ataukah ada sebab lain ?


2. Berapa sebaiknya huruf A dan B yang ideal supaya tidak kekurangan memory ?


Ini pesan errornya
[mailbox:///E:/File%20Email/NangAgusGmail/Inbox?number=955339754&header=quotebody&part=1.3&filename=image003.jpg]

Mohon bimbingannya. Kenapa kekurangan memory padahal huruf A cuma sebesar 27 K.

Terima kasih . semoga amal baiknya diterima disisiNya. Amiin.

Tio










Sun Mar 17, 2019 2:48 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Ini gimana to...

misal RAM 2 GB = 2000 MB,
sudah terpakai 95% (1900 MB) didalam 95% sudah ada Excel Workbook 27 MB,
dan program lain
cuma sisa 100 MB

Aplikasi Excel bekerja membutuhkan sekitar 750 MB (max), seperti saat akan
menyimpan data yang ada di workbook (yang ada di 95% dan hanya sebesar 27
MB itu) butuh 250 MB.
Berarti total yang dibutuhkan Excel saat save (misal loh ya), Workbook 27
MB (dah di dalam 95% RAM terpakai) + 250 MB (belum masuk di 95% RAM
terpakai)
berarti kan kurang RAM 150 MB (sisa RAM hanya 5% sebesar 100 MB - kebutuhan
Excel 250 MB = -150 MB).
Excel pasti bilang gak bisa simpan karena tidak cukup ruang untuk kerja.

Regards,
Kid

On Sun, Mar 17, 2019 at 7:38 PM Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
[belajar-excel] <belajar-excel@yahoogroups.com> wrote:

>
>
> Terima kasih mas KenangAgus atas jawabannya. Semoga amal baiknya diterima
> disisiNya. Amiin.
>
>
>
> Kalau begitu, kenapa ya ada error tersebut sehingga file tidak bisa di
> simpan ? Sementara memory yang digunakan Excel cuma 27 K ?
>
>
>
> Terima kasih atas jawabannya.
>
> Tio
>
>
>
> *From:* belajar-excel@yahoogroups.com [mailto:
> belajar-excel@yahoogroups.com]
> *Sent:* 17 Maret 2019 9:19
> *To:* belajar-excel@yahoogroups.com
> *Subject:* Re: [belajar-excel] Parameter yang dilihat untuk penggunaan
> memory [2 Attachments]
>
>
>
>
>
> Dear Tio,
>
>
>
> A merupakan Memory yang sedang digunakan Excel, sedangkan B merupakan
> jumlah memory keseluruhan yang digunakan Komputer
>
> Lihat saja memory habis digunakan untuk program firefox.
>
> Regard
>
> NangAgus
>
> On 3/17/2019 03:22, Tio Adi Bayu Adjie tio.adjie@ptssb.co.id
> [belajar-excel] wrote:
>
>
>
> Salam Be-Exceller.
>
> [image:
> mailbox:///E:/File%20Email/NangAgusGmail/Inbox?number=955339754&header=quotebody&part=1.2&filename=image001.png]
>
> Mau tanya.
>
> 1. Parameter yang mana yang ditunjukkan huruf A atau B yang
> dijadikan acuan untuk melihat penggunaan memory ?
>
> Sebelumnya saya berpikir untuk penggunaan memory adalah di huruf A yaitu
> untuk gambar tersebut adalah sebesar 27.156 K.
>
> Tapi pernah dalam suatu kasus, saya kekurangan memory sehingga tidak bisa
> save file padahal huruf A tersebut hanya 27 K. Apakah huruf B juga harus
> dijadikan parameter juga dalam penggunaan memory atau ada parameter lain
> ataukah ada sebab lain ?
>
>
>
> 2. Berapa sebaiknya huruf A dan B yang ideal supaya tidak
> kekurangan memory ?
>
>
>
> Ini pesan errornya
>
> [image:
> mailbox:///E:/File%20Email/NangAgusGmail/Inbox?number=955339754&header=quotebody&part=1.3&filename=image003.jpg]
>
>
>
> Mohon bimbingannya. Kenapa kekurangan memory padahal huruf A cuma sebesar
> 27 K.
>
>
>
> Terima kasih . semoga amal baiknya diterima disisiNya. Amiin.
>
>
>
> Tio
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

Sun Mar 17, 2019 5:48 am (PDT) . Posted by:

"Tio Adi Bayu Adjie"

Terima kasih mas KenangAgus atas jawabannya. Sudah saya coba error handling nya dengan menghilangkan err.clear dan on error goto -1 secara bergantian. Semoga amal baiknya diterima disisiNya. Amiin…

Tio

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: 17 Maret 2019 10:55
To: belajar-excel@yahoogroups.com
Subject: Re: [belajar-excel] Perbedaan penulisan error handling [1 Attachment]


Dear Tio,
Coba baca kembali Helepnya Excel:

[cid:image001.png@01D4DCFC.05596140]

1. Apa perbedaan error handling antara penulisan Err.clear dengan on error goto -1 ? Tolong diberikan contohnya untuk kedua error handling tsb.
>> Bukankah tulisannya sudah berbeda? apa yang ditanyakan? mungkin perbedaan ada pada angkanya, err.clear tidak ada angka sedangkan on error go to -1 ada angkanya .......... he he he he, jangan marah ya...
>> Err.clear hanya menghapus nomor error yang sudah ada sebelumnya.
>> on error goto -1 digunakan untuk menghapus exception object (error sebelumnya), kalau error sebelunya tidak dihapus maka error tersebut tidak dapat ditangani.
Contoh:
Sub Test1()
Dim dblValue As Double
On Error GoTo ErrHandler1
dblValue = 1 / 0
ErrHandler1:
MsgBox "Iki error no 11"
Err.Clear
MsgBox "Kesalahan nomer: " & Err.Number & Vbcrlf & " harusnya muncul no 11, tetapi jadi 0 karena ada err.clear"
On Error GoTo -1
On Error GoTo ErrHandler2
dblValue = "a"
ErrHandler2:
MsgBox Err.Number
MsgBox "Iki error no 13"
End Sub

Untuk mengetahui perbedaannya silahkan buang err.clear dan onerror go to -1 secara bergantian!
2. Apakah penulisan error handling on error goto -1 akan mereset error di baris sebelumnya atau baris sesudahnya ? Tolong diberikan contohnya….
>>> yang direset adalah error sebelumnya. Contoh di atas yaaaaaa......

3. Tolong berikan penjelasan error number 0. Apakah pengertiannya disesuaikan dengan kondisi ?
>>>>> Kelihatannya tidak ada deskripsi untuk error ini, nunggu penjelasan yang lebih kompeten yaa...

Regard
KenangAgus


============================================================
Pojok Lowongan Kerja yang disediakan milis :
http://milis-belajar-excel.1048464.n5.nabble.com/Pojok-Lowongan-Kerja-f5725753.html
*** Posting lowongan kerja : ke link tersebut dan klik New Topic
============================================================
bergabung ke milis (subscribe), kirim mail kosong ke: belajar-excel-subscribe@yahoogroups.com
posting ke milis, kirimkan ke: belajar-excel@yahoogroups.com
berkunjung ke web milis : http://tech.groups.yahoo.com/group/belajar-excel/messages
melihat file archive / mendownload lampiran : http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di : http://milis-belajar-excel.1048464.n5.nabble.com/
menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com
keluar dari membership milis (UnSubscribe), kirim mail kosong ke : belajar-excel-unsubscribe@yahoogroups.com
---------------------------------------------------------------------

Tidak ada komentar:

Posting Komentar