-
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
AnNguyen > 31-05-20, 11:26 AM
Vâng em tìm thấy bài của anh Dân rồi ạ. Nếu FTP k xem được thì thêm 1 bước tải về xong cho tự mở cũng được ạ 😁
Cơ mà em phải xem em có làm được không đã ạ @@!
Em cảm ơn anh. -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
tranthanhan1962 > 31-05-20, 12:34 PM
(31-05-20, 11:09 AM)AnNguyen Đã viết: Vâng. Em cũng từng nghĩ đến cách thủ công như anh Bảo nói rồi ạ. Do thấy khá mất time nên muốn xem có cách nào mà ổn hơn không ạ. Và em cũng thử tìm qua cách code với FTP nhưng em chưa có nhiều kiến thức để hiểu ạ.
Nếu chỉ muốn cho xem và download/ở đây copy từ ổ ảo ra ngoài tương đương download (cấm sửa, xóa) thì chọn Google Driver Shared hoặc One Driver Shared, tất nhiên với máy của mình thì chọn Google Driver hoặc One Driver bình thường để có toàn quyền xử lý
Ứng dụng của em có 2 mục.
1 là tất cả mọi người chỉ xem và dowload
2 là user thêm dữ liệu trên form hay sửa xóa thì ổ áo kia cũng được update.
Như cách của bác Ân thì họ có thể vô thẳng ổ ảo để xóa hay làm gì không ạ? Vì nếu làm được vậy thì dữ liệu data với cái file được lưu không thống nhất ạ(31-05-20, 11:09 AM)AnNguyen Đã viết: Vâng. Em cũng từng nghĩ đến cách thủ công như anh Bảo nói rồi ạ. Do thấy khá mất time nên muốn xem có cách nào mà ổn hơn không ạ. Và em cũng thử tìm qua cách code với FTP nhưng em chưa có nhiều kiến thức để hiểu ạ.
Nếu chỉ muốn cho xem và download/ở đây copy từ ổ ảo ra ngoài tương đương download (cấm sửa, xóa) thì chọn Google Driver Shared hoặc One Driver Shared, tất nhiên với máy của mình thì chọn Google Driver hoặc One Driver bình thường để có toàn quyền xử lý. Bạn cũng có thể protect word, excel bằng mật khẩu (cái này thì quá thông dụng) còn với PDF thì nếu không có acrobat bản quyền thì protect online qua link https://www.pdf2go.com/vi/protect-pdf. Ngoài ra có thể dùng các phần mềm bảo vệ tập tin khác vì ổ ảo này cũng không khác gì ổ thật. Hyperlink thì có thể chèn bất cứ đâu, access, word, excel...
Ứng dụng của em có 2 mục.
1 là tất cả mọi người chỉ xem và dowload
2 là user thêm dữ liệu trên form hay sửa xóa thì ổ áo kia cũng được update.
Như cách của bác Ân thì họ có thể vô thẳng ổ ảo để xóa hay làm gì không ạ? Vì nếu làm được vậy thì dữ liệu data với cái file được lưu không thống nhất ạ -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
AnNguyen > 31-05-20, 03:52 PM
Vâng em cảm ơn nhiều ạ. Để em ngâm cứu và làm vướng mắc ở đâu em xin hỏi tiếp ạ. -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
khonggianviet > 14-12-23, 05:10 PM
Chào cả nhà!
Bài viết này liên quan đến VBA Excel, nhưng đưa lên nhờ các cao thủ giúp mình
- Mình có file Excel với bảng gồm các cột như sau: Ho_Ten; [Ngay_Ra_Van_Ban]; [Ngay_Nhan_Van_Ban]; [Quyet_Dinh]; [Thong_Bao_So]; [Bi_An]; [Toi]
- Code VBA
'Chuong trinh tao thong bao nhan thong bao uy thac
Sub TBuythacdi()
'Khai bao bien
Dim wapp As Word.Application
Dim wdoc As Word.Document
Dim numOfRow, numOfColumn, iRow, iColumn As Long
'Gan gia tri cho cac bien
Set wapp = CreateObject("word.application")
wapp.Visible = True
With ThisWorkbook.Sheets("Thong bao uy thac")
numOfRow = Excel.WorksheetFunction.CountA(.Columns(3)) - 1
numOfColumn = Excel.WorksheetFunction.CountA(.Rows(2))
For iRow = 1 To numOfRow Step 1
Set wdoc = wapp.Documents.Open("D:\TOAN TRAN\TGTG -THAHS\TGTG-THAHS 2024\THAHS 2024\Thong bao nhan uy thac\TB uy thac di thi hanh an.docx")
For iColumn = 1 To numOfColumn Step 1
wdoc.Content.Find.Execute _
findtext:=.Cells(2, iColumn + 1), _
replacewith:=.Cells(iRow + 2, iColumn + 1), _
Replace:=wdReplaceAll
Next
wdoc.SaveAs2 Filename:=ThisWorkbook.Path & "\Luu tru\TB uy thac di thi hanh an\" & _
"TB uy thac di thi hanh an - " & .Cells(iRow + 2, 3) & ".docx"
wdoc.Close
Next
wapp.Quit
Set wdoc = Nothing
MsgBox "Ket thuc tao thong bao"
End With
End Sub
* Đoạn code này sẽ dùng để tạo file word lấy thông tin từ các cột trên, vấn đề là dữ liệu được cập nhật thường xuyên hàng ngày và mỗi lần chạy code lại tạo các file word lặp lại từ đầu. Mình chỉ muốn là code chạy và tạo file word đối với những phần dữ diệu mới được cập nhật còn dữ liệu cũ thì bỏ qua không chạy nữa, nhưng hiện tại chưa biết triển khai như thế nào. Rất mong nhận được giúp đỡ hỗ trợ từ cả nhà. -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
ongke0711 > 15-12-23, 03:31 PM
(14-12-23, 05:10 PM)khonggianviet Đã viết: Chào cả nhà!
Bài viết này liên quan đến VBA Excel, nhưng đưa lên nhờ các cao thủ giúp mình
- Mình có file Excel với bảng gồm các cột như sau: Ho_Ten; [Ngay_Ra_Van_Ban]; [Ngay_Nhan_Van_Ban]; [Quyet_Dinh]; [Thong_Bao_So]; [Bi_An]; [Toi]
- Code VBA
Dim wapp As Word.Application
Dim wdoc As Word.Document
Dim numOfRow, numOfColumn, iRow, iColumn As Long
'Gan gia tri cho cac bien
Set wapp = CreateObject("word.application")
...
* Đoạn code này sẽ dùng để tạo file word lấy thông tin từ các cột trên, vấn đề là dữ liệu được cập nhật thường xuyên hàng ngày và mỗi lần chạy code lại tạo các file word lặp lại từ đầu. Mình chỉ muốn là code chạy và tạo file word đối với những phần dữ diệu mới được cập nhật còn dữ liệu cũ thì bỏ qua không chạy nữa, nhưng hiện tại chưa biết triển khai như thế nào. Rất mong nhận được giúp đỡ hỗ trợ từ cả nhà.
Trước tiên nói về code, bạn mắc mấy lỗi sau:
- Bạn chưa phân biệt được khai báo sớm (early binding) và khai báo muộn (late bindng). Bạn kết hợp cả 2 kiểu vô thì nó chẳng ra cái gì cả. Không muốn phụ thuộc thì cứ dùng khai báo muộn. Muốn code nhanh hơn chút thì khai báo sớm nhưng đổi lại sẽ báo lỗi khi đem ứng dụng qua các phiên bản Office thấp hơn.
Mã:Dim wapp as Word.Application '--> là khai báo sớm
Mã:Set wapp = CreateObject ("Word.Application") '--> Là khai báo muộn
- Nhiều người dính phải thói quen như bạn là khai báo gộp các biến lại.
=> Khai báo kiểu này thì chỉ có mỗi biến iColumn là kiểu Long, còn các biến trước đó không được khai báo rõ ràng sẽ mặc định được gán kiểu Variant. Kiểu Variant thì sẽ được xử lý lâu hơn các kiểu tường minh khác như : String, number, boolean...Mã:Dim numOfRow, numOfColumn, iRow, iColumn As Long
Còn về vấn đề bạn hỏi thì bạn phải lọc dữ liệu Excel trước, chỉ lấy dữ liệu mới nhất rồi mới cập nhật sang file Word chứ duyệt toàn bộ dòng thì không đáp ứng yêu cầu là đúng rồi.
Muốn lọc dữ liệu Excel thì dùng ADODB recordset để lấy dữ liệu theo yêu cầu (với câu lệnh SQL) hoặc duyệt từng dòng rồi Add vào Dictionary các dữ liệu mới nhất, sau đó dùng Dictionary nó update vào file Word.