Di module :
Public Sub SetBook()
     dim dtTgl as date
     dim Wb as workbook
     dim sSht as string

    On Error Resume Next

  'sudah terbuka ?
  Set Wb = Workbooks("200912 Allocated Stock.xls")
   If err.number<>0 then
       'belum terbuka, oleh sebab itu muncul error
       'dihapus status errornya
       err.clear

       'cek sudah ada filenya ?
       if lenb( dir( "f:\data\200912 bla.xls") ) <> 0 then
      Set Wb = Workbooks.Open("f:\data\200912 bla.xls")
       else
          'hati-hati disini, jika path (F:\data) belum ada, tetap akan
muncul error
          'bisa dicek seperti cara di atas
          '     if lenb(dir("F:\data")) = 0 then
          '           'lakukan buat folder disini
          '     end if
          'jadi sampai sini pasti sudah ada foldernya.
          Set Wb = Workbooks.Add
          Wb.SaveAs Filename:= "f:\data\200912 bla.xls"
       end if
   end if

   'aktifkan wb set nama sheet
   Wb.Activate
   dttgl = now()
   sSht="ALS" & format$(dttgl,"dd")

   'Cek ada sheet dimaksud di wb gak ?
   Sheets(ssht).select
   if err.number <> 0 then       'muncul error = gak ada sheet ssht
         err.clear
         sheets.add after:= sheets(sheets.count)
         sheets(sheets.count).name = ssht
   end if

   'sampai sini, pasti sudah terbuka si workbook wb dan sudah ada si sheet
ssht

   'proses selanjutnya adalah copy paste
   'letakkan disini atau di prosedur lain, yang dipanggil dari sini atau
dari mana saja

   'diakhiri proses save dengan
   worksbooks.save
End Sub

di event commandbutton click
Public Sub CommandButton1_Click()
      SetBook
End Sub


Paket kode seperti ini sering digunakan dan tidak ada masalah.
Sepertinya masalah kode yang lalu (posting terakhir) adalah saat akan buat
sheet baru yang namanya sudah ada. Dari kode di atas, bisa digunakan
potongan kode dari cek sudah ada sheet atau belum.

Kid.

2009/12/2 Ahmad Zamroni <ahza...@gmail.com>

>
>
>  Trima kasih, Mr. Kid
>
>
>
> Belum jalan seperti seharusnya, malah di pembentukan file yang belum ada
> muncul error, di yang saya buat sebelumnya gak muncul.
>
> Permasalahan yang saya hadapi diantaranya adalah:
>
>
>
>     On Error Resume Next
>
>     Set Wb = Workbooks("200912 Allocated Stock.xls")
>
>     On Error GoTo 0
>
>     If Wb Is Nothing Then
>
>         On Error Resume Next
>
>         Set Wb = Workbooks.Open("C:\Users\ahzam\Documents\200912 Allocated
> Stock.xls")
>
>         On Error GoTo 0
>
>         If Wb Is Nothing Then
>
>             Set NewBook = Workbooks.Add
>
>             NewBook.SaveAs Filename:="C:\Users\ahzam\Documents\200912
> Allocated Stock.xls"
>
>         End If
>
>     End If
>
>
>
> Logikanya sih, pertama kali akan dicek apakah file 200912 Allocated
> Stock.xls aktif/terbuka?
>
> Jika tidak, maka akan dipanggil/dibuka file tersebut.
>
> Jika dipanggil *tidak datang*, maka artinya file itu belum lahir, sehingga
> perlu di-*create* dulu..
>
>
>
> Jika deretan coding di atas berjalan sebagaimana yang saya harapkan, maka
> sebenarnya yang berikut tidak diperlukan:
>
>
>
>     On Error Resume Next
>
>     Wb.Close SaveChanges:=True
>
>     On Error GoTo 0
>
>
>
> Kenapa harus saya tambahkan itu?
>
> Karena proses insert new sheet tidak jalan ketika file dalam keadaan
> terbuka.
>
>
>
> -zam-
>
>
>
> *From:* belajar-excel@yahoogroups.com [mailto:
> belajar-ex...@yahoogroups.com] *On Behalf Of *Mr. Kid
> *Sent:* Wednesday, December 02, 2009 1:11 PM
>
> *To:* belajar-excel@yahoogroups.com
> *Subject:* Re: [belajar-excel] copy and insert a sheet to other specify
> file/workbook
>
>
>
>
>
> Selamat Siang Mr. Zam.
>
> Sepertinya masalah ada pada peletakan kode (tapi ini kira-kira), karena
> belum bisa membuktikannya.
>
> Coba proses buat workbook baru termasuk save diletakkan pada sebuah module,
> tidak sebagai sebuah routine event object sheet. Kegiatan dalam object sheet
> ada beberapa batasan, yang belum tahu detil batasannya dimana saja.
>
> Ketika kode diletakkan diluar object sheet (dari class worksheet), maka
> kode bekerja sebagai pihak luar walau dipanggil oleh routine dalam object
> sheet.
>
> Jadi, kira-kira seperti ini (hanya copas dari yang ada) :
>
> di sebuah module :
>
>
> Public Sub SaveBook()
>
> Dim Wb As Workbook
>
> on error resume next
>
>   Set Wb = Workbooks("200912 Allocated Stock.xls")
>
>     On Error GoTo 0
>
>     If Wb Is Nothing Then
>
>         On Error Resume Next
>
>         Set Wb = Workbooks.Open("C:\Users\ahzam\Documents\200912 Allocated
> Stock.xls")
>
>         On Error GoTo 0
>
>         If Wb Is Nothing Then
>
>             Set NewBook = Workbooks.Add
>
>             NewBook.SaveAs Filename:="C:\Users\ahzam\Documents\200912
> Allocated Stock.xls"
>
>         End If
>
>     End If
>
>
> End Sub
>
>
> pada event commandbutton click di object sheet :
>
> Private Sub CommandButton1_Click()
>
> Dim Tgl As String
>
>
>
>     Tgl = Range("H1").Value
>
>     'panggil routine SaveBook untuk lakukan create/open lalu save
>
>     savebook
>
>     On Error Resume Next
>
>
>
>
>     Workbooks("200912 Allocated Stock.xls").Sheets.Add
> after:=Sheets(Sheets.Count)
>
>     ActiveSheet.Name = "ALS" & Left(Tgl, 2)
>
>     Tgl = ActiveSheet.Name
>
>
>
>     Application.DisplayAlerts = False
>
>     On Error Resume Next
>
>     Sheets("Sheet1").Delete
>
>     On Error GoTo 0
>
>     Application.DisplayAlerts = True
>
>
>
>     Workbooks("200912 File Order.xls").Sheets("ALS").Range("B:H").Copy
>
>     Workbooks("200912 Allocated
> Stock.xls").Sheets(Tgl).Range("B:H").PasteSpecial (xlPasteValues)
>
>     Workbooks("200912 Allocated
> Stock.xls").Sheets(Tgl).Range("B:H").PasteSpecial (xlPasteFormats)
>
>
>
>     On Error Resume Next
>
>     Wb.Close SaveChanges:=True
>
>     On Error GoTo 0
>
>
>
> End Sub
>  
>

Kirim email ke