Tự động tải báo cáo trên phần mềm misa (3 người xem)

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

Tôi tuân thủ nội quy khi đăng bài
Có

Hoale85

Thành viên chính thức
Tham gia
2/8/24
Bài viết
99
Được thích
7
Em chào các Anh/ Chị trên group: Em xin các anh chị giúp em code vba để tự động tải sổ sách trên phần mêm misa online vào 1 file excel với ạ, Chứ hiện tại bên em đang nhiều cty, mỗi lần vào tải công ty, em lại phải vào từng công ty một để tải. Em chân thành cảm ơn ạ.
 
(AI) Chào bạn, việc tải thủ công sổ sách cho nhiều công ty trên MISA Online thực sự rất mất thời gian. Tuy nhiên, để tự động hóa việc này, dùng VBA thuần túy là cực kỳ khó và không ổn định.

MISA Online (AMIS) là một ứng dụng web hiện đại có tính bảo mật cao (sử dụng token, đăng nhập phức tạp, chống bot). Các công cụ web scraping cũ của VBA (như InternetExplorer) hiện đã bị khai tử và không thể đọc được cấu trúc web của MISA.

Để giải quyết bài toán của bạn, dưới đây là 3 hướng đi khả thi nhất:

1. Giải pháp tốt nhất: Sử dụng API của MISA​

MISA có cung cấp cổng kết nối API mở. Bạn có thể liên hệ với tổng đài MISA để đăng ký API key. Khi có API, bạn có thể dùng Power Query có sẵn trong Excel hoặc viết một đoạn mã VBA đơn giản (dùng XMLHTTP60) để kéo dữ liệu trực tiếp về Excel mà không cần thao tác mở trình duyệt. Đây là cách chuẩn, nhanh và không bao giờ bị lỗi vặt.

2. Dùng RPA: Power Automate Desktop hoặc UiPath (Không cần viết code)​

Nếu bạn không muốn đau đầu với code và môi trường lập trình, các phần mềm RPA (Robotic Process Automation) là lựa chọn số 1.
  • Microsoft Power Automate Desktop: Miễn phí và có sẵn trên Windows 11. Cung cấp giao diện kéo thả trực quan. Bạn sử dụng tính năng "Web Recorder", tự tay thao tác quy trình đăng nhập -> chọn công ty -> xuất Excel một lần. Phần mềm sẽ ghi lại và tạo thành một luồng (flow) tự động lặp lại cho danh sách hàng chục công ty được lưu trong một file Excel đầu vào.
  • Ưu điểm: Trực quan, dễ tự học và chỉnh sửa, không cần cài đặt các thư viện lập trình phức tạp.

3. Dùng VBA kết hợp thư viện SeleniumBasic​

Nếu bạn bắt buộc phải dùng VBA, bạn phải cài thêm thư viện SeleniumBasic và ChromeDriver để VBA có thể điều khiển trình duyệt Google Chrome tự động click thay con người.

Dưới đây là khung code logic cơ bản nếu bạn dùng Selenium trong VBA. (Lưu ý: Bạn phải tìm chính xác XPath hoặc ID của các nút bấm trên trang MISA để thay vào code).

Mã:
' Yêu cầu: Đã cài SeleniumBasic và tick chọn "Selenium Type Library" trong Tools -> References
Sub TaiSoSachMisa_Selenium()
    Dim bot As New WebDriver
    Dim dsCongTy As Variant
    Dim i As Integer
    
    ' Khởi động Chrome ẩn hoặc hiện
    bot.Start "chrome", "https://amis.misa.vn"
    bot.Get "/"
    
    ' 1. Đăng nhập
    bot.FindElementById("username_field_id").SendKeys "taikhoan_cua_ban"
    bot.FindElementById("password_field_id").SendKeys "matkhau"
    bot.FindElementById("login_button_id").Click
    
    bot.Wait 5000 ' Chờ web load xong
    
    ' Danh sách ID hoặc tên các công ty cần tải (ví dụ trên sheet Excel)
    dsCongTy = Array("CongTy_A", "CongTy_B", "CongTy_C")
    
    For i = LBound(dsCongTy) To UBound(dsCongTy)
        ' 2. Chuyển đổi công ty (Thay bằng XPath thực tế trên MISA)
        bot.FindElementByXPath("//div[@class='chon-cong-ty']").Click
        bot.FindElementByXPath("//span[text()='" & dsCongTy(i) & "']").Click
        
        bot.Wait 3000
        
        ' 3. Vào phần báo cáo/sổ sách và bấm nút Tải Xuất Excel
        bot.FindElementByXPath("//a[text()='Báo cáo']").Click
        bot.Wait 2000
        bot.FindElementByXPath("//button[text()='Xuất khẩu']").Click
        
        ' Chờ file tải về máy xong mới qua công ty tiếp theo
        bot.Wait 5000
    Next i
    
    MsgBox "Đã hoàn thành tải sổ sách!", vbInformation
    bot.Quit
End Sub

4. Dùng Python với Playwright hoặc Selenium (Khuyên dùng cho lập trình)​

Python hiện là ngôn ngữ số một về tự động hóa web. Thư viện Playwright (do Microsoft phát triển) hoặc Selenium có thể tương tác với giao diện MISA hệt như người thật: vượt qua các form đăng nhập phức tạp, chờ trang tải xong dữ liệu, tự động chọn từng công ty trong dropdown menu và bấm nút xuất Excel.
  • Ưu điểm: Cực kỳ mạnh mẽ, tốc độ chạy nhanh, hỗ trợ chạy ẩn (headless) không chiếm chuột/màn hình, cộng đồng hỗ trợ lớn.
  • Ví dụ logic bằng Python (Playwright):

Mã:
from playwright.sync_api import sync_playwright

def tai_so_sach_misa():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False) # Hiện trình duyệt để quan sát
        page = browser.new_page()
        
        # 1. Đăng nhập
        page.goto("https://amis.misa.vn")
        page.fill("#username", "taikhoan_cua_ban")
        page.fill("#password", "mat_khau")
        page.click("button#login")
        page.wait_for_load_state("networkidle") # Chờ web load xong hoàn toàn
        
        ds_cong_ty = ["Công ty A", "Công ty B", "Công ty C"]
        
        for cong_ty in ds_cong_ty:
            # 2. Đổi công ty
            page.click("div.chon-cong-ty")
            page.click(f"text='{cong_ty}'")
            page.wait_for_timeout(3000)
            
            # 3. Vào báo cáo và tải file
            page.click("text='Báo cáo'")
            with page.expect_download() as download_info:
                page.click("button:has-text('Xuất khẩu')")
            
            # Lưu file vào thư mục chỉ định
            download = download_info.value
            download.save_as(f"C:/SoSach/{cong_ty}_BaoCao.xlsx")
            
        browser.close()

tai_so_sach_misa()

5. Dùng Node.js với Puppeteer​

Tương tự Python, hệ sinh thái JavaScript/Node.js sở hữu công cụ Puppeteer (do Google phát triển) chuyên dùng để điều khiển Chrome.
  • Ưu điểm: Rất nhẹ, tốc độ thực thi các thao tác trên nền tảng web cực kỳ mượt mà vì sử dụng cùng ngôn ngữ JavaScript với trình duyệt.
  • Ứng dụng: Phù hợp nếu bạn muốn làm một tool nhỏ gọn chạy trên terminal, hoặc tích hợp vào một ứng dụng web nội bộ để bộ phận kế toán chỉ cần bấm 1 nút là server tự tải toàn bộ file về đóng gói thành file .zip.
Để bắt đầu nhanh và hiệu quả nhất cho một nhân sự kế toán/văn phòng, bạn nên tìm hiểu Power Automate Desktop. Nếu bạn có nền tảng về code và muốn một giải pháp tốc độ cao, Python với Playwright là ngôn ngữ đáng đầu tư học nhất hiện nay.
 
Em cảm ơn Anh/ Chị đã giúp em ạ. Em sẽ thử python và VBA ạ. Em cảm ơn ạ!
 
(AI) Chào bạn, việc tải thủ công sổ sách cho nhiều công ty trên MISA Online thực sự rất mất thời gian. Tuy nhiên, để tự động hóa việc này, dùng VBA thuần túy là cực kỳ khó và không ổn định.

MISA Online (AMIS) là một ứng dụng web hiện đại có tính bảo mật cao (sử dụng token, đăng nhập phức tạp, chống bot). Các công cụ web scraping cũ của VBA (như InternetExplorer) hiện đã bị khai tử và không thể đọc được cấu trúc web của MISA.

Để giải quyết bài toán của bạn, dưới đây là 3 hướng đi khả thi nhất:

1. Giải pháp tốt nhất: Sử dụng API của MISA​

MISA có cung cấp cổng kết nối API mở. Bạn có thể liên hệ với tổng đài MISA để đăng ký API key. Khi có API, bạn có thể dùng Power Query có sẵn trong Excel hoặc viết một đoạn mã VBA đơn giản (dùng XMLHTTP60) để kéo dữ liệu trực tiếp về Excel mà không cần thao tác mở trình duyệt. Đây là cách chuẩn, nhanh và không bao giờ bị lỗi vặt.

2. Dùng RPA: Power Automate Desktop hoặc UiPath (Không cần viết code)​

Nếu bạn không muốn đau đầu với code và môi trường lập trình, các phần mềm RPA (Robotic Process Automation) là lựa chọn số 1.
  • Microsoft Power Automate Desktop: Miễn phí và có sẵn trên Windows 11. Cung cấp giao diện kéo thả trực quan. Bạn sử dụng tính năng "Web Recorder", tự tay thao tác quy trình đăng nhập -> chọn công ty -> xuất Excel một lần. Phần mềm sẽ ghi lại và tạo thành một luồng (flow) tự động lặp lại cho danh sách hàng chục công ty được lưu trong một file Excel đầu vào.
  • Ưu điểm: Trực quan, dễ tự học và chỉnh sửa, không cần cài đặt các thư viện lập trình phức tạp.

3. Dùng VBA kết hợp thư viện SeleniumBasic​

Nếu bạn bắt buộc phải dùng VBA, bạn phải cài thêm thư viện SeleniumBasic và ChromeDriver để VBA có thể điều khiển trình duyệt Google Chrome tự động click thay con người.

Dưới đây là khung code logic cơ bản nếu bạn dùng Selenium trong VBA. (Lưu ý: Bạn phải tìm chính xác XPath hoặc ID của các nút bấm trên trang MISA để thay vào code).

Mã:
' Yêu cầu: Đã cài SeleniumBasic và tick chọn "Selenium Type Library" trong Tools -> References
Sub TaiSoSachMisa_Selenium()
    Dim bot As New WebDriver
    Dim dsCongTy As Variant
    Dim i As Integer
   
    ' Khởi động Chrome ẩn hoặc hiện
    bot.Start "chrome", "https://amis.misa.vn"
    bot.Get "/"
   
    ' 1. Đăng nhập
    bot.FindElementById("username_field_id").SendKeys "taikhoan_cua_ban"
    bot.FindElementById("password_field_id").SendKeys "matkhau"
    bot.FindElementById("login_button_id").Click
   
    bot.Wait 5000 ' Chờ web load xong
   
    ' Danh sách ID hoặc tên các công ty cần tải (ví dụ trên sheet Excel)
    dsCongTy = Array("CongTy_A", "CongTy_B", "CongTy_C")
   
    For i = LBound(dsCongTy) To UBound(dsCongTy)
        ' 2. Chuyển đổi công ty (Thay bằng XPath thực tế trên MISA)
        bot.FindElementByXPath("//div[@class='chon-cong-ty']").Click
        bot.FindElementByXPath("//span[text()='" & dsCongTy(i) & "']").Click
       
        bot.Wait 3000
       
        ' 3. Vào phần báo cáo/sổ sách và bấm nút Tải Xuất Excel
        bot.FindElementByXPath("//a[text()='Báo cáo']").Click
        bot.Wait 2000
        bot.FindElementByXPath("//button[text()='Xuất khẩu']").Click
       
        ' Chờ file tải về máy xong mới qua công ty tiếp theo
        bot.Wait 5000
    Next i
   
    MsgBox "Đã hoàn thành tải sổ sách!", vbInformation
    bot.Quit
End Sub

4. Dùng Python với Playwright hoặc Selenium (Khuyên dùng cho lập trình)​

Python hiện là ngôn ngữ số một về tự động hóa web. Thư viện Playwright (do Microsoft phát triển) hoặc Selenium có thể tương tác với giao diện MISA hệt như người thật: vượt qua các form đăng nhập phức tạp, chờ trang tải xong dữ liệu, tự động chọn từng công ty trong dropdown menu và bấm nút xuất Excel.
  • Ưu điểm: Cực kỳ mạnh mẽ, tốc độ chạy nhanh, hỗ trợ chạy ẩn (headless) không chiếm chuột/màn hình, cộng đồng hỗ trợ lớn.
  • Ví dụ logic bằng Python (Playwright):

Mã:
from playwright.sync_api import sync_playwright

def tai_so_sach_misa():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False) # Hiện trình duyệt để quan sát
        page = browser.new_page()
       
        # 1. Đăng nhập
        page.goto("https://amis.misa.vn")
        page.fill("#username", "taikhoan_cua_ban")
        page.fill("#password", "mat_khau")
        page.click("button#login")
        page.wait_for_load_state("networkidle") # Chờ web load xong hoàn toàn
       
        ds_cong_ty = ["Công ty A", "Công ty B", "Công ty C"]
       
        for cong_ty in ds_cong_ty:
            # 2. Đổi công ty
            page.click("div.chon-cong-ty")
            page.click(f"text='{cong_ty}'")
            page.wait_for_timeout(3000)
           
            # 3. Vào báo cáo và tải file
            page.click("text='Báo cáo'")
            with page.expect_download() as download_info:
                page.click("button:has-text('Xuất khẩu')")
           
            # Lưu file vào thư mục chỉ định
            download = download_info.value
            download.save_as(f"C:/SoSach/{cong_ty}_BaoCao.xlsx")
           
        browser.close()

tai_so_sach_misa()

5. Dùng Node.js với Puppeteer​

Tương tự Python, hệ sinh thái JavaScript/Node.js sở hữu công cụ Puppeteer (do Google phát triển) chuyên dùng để điều khiển Chrome.
  • Ưu điểm: Rất nhẹ, tốc độ thực thi các thao tác trên nền tảng web cực kỳ mượt mà vì sử dụng cùng ngôn ngữ JavaScript với trình duyệt.
  • Ứng dụng: Phù hợp nếu bạn muốn làm một tool nhỏ gọn chạy trên terminal, hoặc tích hợp vào một ứng dụng web nội bộ để bộ phận kế toán chỉ cần bấm 1 nút là server tự tải toàn bộ file về đóng gói thành file .zip.
Để bắt đầu nhanh và hiệu quả nhất cho một nhân sự kế toán/văn phòng, bạn nên tìm hiểu Power Automate Desktop. Nếu bạn có nền tảng về code và muốn một giải pháp tốc độ cao, Python với Playwright là ngôn ngữ đáng đầu tư học nhất hiện nay.
anh ơi, em xin zalo hay anh utra giúp em chút được không anh? Em cảm ơn anh ạ
Bài đã được tự động gộp:

