Lê Nguyễn Nhật Phương
Lê Nguyễn Nhật Phương
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 1837 lượt xem

Hướng dẫn sử dụng VBA để sao chép dữ liệu từ Excel sang Word

Aug 14 2021

Để sao chép dữ liệu từ Excel sang tệp Word bằng VBA chúng ta cần truy cập ứng dụng Word bằng Excel VBA. Trong bài viết này, Gitiho sẽ cùng bạn học cách mở một ứng dụng Word, thêm tài liệu và sao chép, dán dữ liệu từ Excel vào nó.

Tuyệt đỉnh VBA - Viết code trong tầm tay

Quy trình sao chép dữ liệu Excel sang tệp Word bằng VBA

Các bước thực hiện sao chép dữ liệu từ tệp Excel đều được thực hiện dễ dàng từ Excel, bạn sẽ không cần phải tương tác với tài liệu Word. Quy trình sao chép dữ liệu Excel sang Word bằng VBA như sau:

  • Bước 1: Xác định vùng dữ liệu cần trích xuất và sao chép vùng dữ liệu này
  • Bước 2: Mở ứng dụng Word, tạo file Word mới
  • Bước 3: Dán dữ liệu từ Excel ra Word
  • Bước 4: Đóng ứng dụng và giải phóng bộ nhớ tạm của Excel


Tuy nhiên trước khi thực hiện quy trình này bạn cần lưu ý các vấn đề sau:

  • Word không chuyên về quản lý dữ liệu dạng cột, vì vậy bạn cần kiểm tra lại số lượng cột, độ rộng các cột Excel
  • Nếu bạn chỉ trích xuất 1 phần bảng dữ liệu Excel thì phải xác định rõ đến phạm vi vùng dữ liệu đó trước khi thực hiện viết mã VBA.

Hãy bắt đầu với một ví dụ cụ thể để bạn hiểu rõ hơn nhé!

Xem thêm: Tìm hiểu về cách tự tạo hàm Excel trong VBA

Ví dụ: Dán dữ liệu Excel sang Word bằng VBA

Đoạn mã dưới đây là một ví dụ về cách bạn có thể sao chép một số phạm vi Excel và dán nó vào một tài liệu Word mới sau đó lưu nó vào ổ đĩa để sử dụng sau này:

'VBA Code To Write to Copy data from Excel to A Document
Sub ExcelToWord()
   'Using Early Binding
    Dim wordApp As Word.Application
    Dim mydoc As Word.Document
    'Creating a new instance of word only if there no other instances
    Set wordApp = New Word.Application
    'Making word App Visible
    wordApp.Visible = True
    'Creating a new document
    Set mydoc = wordApp.Documents.Add()
    'copying the content from excel sheet
    ThisWorkbook.Worksheets("sheet1").Range("A1:g20").Copy
    'Pasting on the document
    mydoc.Paragraphs(1).Range.PasteExcelTable _
                               LinkedToExcel:=False, _
                               WordFormatting:=False, 
                               RTF:=False
    'saving the document
    mydoc.SaveAs2 "MyDoc"
    'closing the document
    mydoc.Close
    'Emptying the Clipboard 
    CutCopyMode = False
End Sub

Xem thêm: Làm thế nào để sử dụng hàm InputBox trong VBA Excel?

Giải thích các bước sao chép dữ liệu Excel sang tệp Word bằng VBA

Sau đây, mình sẽ giải thích từng bước trong đoạn mã trên để bạn hiểu rõ hơn bằng cách sử dụng các nhận xét:

1. Tạo các biến của ứng dụng và loại tài liệu Word

     Dim wordApp As Word.Application

     Dim mydoc As Word.Document

Ở đây chúng ta đã khai báo hai biến bắt buộc. Chúng ta có thể làm điều này vì chúng ta đã thêm tham chiếu vào ứng dụng Word. Bạn có thể làm điều này bằng cách đi tới các công cụ trong menu tìm tùy chọn tham chiếu và sau đó tìm tham chiếu Word.



2. Tạo một file Word mới nếu không file Word trước đó

     Set wordApp = New Word.Application

Chúng ta đang xác định biến wordApp với một đối tượng kiểu Word.App bằng cách sử dụng từ khóa New. Thao tác này sẽ mở ứng dụng Word.

3. Làm cho ứng dụng Word hiển thị

     wordApp.Vible = True

Hiển thị ứng dụng Word để chúng ta có thể làm việc với nó.

4. Tạo một tài liệu mới

     Set mydoc = wordApp.Documents.Add()

Dòng mã này giúp chúng ta thêm một tài liệu mới vào Word bằng cách sử dụng hàm word.Documents.Add (). Điều này được lưu trữ trong biến mydoc

5. Sao chép nội dung từ trang tính Excel

     ThisWorkbook.Worksheets("sheet1").Range("A1:G20").Copy

Ở đây chúng ta chỉ đơn giản là sao chép một phạm vi từ Excel. 

6. Dán dữ liệu

     LinkedToExcel:=False, _

                               WordFormatting:=False, 

                               RTF:=False

Chúng ta đang sử dụng phương thức PasteExcelTable của Paragraph.Range trong mydoc để dán dữ liệu từ khay nhớ tạm.

7. Lưu tài liệu

    mydoc.SaveAs2 "MyDoc"

Chúng ta đang lưu tài liệu với tên MyDoc

8. Đóng tài liệu

    mydoc.Close

Sau đó, chúng ta đóng tài liệu bằng cách sử dụng chức năng Close

9. Làm trống Clipboard 

    CutCopyMode = False

Cuối cùng, chúng tôi giải phóng khay nhớ tạm để những lần khác sử dụng.

Đây là cách bạn có thể tạo một tài liệu Word mới và sao chép dữ liệu Excel vào nó bằng VBA.

Xem thêm: Hướng dẫn cách gọi Sub trong VBA qua các ví dụ

Kết luận

Gitiho hy vọng bài viết trên đã giúp bạn hiểu quá trình tạo một tài liệu Word mới và sao chép dữ liệu Excel vào nó bằng VBA. Nếu bạn có bất kỳ câu hỏi nào liên quan đến bài viết này hoặc về bất kỳ chủ đề VBA nào khác, hãy cho chúng mình biết trong phần bình luận bên dưới. Và đừng quên theo dõi chúng mình để xem thêm các bài viết bổ ích khác nhé!

Cùng tham gia cộng đồng hỏi đáp về chủ đề Tin học văn phòng

Thảo luận 0 câu trả lời
Lượt xem 1837 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội