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.ad...@ptssb.co.id<mailto:tio.ad...@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-ex...@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.ad...@ptssb.co.id<mailto:tio.ad...@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..

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

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

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

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

End Select

End Function

Kenapa tidak berhasil ? Mohon bimbingannya.
Terima kasih.
Tio

  • [belajar-excel] C... Tio Adi Bayu Adjie tio.ad...@ptssb.co.id [belajar-excel]
    • Re: [belajar... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
      • RE: [bel... Tio Adi Bayu Adjie tio.ad...@ptssb.co.id [belajar-excel]
        • Re: ... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
        • Re: ... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
          • ... Tio Adi Bayu Adjie tio.ad...@ptssb.co.id [belajar-excel]
            • ... Iman Darusman idz.i...@yahoo.com [belajar-excel]
            • ... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
            • ... Agus nanga...@gmail.com [belajar-excel]
              • ... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]

Kirim email ke