(AI) Chào bạn, việc tải thủ công sổ sách cho nhiều công ty trên MISA Online thực sự rất mất thời gian. Tuy nhiên, để tự động hóa việc này, dùng VBA thuần túy là cực kỳ khó và không ổn định.

MISA Online (AMIS) là một ứng dụng web hiện đại có tính bảo mật cao (sử dụng token, đăng nhập phức tạp, chống bot). Các công cụ web scraping cũ của VBA (như InternetExplorer) hiện đã bị khai tử và không thể đọc được cấu trúc web của MISA.

Để giải quyết bài toán của bạn, dưới đây là 3 hướng đi khả thi nhất:

1. Giải pháp tốt nhất: Sử dụng API của MISA​

MISA có cung cấp cổng kết nối API mở. Bạn có thể liên hệ với tổng đài MISA để đăng ký API key. Khi có API, bạn có thể dùng Power Query có sẵn trong Excel hoặc viết một đoạn mã VBA đơn giản (dùng XMLHTTP60) để kéo dữ liệu trực tiếp về Excel mà không cần thao tác mở trình duyệt. Đây là cách chuẩn, nhanh và không bao giờ bị lỗi vặt.

2. Dùng RPA: Power Automate Desktop hoặc UiPath (Không cần viết code)​

Nếu bạn không muốn đau đầu với code và môi trường lập trình, các phần mềm RPA (Robotic Process Automation) là lựa chọn số 1.
  • Microsoft Power Automate Desktop: Miễn phí và có sẵn trên Windows 11. Cung cấp giao diện kéo thả trực quan. Bạn sử dụng tính năng "Web Recorder", tự tay thao tác quy trình đăng nhập -> chọn công ty -> xuất Excel một lần. Phần mềm sẽ ghi lại và tạo thành một luồng (flow) tự động lặp lại cho danh sách hàng chục công ty được lưu trong một file Excel đầu vào.
  • Ưu điểm: Trực quan, dễ tự học và chỉnh sửa, không cần cài đặt các thư viện lập trình phức tạp.

3. Dùng VBA kết hợp thư viện SeleniumBasic​

Nếu bạn bắt buộc phải dùng VBA, bạn phải cài thêm thư viện SeleniumBasic và ChromeDriver để VBA có thể điều khiển trình duyệt Google Chrome tự động click thay con người.

Dưới đây là khung code logic cơ bản nếu bạn dùng Selenium trong VBA. (Lưu ý: Bạn phải tìm chính xác XPath hoặc ID của các nút bấm trên trang MISA để thay vào code).

Mã:
' Yêu cầu: Đã cài SeleniumBasic và tick chọn "Selenium Type Library" trong Tools -> References
Sub TaiSoSachMisa_Selenium()
    Dim bot As New WebDriver
    Dim dsCongTy As Variant
    Dim i As Integer
   
    ' Khởi động Chrome ẩn hoặc hiện
    bot.Start "chrome", "https://amis.misa.vn"
    bot.Get "/"
   
    ' 1. Đăng nhập
    bot.FindElementById("username_field_id").SendKeys "taikhoan_cua_ban"
    bot.FindElementById("password_field_id").SendKeys "matkhau"
    bot.FindElementById("login_button_id").Click
   
    bot.Wait 5000 ' Chờ web load xong
   
    ' Danh sách ID hoặc tên các công ty cần tải (ví dụ trên sheet Excel)
    dsCongTy = Array("CongTy_A", "CongTy_B", "CongTy_C")
   
    For i = LBound(dsCongTy) To UBound(dsCongTy)
        ' 2. Chuyển đổi công ty (Thay bằng XPath thực tế trên MISA)
        bot.FindElementByXPath("//div[@class='chon-cong-ty']").Click
        bot.FindElementByXPath("//span[text()='" & dsCongTy(i) & "']").Click
       
        bot.Wait 3000
       
        ' 3. Vào phần báo cáo/sổ sách và bấm nút Tải Xuất Excel
        bot.FindElementByXPath("//a[text()='Báo cáo']").Click
        bot.Wait 2000
        bot.FindElementByXPath("//button[text()='Xuất khẩu']").Click
       
        ' Chờ file tải về máy xong mới qua công ty tiếp theo
        bot.Wait 5000
    Next i
   
    MsgBox "Đã hoàn thành tải sổ sách!", vbInformation
    bot.Quit
