Xin giúp đỡ cách làm file nhập xuất tồn kho bằng vba

Liên hệ QC

ducmagic88

Thành viên chính thức
Tham gia
14/4/20
Bài viết
65
Được thích
4
Em chào các bác ạ, các bác giúp em với, chả là em đã làm được file báo cáo nhập xuất tồn bằng hàm excel rồi giờ em muốn xử lý bằng code vba để tiện lợi hơn nhưng chưa biết xử lý như thế nào cả. Em mới học VBA nên còn nhiều cái chưa biết, em đăng lên đây các bác có hướng nào giúp em với ạ. Em cảm ơn các bác nhiều!
 

File đính kèm

  • File_BCNXT.xlsx
    494.4 KB · Đọc: 24
File NXT kho gồm các Sheet sau:
Sheet 1: Danh mục hàng hóa
Sheet 2: Danh mục khách hàng
Sheet 3: Danh mục kho hàng (nếu nhiều kho)
Sheet 4: Sheet Data (nhập phát sinh)
Sheet 5: Chi tiết theo mặt hàng
Sheet 6: Tổng hợp NXT
Sheet 7: In phiếu NX
 
Upvote 0
File NXT kho gồm các Sheet sau:
Sheet 1: Danh mục hàng hóa
Sheet 2: Danh mục khách hàng
Sheet 3: Danh mục kho hàng (nếu nhiều kho)
Sheet 4: Sheet Data (nhập phát sinh)
Sheet 5: Chi tiết theo mặt hàng
Sheet 6: Tổng hợp NXT
Sheet 7: In phiếu NX
file của em đã có rồi bác ạ, em đang tách riêng sheet data và BCNXT ra để hỏi về cách làm BCNXT thôi bác ạ
 
Upvote 0
Các Sheet có mối liên kết với nhau

Option Explicit

Sub tonghophh()
Dim ngaybd, ngaykt As Long
ngaybd = Sheet3.Range("THHH_NGAYBD") * 1
ngaykt = Sheet3.Range("THHH_NGAYKT") * 1
Dim cn As Object, rst As Object
Dim mySQL As String
Set cn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
If Val(Application.Version) < 12 Then
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"";"
Else
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"";"
End If
.Open
End With



mySQL = "select c2,c3,c4,sum(c5),sum(c6),sum(c7),sum(c8),sum(c9),sum(c9)*(sum(c6)+sum(c8))/(sum(c5)+sum(c7)),sum(c11) as c10," & _
"sum(c5)+sum(c7)-sum(c9),sum(c6)+sum(c8)-sum(c9)*(sum(c6)+sum(c8))/(sum(c5)+sum(c7)) from(" & _
"select ma_hang as c2,ten_hang as c3,dvt as c4,so_luong as c5,thanh_tien as c6,0 as c7,0 as c8,0 as c9,0 as c11 from DMHH where ma_hang is not null " & _
"Union all " & _
"select ma_hang as c2,ten_hang as c3,dvt as c4,iif(ngay*1<" & (ngaybd) & ",so_luong,0) as c5" & _
",iif(ngay*1<" & (ngaybd) & ",thanh_tien,0) as c6,iif((ngay*1>=" & (ngaybd) & ")*(ngay*1<=" & (ngaykt) & "),so_luong,0) as c7," & _
"iif((ngay*1>=" & (ngaybd) & ")*(ngay*1<=" & (ngaykt) & "),thanh_tien,0) as c8,0 as c9,0 as c11 from NK_NHAP where ma_hang is not null " & _
"Union all " & _
"select ma_hang as c2,ten_hang as c3,dvt as c4,iif(ngay*1<" & (ngaybd) & ",-so_luong,0) as c5" & _
",iif(ngay*1<" & (ngaybd) & ",-thanh_tien,0) as c6,0 as c7,0 as c8,iif((ngay*1>=" & (ngaybd) & ")*(ngay*1<=" & (ngaykt) & "),so_luong,0) as c9," & _
"iif((ngay*1>=" & (ngaybd) & ")*(ngay*1<=" & (ngaykt) & "),thanh_tien,0) as c11 from NK_XUAT where ma_hang is not null) " & _
"Group by c2,c3,c4"

Set rst = cn.Execute(mySQL)
With Sheet3
.[A22:M100000].Clear
.[B22].CopyFromRecordset rst
End With
rst.Close: cn.Close
Set rst = Nothing: Set cn = Nothing
End Sub

Sub tinhtong_va_Stt()

Dim t, i As Long

t = Sheet3.Range("B200000").End(xlUp).Row
If t > 21 Then

Sheet3.Range("E20:M20").FormulaR1C1 = "=SUM(R22C:R" & (t) & "C)"
Sheet3.Range("A22:A" & t).FormulaR1C1 = "=R[-1]C+1"
For i = 0 To 8
Sheet3.Range("E22").Offset(, i).Resize(t - 21, 1).NumberFormat = Sheet3.Range("E21").Offset(, i).NumberFormat
Next
End If
End Sub
Sub kevien()
Dim t As Integer, rng As Range
t = Sheet3.Range("B200000").End(xlUp).Row
Set rng = Sheet3.Range("A22:M" & t)
With rng.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With rng.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With rng.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With rng.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With rng.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With rng.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
Em có gửi file lên bác có thể đẩy code vào file để em dễ hình dung học hỏi không ạ
 
Upvote 0
Nghĩa là làm sẵn cho bạn luôn hehe
em vẫn thường hay hỏi các bác trên này mà bác, hỏi một lần để biết hướng làm dựa theo sau có gặp thì cứ thế làm thôi bác ạ, thường thì em sẽ tự code trước rồi các bác chỉnh sửa cho, mà do cái này em chưa gặp bao giờ nên em bí quá đăng lên đây xin trợ giúp của các bác luôn
 
Upvote 0
Đúng là mỗi file NXT có mỗi cấu trúc dữ liệu khác nhau. Tôi cũng làm 1 file dùng VBA nhưng bảng nhập xuất ít cột hơn
 
Upvote 0
Chưa ưng ý thì nhờ mọi người giúp đỡ mới hoàn thiện chứ
Bài đã được tự động gộp:

Mình tặng bạn 1 file NXT kho hoàn chỉnh. viết bằng VBA nhưng đang đi công việc, không có ở Cty. Khi nào về mình tặng bạn. hoặc gởi qua gmail nhé

Tôi không cần giúp. Chỉ là không như ý của tôi thôi.

Bạn thử public file bạn lên GPE xem. Nếu bạn có lý do để không làm điều đó thì tôi cũng vậy.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom