Cara ini tentu sangat sederhana dengan logika cari lokasi file kemudian cari alamat sheet cari pula alamat range lalu buka lokasi tempat paste nya lalu paste berhasil tanpa membuka file sumber. Tahapan tersebut akan dibuat dengan coding seperti berikut. Silakan Anda buat satu buah Module dan copy paste coding dibawah ini
Sub CaraNgopyRange()
Dim AmbilData As Excel.Workbook
Dim AlamatRange As String
Dim TargetWorkbook As Excel.Workbook
Dim TargetSheet As Excel.Worksheet
Application.ScreenUpdating = FalseIngat, letakkan coding diatas kedalam module. coba perhatikan kode berikut ini berfungsi untuk
AlamatRange = "riwayat"
Set AmbilData = Workbooks.Open("F:\DATA\1. Mastur.xls") 'Silakan ganti alamat disini
AmbilData.Sheets("Sheet1").Range("riwayat").Copy
Set TargetWorkbook = ThisWorkbook
Set TargetSheet = TargetWorkbook.Sheets(1)
TargetSheet.Range("A2").PasteSpecial Paste:=xlPasteValues
TargetWorkbook.Names.Add AlamatRange, "='" & TargetSheet.Name & "'!" & Selection.Address
AmbilData.Close savechanges:=True
MsgBox ("Silakan klik OK")
Application.ScreenUpdating = False
End Sub
Set AmbilData = Workbooks.Open("F:\DATA\1. Mastur.xls") 'Silakan ganti alamat disini,hal ini merupakan pencarian alamat tempat target atau sumber penyimpanan file yang akan dicopy yaitu di drive F kemudian folder DATA dan nama file adalah 1. Mastur.xls
AmbilData.Sheets("Sheet1").Range("riwayat").CopyMaksudnya adalah file yang sudah diarahkan ke alamat tersebut akan dicopy tepatnya pada sheet1 dengan nama range "riwayat" tentunya Anda harus membuat Name Range terlebih dahulu pada excelnya silakan simak ulisan saya
[04] Cara Membuat Nama Range dan Bagaimana Cara Menggantinya
Langkah berikutnya silakan masuk kembali ke worksheet dan buat satu buah tombol atau CommandButton pada sheet kemudian arahkan macro pada name CaraNgopyData
Klik OK, silakan Ganti nama Commandbutton tersebut dengan tulisan "AmbilData" Hasilnya jika Anda klik tombol tersebut maka sebuah pesan akan muncul "Silakan klik OK"
Apabila Anda klik OK maka hasilnya semua data pada range "Riwayat" akan dicopy seperti gambar berikut ini
Berhasil.
Selamat mencoba dan semoga bermanfaat.
Terima kasih master tutornya bermanfaat ini yang saya carai.. Terus kemudian jika hasil kopiannya tersebut ditaruh pada Kolom yang tidak berurutan bagaimana. saya mecoba menggunakan format as table... terima kasih
BalasHapusuntuk file yang berextensi XLSM kok gak bisa
BalasHapusAmbilData.Sheets("Sheet1").Range("riwayat").Copy
BalasHapusini dari mana?
Data yang diambil berada di Sheet1 kemudian nama rangenya adalah "Riwayat" jika ketemu maka copy
HapusJika belum tahu cara membuat range klik saja alamat berikut ini
Hapushttp://www.excel-id.com/2015/02/cara-membuat-nama-range-dan-bagaimana.html?m=1
Coding "Riwayat" bisa disesuaikan saat membuat range
Sub rpt_HTML()
BalasHapusSheets("Olah Laporan").Select
Dim namawbHTML As String
namasheetHTML = Sheet2.Range("S89").Value
namawbHTML = ActiveWorkbook.Path & "\rpt_Temp\" & Sheet2.Range("S89").Value & "_" & Format(Now, "yymmddhhmmss") & ".htm"
Sheets("Olah Laporan").Copy
Sheets("Olah Laporan").Select
Sheets("Olah Laporan").Name = namasheetHTML
ActiveWorkbook.SaveAs filename:= _
namawbHTML, FileFormat:=xlHtml, _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
Dim HyperHTML As String
HyperHTML = namawbHTML
On Error Resume Next
ThisWorkbook.FollowHyperlink address:=HyperHTML ', NewWindow:=True true
If Err.Number <> 0 Then
MsgBox "Tekan tombol 'Yes' agar laporan bisa dibuka"
Exit Sub
End If
End Sub
Itu coding untuk format html,
Kalau kita mau menyimpan format excel bagai mana pak?
Terima kasih
Alamatrange, "="'&
BalasHapusMaksudny ap itu yahh...soalny sy eror disana
Alamatrange, "="'&
BalasHapusMaksudny ap itu yahh...soalny sy eror disana
kalau untuk membuka file windowsnya gimana ya, script di ataskan directorynya otomatis, saya mau directorynya kita yg milih
BalasHapusterima kasih sebelunnya
tidak berhasil melulu. bisa minta file contohnya ngak ?
BalasHapusSub CaraNgopyRange()
BalasHapusDim AmbilData As Excel.Workbook
Dim AlamatRange As String
Dim TargetWorkbook As Excel.Workbook
Dim TargetSheet As Excel.Worksheet
Application.ScreenUpdating = False
AlamatRange = "riwayat"
Set AmbilData = Workbooks.Open("D:\DATA\Mastur.xls")
AmbilData.Sheets("Sheet1").Range("riwayat").Copy
Set TargetWorkbook = ThisWorkbook
Set TargetSheet = TargetWorkbook.Sheets(1)
TargetSheet.Range("A2").PasteSpecial Paste:=xlPasteValues
TargetWorkbook.Names.Add AlamatRange, "='" & TargetSheet.Name & "'!" & Selection.Address
AmbilData.Close savechanges:=True
MsgBox ("Silakan klik OK")
Application.ScreenUpdating = False
End Sub
skripnya error disini
BalasHapusAmbilData.Sheets("Sheet1").Range("riwayat").Copy
Mohon bantuannya ya gan sy punya case seperti ini,
BalasHapusdalam satu folder sy punya 5 file dimana 4 file memuat master data dengan nama week1 week2 week3 dan week4 dan 1 data sebagia file reporting. Bagaimana codingan untuk vba.nya jika sy mau mengambil data dari file berbeda jika sy punya parameter data yg di ambil hanya week1 sampai week2 atau week3 sampai wee4 tergantung parameter yg sy tentukan tadi. Sebelumnya sy hanya bisa mengambil semua data saja pada satu folder untuk file-file tretentu sy blm bisa. Mohon pencerahannya
untuk copy data dengan banyak sheets pada workbook g mana itukan hanya untuk 1 sheet saja mohon penjelasan
BalasHapusKalau membuat vba vlookup antar workbook bagaimana?
BalasHapus