End Sub

4. Dùng Python với Playwright hoặc Selenium (Khuyên dùng cho lập trình)​

Python hiện là ngôn ngữ số một về tự động hóa web. Thư viện Playwright (do Microsoft phát triển) hoặc Selenium có thể tương tác với giao diện MISA hệt như người thật: vượt qua các form đăng nhập phức tạp, chờ trang tải xong dữ liệu, tự động chọn từng công ty trong dropdown menu và bấm nút xuất Excel.
  • Ưu điểm: Cực kỳ mạnh mẽ, tốc độ chạy nhanh, hỗ trợ chạy ẩn (headless) không chiếm chuột/màn hình, cộng đồng hỗ trợ lớn.
  • Ví dụ logic bằng Python (Playwright):

Mã:
from playwright.sync_api import sync_playwright

def tai_so_sach_misa():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False) # Hiện trình duyệt để quan sát
        page = browser.new_page()
       
        # 1. Đăng nhập
        page.goto("https://amis.misa.vn")
        page.fill("#username", "taikhoan_cua_ban")
        page.fill("#password", "mat_khau")
        page.click("button#login")
        page.wait_for_load_state("networkidle") # Chờ web load xong hoàn toàn
       
        ds_cong_ty = ["Công ty A", "Công ty B", "Công ty C"]
       
        for cong_ty in ds_cong_ty:
            # 2. Đổi công ty
            page.click("div.chon-cong-ty")
            page.click(f"text='{cong_ty}'")
            page.wait_for_timeout(3000)
           
            # 3. Vào báo cáo và tải file
            page.click("text='Báo cáo'")
            with page.expect_download() as download_info:
                page.click("button:has-text('Xuất khẩu')")
           
            # Lưu file vào thư mục chỉ định
            download = download_info.value
            download.save_as(f"C:/SoSach/{cong_ty}_BaoCao.xlsx")
           
        browser.close()

tai_so_sach_misa()

5. Dùng Node.js với Puppeteer​

Tương tự Python, hệ sinh thái JavaScript/Node.js sở hữu công cụ Puppeteer (do Google phát triển) chuyên dùng để điều khiển Chrome.
  • Ưu điểm: Rất nhẹ, tốc độ thực thi các thao tác trên nền tảng web cực kỳ mượt mà vì sử dụng cùng ngôn ngữ JavaScript với trình duyệt.
  • Ứng dụng: Phù hợp nếu bạn muốn làm một tool nhỏ gọn chạy trên terminal, hoặc tích hợp vào một ứng dụng web nội bộ để bộ phận kế toán chỉ cần bấm 1 nút là server tự tải toàn bộ file về đóng gói thành file .zip.
Để bắt đầu nhanh và hiệu quả nhất cho một nhân sự kế toán/văn phòng, bạn nên tìm hiểu Power Automate Desktop. Nếu bạn có nền tảng về code và muốn một giải pháp tốc độ cao, Python với Playwright là ngôn ngữ đáng đầu tư học nhất hiện nay.
Em xin zalo anh được ko anh? zalo em là 0977205085 ạ
 
Lần chỉnh sửa cuối:
ui , cái này là con AI của mình nó tự soạn ý tưởng ák , mình thực ra đọc bài trên cũng chưa hiểu lắm , bạn từ từ phân tích nhé !
 

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

Back
Top Bottom