Help macro? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

bachdiem

Thành viên mới
Tham gia
27/6/07
Bài viết
4
Được thích
0
Chao! minh chi moi tap tanh lap trinh de viet macro trong excel nhung minh bi vuong o bai lap trinh nhu the nay!
Minh co 2 file excel duong dan nhu o duoi:
E:Home.xls(sheet1)
E:HA.xls(sheet2)
Minh muon viet mot con macro ma co the chep mot cell trong sheet1 vao mot cell trong shee2. Nhung bat buoc ngay nao minh cung lam viec do ca, voi lai moi ngay cell o sheet2 lai them mot cua ngay hom truoc cho nen viec canh chinh vi tri chinh xac cho ca sheet2 minh khong lam duoc. O sheet1 thi vi tri row va column cua cell can copy khong thay doi.Minh phai lam sao. Minh co noi noi ham IsEmpty. Giup minh voi!
Day la doan code minh da viet:

Sub Copy1()

Dim xlApp
Dim xlBook
Dim xlSheet

Dim rng As Range
Dim lLastRow As Integer
Dim lLastCol As Integer

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("E:\Home.xls")
Set xlSheet = xlBook.Worksheets("sheet1")
xlApp.Visible = True
xlSheet.Range("X3:AB3").Copy ' luc nao vi tri cung nhu vay
Set xlBook = xlApp.Workbooks.Open("E:HA.xls")
Set xlSheet = xlBook.Worksheets("sheet2")

xlSheet.Activate

xlSheet.Range("C120:G120").Select' Day chi la cach doi pho vi ngay hom sau no se la G121:G121.

xlSheet.Paste
 
Bạn vui lòng đánh bài có dấu để mọi người có thể xem và góp ý cho bạn
 
Dim lLastRow As Integer, phần này khai báo mà sao không dùng
Bổ sung them đoạn này vào thử nhé.
.......
xlSheet.Activate
Cells(1,3).select
lLastRow = Range(Selection, Selection.End(xlDown)).Rows.Count
'xlSheet.Range("C120:G120").Select
xlSheet.Range("C:" & lLastRow +1 & ":G" & lLastRow +1).Select
.........
 
Cám ơn!

Nó vẫn không chạy bạn ơi. Thôi mình chỉ hỏi bây giờ làm sao mình có thể tìm ra duoc row cuối cùng bị empty. Chẳng hạn như là mình có 5 cộ và 6 dòng vậy làm cách nào mình tìm được dòng thứ 7 để mỗi ngày chép dữ liệu vào.
 
Tìm dòng cuối cùng trong cột A có dữ liệu
Mã:
dong_cuoi = Range("A1").End(xlDown).Row
 
chibi đã viết:
Tìm dòng cuối cùng trong cột A có dữ liệu
Mã:
dong_cuoi = Range("A1").End(xlDown).Row

Không nên bác ạ. Nếu ô A2 trống thì nó sẽ nhảy đến ô A3 đấy (trong khi ô cuối là A20 cơ)
Mà nên là :
dong_cuoi = Range("A65000").End(xlUp).Row
 
ThuNghi đã viết:
Dim lLastRow As Integer, phần này khai báo mà sao không dùng
Bổ sung them đoạn này vào thử nhé.
.......
xlSheet.Activate
Cells(1,3).select
lLastRow = Range(Selection, Selection.End(xlDown)).Rows.Count
'xlSheet.Range("C120:G120").Select
xlSheet.Range("C:" & lLastRow +1 & ":G" & lLastRow +1).Select
.........

Nên là :
xlSheet.Activate
lLastRow = Range("C65000").End(xlUp).Row +1
xlSheet.Range("C:" & lLastRow & ":G" & lLastRow).Select

Phải không bác !
 
Hi

Nhưng mà nó lại báo lỗi dòng này, về mặt cú pháp thì đúng nhưng về thuật toán thì hình như sai. Mình post nguyên bài lên cho bạn coi thử nha:
Sub Copy1()

Dim xlApp
Dim xlBook
Dim xlSheet
Dim lLastRow As Integer

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("E:\Home.xls")
Set xlSheet = xlBook.Worksheets("sheet1")
xlApp.Visible = True
xlSheet.Range("X3:AB3").Copy
Set xlBook = xlApp.Workbooks.Open("E:\Main.xls")
Set xlSheet = xlBook.Worksheets("sheet2")
xlSheet.Activate
lLastRow = Range("C65000").End(xlUp).Row + 1
xlSheet.Range("C:" & lLastRow & ":G" & lLastRow).Select 'báo lỗi dòng này.
'xlSheet.Range("C120:G120").Select

xlSheet.Paste
End Sub
 
chào!

Bạn có thể chỉ cho mình một trang web hay một cuốn sách, ebook download free dạy về cách viết macro không. Mình cám ơn rất nhiều. Vì mình cũng chưa hiểu rõ cho lắm. Chỉ là góp nhặt mỗi chỗ một chút.
 
Bạn copy code sau vào main.xls và chạy thử, cụ thể nên tham khảo file "copy du lieu tu file dong" của NVSON trên 4R này.
Sub Copy()
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.DisplayAlerts = False
End With
Dim xlApp
Dim xlBook
Dim xlSheet
Dim lLastRow As Integer
'mo file ho, va copy
Workbooks.Open Filename:="E:\home.xls"
Range("X3:AB3").Copy
'mo sheet2 main.xls
Windows("main.xls").Activate
Sheets("sheet2").Select
Range("c1").Select
'chon dong cuoi
lLastRow = Range("C65000").End(xlUp).Row + 1
'dan vao
Range("C" & lLastRow).Select
ActiveSheet.Paste

'dong file home
Windows("home.xls").Activate
Application.CutCopyMode = False
ActiveWindow.Close

With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
 
Web KT

Bài viết mới nhất

Back
Top Bottom