Macro Python Excel
Cách Microsoft đang di chuyển với việc giới thiệu Office Scripts, có vẻ như gã khổng lồ Redmond sẽ không có kế hoạch đầu tư vào việc mở rộng VBA nữa, tuy nhiên, sẽ để nó làm ngôn ngữ kịch bản ngoại tuyến được chỉ định. Thách thức ở đây là mặc dù Office Scripts sẽ hoàn thiện hơn nhưng chúng tôi vẫn cần đợi một thời gian để chúng được hỗ trợ đầy đủ cho phiên bản Excel dành cho máy tính để bàn. Trong khi đó VBA không còn trẻ nữa và không phát triển từng bước với các ngôn ngữ khoa học dữ liệu hàng đầu như Python. Mặc dù tôi không nghĩ rằng VBA sẽ biến mất trong 10 năm tới, nhưng Microsoft chắc chắn sẽ cố gắng thu hút thêm nhiều người dùng sử dụng Office Scripts. Nhưng tại sao lại giới hạn bản thân? . Mặc dù Office Scripts sẽ tích hợp tốt hơn với Excel và với Bộ công cụ Power Suite của Microsoft như Power Automate, nhưng tôi nghĩ các nhà phân tích ngày nay nên hướng tới các ngôn ngữ được sử dụng rộng rãi hơn trong các lĩnh vực khoa học dữ liệu và kỹ thuật dữ liệu Show
Python trong vài năm gần đây đã trở thành ngôn ngữ được lựa chọn cho một cộng đồng chuyên gia dữ liệu đông đảo. Nếu bạn đang tìm cách di chuyển tập lệnh VBA của mình sang Python, bạn không cần phải đợi. Bạn có thể bắt đầu phát triển tập lệnh cho Excel bằng Python ngay lập tức, chỉ với một vài bước bổ sung. Hãy để tôi giải thích lý do tại sao bạn muốn xem xét làm như vậy… Tại sao chuyển VBA sang Python?Đừng hiểu lầm tôi, tôi đã tạo ra phần lớn các công cụ và tự động hóa VBA của mình. Nếu bạn đang tạo các ứng dụng dựa trên Access thì đây có thể không phải là giải pháp thay thế dành cho bạn. Tuy nhiên, nếu bạn sử dụng VBA chủ yếu để tạo tự động hóa, làm sạch dữ liệu, báo cáo thì tôi nghĩ bạn có thể đánh giá cao sự hoán đổi Python là ngôn ngữ lập trình phổ biến nhất theo chỉ số TIOBE. Nó được yêu thích bởi các nhà khoa học dữ liệu và kỹ sư dữ liệu. Hầu hết các thuật toán học máy trên Kaggle đang được tạo bằng Python. Tương tự Python là ngôn ngữ chính được sử dụng để trích xuất, chuyển đổi và tải dữ liệu được sử dụng là các dịch vụ đám mây được quản lý như Amazon Glue hoặc Azure Databricks. Đầu tư vào việc học một ngôn ngữ có thể linh hoạt hơn thay vì chỉ dành cho Excel Python hỗ trợ nhiều định dạng dữ liệu mà ngày nay bạn có thể đang xử lý các tệp Excel. Tuy nhiên, cho dù đó là CSV, Excel, văn bản, avro, json hay bất kỳ loại tệp dữ liệu nào khác – nó không thực sự tạo ra sự khác biệt đối với bạn với tư cách là nhà phát triển. Tại sao phải giới hạn bản thân trong việc xử lý bảng tính Excel khi thay vào đó, bạn có thể học một ngôn ngữ giúp bạn xử lý bất kỳ định dạng dữ liệu nào Python là một ngôn ngữ lập trình trưởng thành hơn. Mặc dù VBA đã không thấy các bản cập nhật kể từ 20 năm qua, nhưng Python đang ở trong bản phát hành chính thứ 3, với bản thứ 3 mới nhất. 10 phiên bản mới được phát hành vào mùa thu năm ngoái. Với mỗi bản phát hành, có những khả năng và cải tiến mới cho Python Hành trình chuyển từ VBA sang Python của tôiTrong bài đăng này, tôi sẽ cố gắng cung cấp cho các nhà phát triển VBA so sánh nhanh một số tập lệnh mẫu cho các tình huống phổ biến và cách chúng có thể được tạo lại trong Python. Cá nhân tôi đã bắt đầu hành trình lập trình của mình từ những ngày từ C/C++/C#. Tôi bắt đầu thực hiện nhiều thao tác lập mô hình và sắp xếp dữ liệu Excel hơn và thấy rằng tôi không thể làm điều đó nếu không có tập lệnh. VBA thực sự là giải pháp thay thế duy nhất, vì thực hiện nó trong C# mất nhiều thời gian hơn và các ngôn ngữ như Python không thực sự là giải pháp thay thế Tuy nhiên, qua nhiều năm khi tôi chuyển sang lĩnh vực kỹ thuật dữ liệu nhiều hơn, tôi đánh giá cao sự dễ dàng mà bạn có thể xử lý tất cả các loại tệp dữ liệu bằng Databricks hoặc Python Pandas. Trong những năm qua Python đã chứng kiến sự phát triển của thư viện Pandas và nhiều thư viện dành riêng cho Excel khác xuất hiện như openpyxl. Cho đến hôm nay, tôi nghĩ rằng câu hỏi nên sử dụng VBA hay Python không còn là một lựa chọn rõ ràng nữa và cần phải xem xét từng trường hợp sử dụng Anaconda để phát triển PythonMặc dù có rất nhiều IDE (Môi trường phát triển tích hợp) có sẵn cho các nhà phát triển Python, tôi khuyên bạn nên cài đặt Anaconda. Anaconda hiện là nền tảng phân phối phổ biến nhất dành cho các nhà phát triển Python và đi kèm với bản phân phối Python, Spyder IDE được sử dụng cho khoa học dữ liệu và Jupyter Notebooks – nền tảng sổ ghi chép hàng đầu để phát triển Python Tải xuống gói phân phối từ trang web Anaconda cho hệ điều hành của bạn (Windows, Apple, Linux) và bắt đầu cài đặt Sau khi cài đặt, bạn có thể quyết định xem mình có muốn tiếp tục viết mã trong Spyder IDE hay Jupyter Notebooks hay không. Đối với người mới bắt đầu, tôi khuyên dùng Jupyter vì nó dài dòng hơn và bạn có thể chạy các đoạn mã của mình trong khi xem kết quả đầu ra của chúng Để bắt đầu, hãy mở Jupyter Notebooks. Sau một lúc, bạn sẽ được chào đón với một cửa sổ trình duyệt nơi bạn sẽ được chào đón bởi Jupyter. Bây giờ chúng ta hãy tạo tệp Script mới. Nhấp vào nút Mới và chọn Python 3 (ipykernel). Vậy là xong, bạn sẽ thấy một tab trình duyệt đang mở với một tệp python chưa được đặt tên đã sẵn sàng hoạt động. Bây giờ, bạn đã sẵn sàng để khám phá các tập lệnh của chúng tôi. Nếu bạn muốn làm quen với Jupyter, tôi khuyên bạn nên đọc hướng dẫn này. ví dụ 1. Chào thế giớiHãy bắt đầu với một ví dụ rất đơn giản trong khi làm quen với việc sử dụng Jupyter Notebooks Xin chào thế giới trong VBAVới VBA, bạn luôn cần khai báo một thủ tục con chạy mã của bạn. Do đó, chúng tôi sẽ bắt đầu bằng cách tạo Phụ chính của chúng tôi và bên trong chúng tôi sẽ bao gồm một Gỡ lỗi đơn giản. In câu lệnh để xuất Hellos của chúng tôi trên cửa sổ bảng điều khiển ngay lập tức Xin chào thế giới trong PythonTrong Python nếu bạn đang chạy mã từ IDE, bạn chỉ cần chạy câu lệnh in sau. Chỉ cần nhập mã của bạn vào ô đầu tiên và nhấn SHIFT+ENTER để thực thi mã Trong trường hợp bạn sẽ biên dịch các tệp của mình, bạn sẽ cần chỉ định quy trình chính bằng cách xác định và chạy nó như vậy def main(): print("Hello World!") main() Đó là một cách thực hành tốt để luôn xác định một thủ tục chính vì bạn đã quen với việc tạo các gói và tệp thực thi python phức tạp hơn. Tuy nhiên, trong các ví dụ của tôi dưới đây, tôi muốn giữ cho mã đơn giản và tránh gói nó trong phần chính. ví dụ 2. Viết vào một ôTrong ví dụ tiếp theo của chúng tôi, chúng tôi sẽ cần tạo một tệp Excel trống và viết một ô duy nhất và đóng tệp Ghi vào một ô trong VBATrong VBA, chúng ta sẽ cần tạo một Ứng dụng Excel mới (hoặc sử dụng ứng dụng hiện có), tạo một sổ làm việc mới, mở trang tính đầu tiên và viết văn bản vào ô trang tính đầu tiên của chúng ta. Cuối cùng, chúng tôi sẽ lưu tệp của mình và đóng ứng dụng Excel Sub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub Mã này thực sự rất nặng vì bạn sẽ nhận thấy rằng sẽ mất một lúc để thấy ứng dụng Excel mới được khởi chạy Ghi vào một ô trong PythonTrong Python, chúng tôi thường dự phòng một số thư viện nhất định cho phép chúng tôi chạy một số hoạt động nhất định. Trong trường hợp của Excel, nếu chúng ta muốn có trải nghiệm rất giống với việc sử dụng VBA, chúng ta có thể tận dụng thư viện openpyxl. Nó đi kèm với tất cả các khả năng cần thiết thường xuyên mà bạn có thể mong đợi từ VBA. Ngoài ra, nó rất nhẹ vì nó hoạt động trên cấu trúc XML của các tệp Excel (đúng vậy - các tệp Excel thực sự là các tệp XML đóng gói) thay vì phải khởi chạy Excel để chạy các hoạt động cho chúng tôi. Điều xảy ra bên dưới là chúng tôi tạo một Sổ làm việc mới, lấy trang tính hoạt động đầu tiên, lưu chuỗi và lưu tệp mới của chúng tôi hoặc ghi đè lên tệp cũ import openpyxl as op wb = op.Workbook() ws = wb.active ws.cell(1,1).value = "Hello there!" wb.save(r"C:\.. \Test.xlsx") #Replace .. with your file location Đánh giá cao mã ngắn hơn bao nhiêu. Vì không có khả năng tương tác với Excel nên chúng tôi không cần nhớ về việc tự đóng ứng dụng – vì nó chưa bao giờ được mở ngay từ đầu. Trong Python và trong VBA, chúng tôi không thực sự phải khai báo các biến của bạn. Tuy nhiên, trong VBA, chúng ta sẽ không thể thấy bất kỳ gợi ý nào về các phương thức và thuộc tính của biến nếu chúng ta không khai báo chúng. Tuy nhiên, trong Python, nếu bạn xác định một biến, bạn có thể tạo một hàng mới trong Jupyter và nhấn TAB sau dấu chấm “. ” để xem các phương thức/thuộc tính có sẵn hoặc nhấn SHIFT+TAB để lấy tài liệu về phương thức. Thuận tiện hơn nhiều ví dụ 3. Thao tác chuỗiTrong nhiều kịch bản kịch bản, chúng tôi thường sử dụng VBA để thực hiện các thao tác trên Chuỗi mà nếu không sẽ rất cồng kềnh bằng cách sử dụng TRÁI, PHẢI, TÌM hoặc các Công thức Excel khác. Hãy so sánh các ví dụ thao tác nhiều chuỗi trong VBA với Python Thao tác chuỗi trong VBAThông thường, sử dụng các công thức Excel, thật dễ dàng để thực hiện các thay đổi bằng cách sử dụng các hàm LEFT, RIGHT tiêu chuẩn. Điều khó hơn trong Công thức Excel là tách văn bản. Dưới đây là một ví dụ đơn giản trong VBA Dim full_name As String full_name = "[email protected]" If InStr(full_name, "@") Then full_name = Split(full_name, "@")(0) first_name = Split(full_name, "_")(0) last_name = Split(full_name, "_")(1) first_name = StrConv(Trim(first_name), vbProperCase) 'Tom last_name = StrConv(Trim(last_name), vbProperCase) 'Hardy Thao tác chuỗi trong PythonMã trong python sẽ trông tương tự, nhưng lưu ý rằng thay vì chạy các hàm trên văn bản, các chuỗi của chúng tôi thực sự sẵn sàng cho các phương thức tách, viết hoa và cắt xén văn bản full_name = "[email protected]" if full_name.find("@") > 0 : full_name = full_name.split(sep="@")[0] first_name = full_name.split("_")[0] last_name = full_name.split("_")[1] first_name = first_name.strip().capitalize() #Tom last_name = last_name.strip().capitalize() #Hardy Ví dụ 4. Lặp lại các hàngMột tác vụ phổ biến mà bạn thực hiện trong VBA là lặp qua một tập hợp các hàng để chạy các tác vụ trên các hàng riêng lẻ mà bạn sẽ gặp khó khăn khi xử lý bằng Công thức Excel. Đối với ví dụ này, chúng tôi sẽ sử dụng bảng Excel đơn giản sau. Điều tôi muốn là lặp qua các hàng và in tất cả họ và tên của những người có thu nhập trên 60k Lặp lại các hàng trong VBATrong VBA, chúng tôi thường không lặp lại trên toàn bộ hàng mà thường xuyên hơn trên các hàng của một cột cụ thể (như cột id) để lọc các mẫu và chỉ sau đó chúng tôi mới chạy các tác vụ trên các cột khác của hàng cụ thể đó Dưới đây tôi cần xác định tất cả các ô thu nhập trong cột G và sau đó chỉ lọc những ô có giá trị. Tiếp theo trong vòng lặp, tôi đang kiểm tra xem giá trị có trên 60k hay không và bỏ qua hàng tiêu đề. Để in họ và tên, tôi đặt ô theo cột -5 và -4 tương ứng để ghi lại họ và tên Sub IterateRows() Dim cell As Range Dim ws As Worksheet Set ws = Sheets("Sheet1") For Each cell In ws.Range("G:G").SpecialCells(xlCellTypeConstants) If cell.Value > 60000 And cell.Row > 1 Then Debug.Print "First name: " & cell.Offset(, -5) & ", Last name: " & cell.Offset(, -4) End If Next cell End Sub Tôi muốn nói rằng đây là nơi VBA hơi vụng về vì có rất nhiều lỗi ở đây. Bạn có thể lập luận rằng chúng tôi có thể đã áp dụng Bảng ở đầu tập dữ liệu hoặc áp dụng bộ lọc. Tuy nhiên, tất cả những điều này yêu cầu các bước bổ sung Xem thêm Phím tắt Microsoft Excel Lặp lại các hàng trong PythonTrong Python, chúng tôi sẽ dự phòng một trong những thư viện phân tích dữ liệu phổ biến nhất – Pandas. Giờ đây, Pandas được các nhà khoa học dữ liệu yêu thích và rất linh hoạt do thực tế là nó có thể được áp dụng trên tất cả các loại tệp và lược đồ. Cấu trúc dữ liệu chính trong Pandas là DataFrame - về cơ bản đại diện cho một bảng có tiêu đề Trong mã bên dưới, chúng tôi bắt đầu bằng cách nhập Pandas và tải tệp và trang tính vào df, đây là một biến với DataFrame của chúng tôi. DataFrame theo mặc định phát hiện hàng tiêu đề (theo mặc định là hàng đầu tiên). Chúng tôi có thể sử dụng iterrows để lặp qua từng hàng trong DataFrame của chúng tôi. Chúng tôi có thể xây dựng bộ lọc của mình trực tiếp vào DataFrame bằng cách đơn giản df[ df[“ income”]>60000 cho biết rằng chúng tôi muốn lọc tất cả các giá trị thu nhập trên 60k import pandas as pd file_name = r"C:\...\Test.xlsx" #Replace .. with your path df = pd.read_excel(file_name, sheet_name="Sheet1") for r in df[ df["income"]>60000 ].iterrows(): first_name = r[1]["first_name"] last_name = r[1]["last_name"] print(f"First Name:{first_name} Last Name:{last_name}") Điều tuyệt vời về DataFrames là bạn có thể thêm chúng rất dễ dàng để đơn giản hóa công việc này hơn nữa bằng cách tạo một chuỗi chỉ chứa họ và tên được lọc như bên dưới. Đây là một giải pháp rất tao nhã và đơn giản hơn là sử dụng VBA import pandas as pd file_name = r"C:\...\Test.xlsx" #Replace .. with your path df = pd.read_excel(file_name, sheet_name="Sheet1") df = df[df["income"] > 60000] names = "First name:" + df["first_name"]+", Last name: " + df["last_name"] for n in names: print(n) Ví dụ 5. Chèn và xóa hàngThông thường, bạn có thể sử dụng VBA để chèn các hàng dữ liệu mới vào các trang tính hiện có hoặc xóa các hàng hiện có. Vấn đề khi sử dụng VBA là điều này thường đi kèm với chi phí tính toán lớn khi so sánh với Python Chèn và xóa hàng trong VBANhư đã nói ở trên, việc chèn/xóa có thể tốn thời gian trong VBA – tùy thuộc vào số lượng hàng dữ liệu bạn sẽ có bên dưới các hàng đã chèn/xóa. Điều này thường là do Excel sẽ biên dịch lại rất nhiều phép tính hoặc vì các lý do khác ________số 8Chèn và xóa hàng trong PythonVì chúng tôi có thể không nhìn vào một bảng tính có cấu trúc, chúng tôi sẽ lại dự phòng trên thư viện openpyxl. Trái ngược với VBA, chúng ta cần làm việc trên một tài liệu đóng. Nếu chúng tôi muốn lưu các thay đổi của mình, chúng tôi cần hoàn thành việc lưu import openpyxl as op file_name = r"C:\...\Test.xlsx" #Replace .. with your path wb = op.load_workbook(file_name) ws = wb["Sheet1"] ws.delete_rows(10) ws.insert_rows(10) wb.save(file_name) Ví dụ 6. Thêm và xóa trang tínhThêm và xóa bảng tính trong VBATrong VBA, chúng ta sẽ cần thêm một trang tính trống vào ActiveWorkbook của mình (trang đang mở và hiển thị), chỉ khi đó chúng ta mới có thể đặt tên cho trang tính của mình. Khi xóa trang tính, chúng tôi có thể gặp sự cố là chúng tôi sẽ nhận được cửa sổ bật lên hỏi chúng tôi có muốn xóa trang tính không. Điều đó có thể được tắt bằng tùy chọn DisplayAlerts nhưng yêu cầu thêm một bướcSub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub 0Thêm và xóa bảng tính trong PythonTrong Python, cả hai thao tác đều là onelinersSub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub 1Ví dụ 7. Định dạng ôĐịnh dạng ô trong VBA____12Định dạng ô trong PythonTrong Python để thực hiện định dạng ô Excel, chúng ta sẽ cần một vài mô-đun bổ sung – Phông chữ, Màu sắc, Đường viền và Bên. Sau khi nhập, quy trình này khá giống với cách bạn thực hiện trong VBA Sub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub3 Ví dụ 8. Câu điều kiệnBáo cáo Contiational trong VBASub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub4 Câu lệnh có điều kiện trong PythonSub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub5 Ví dụ 9. Hộp tin nhắnHộp thông báo là một cách dễ dàng để thông báo cho người dùng của bạn về các sự kiện nhất định, chẳng hạn như hoàn tất việc chạy macro hoặc hỏi họ câu hỏi Có/Không đơn giản Hộp thông báo trong VBATrong VBA, chúng tôi sử dụng hàm MsgBox gốc. Vấn đề của họ là đối với hộp Có/Không, chúng ta cần nhớ rằng hàm sẽ trả về mã VBA mà chúng ta cần so sánh bằng cách sử dụng một trong các biến tích hợp vbYes hoặc vbNo Sub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub6 Hộp thông báo trong PythonPython không đi kèm với chức năng Hộp thư gốc. Thay vào đó, bạn cần nhập một thư viện có tính năng này. Tôi khuyên bạn nên sử dụng tkinter vì cách sử dụng nó rất giống với chức năng MsgBox VBA Sub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub7 Ví dụ 10. Chức năngNhư ví dụ cuối cùng của tôi, hãy để chúng tôi so sánh cách bạn có thể tạo các hàm tùy chỉnh trong VBA với Python Hàm trong VBATrong VBA, chúng ta luôn cần phải rõ ràng liệu chúng ta đang định nghĩa chương trình con hay hàm. Đối với Hàm nếu bạn muốn chỉ định số lượng đối số không xác định, bạn có thể sử dụng ParamArray Sub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub8 Hàm trong PythonTrong Python, chúng ta không cần phải rõ ràng về chương trình con so với hàm. Mã chính của bạn sẽ chỉ chạy khi nó bỏ qua các chức năng được xác định từ trên xuống dưới như hình bên dưới. Ngoài ra, nếu bạn muốn tạo các hàm với số lượng đối số không xác định, bạn có thể đặt trước đối số của mình bằng * (hoặc ** nếu bạn muốn một từ điển thay vì một danh sách) Sub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub9 Python so với VBA. kết luậnMặc dù tôi không tranh luận về việc ngừng sử dụng VBA hoàn toàn trong các tập lệnh Excel của bạn, nhưng tôi nghĩ bạn nên bắt đầu xem xét Python cho các tác vụ xử lý dữ liệu/tự động hóa phức tạp hơn. Ngược lại, khi tôi được hỏi về ngôn ngữ nào là khởi đầu tốt cho các nhà phân tích mới bắt đầu – tôi vẫn khuyên họ nên bắt đầu với VBA. Với Excel, bạn có một IDE được tích hợp sẵn, các tập lệnh VBA của bạn có thể dễ dàng được chia sẻ và đánh giá cao bởi những người khác tại nơi làm việc của bạn. Hãy để tôi mở rộng thêm một chút tại sao đôi khi VBA vẫn có thể là lựa chọn mặc định của bạn Tại sao bạn vẫn có thể thích sử dụng VBA?Bạn vẫn nên gắn bó với VBA nếu bạn là nhà phát triển mới bắt đầu và chủ yếu là người dùng Excel. Nếu bạn chưa nắm vững về lập trình và hàng ngày bạn chỉ tạo các tập lệnh đơn giản, thường được ghi sẵn, tôi không nghĩ rằng việc chuyển đổi sẽ mang lại cho bạn nhiều lợi ích.
Khi nào là thời điểm thích hợp để học Python?Nếu bạn là kỹ sư dữ liệu/nhà khoa học dữ liệu thì Python có ý nghĩa hơn ngay từ đầu. Bạn không thực sự quan tâm nếu bạn cần xử lý tệp Excel, csv hay json, dữ liệu là dữ liệu. Trong những trường hợp như vậy, tất cả các lợi ích của việc đóng gói VBA bằng các tệp Excel, v.v. không thực sự quan trọng Tôi có thể sử dụng Python để tự động hóa Excel không?Nhìn chung, Tự động hóa Python Excel là một quy trình đổi mới mà bạn có thể sử dụng để tạo báo cáo trực quan trên Python giống như cách bạn làm trên Excel một cách liền mạch. Organizations can leverage Python Excel Automation to leverage their business tasks according to their needs.
Python có thể thay thế macro Excel không?Có, hoàn toàn đúng . VBA thường được sử dụng để tự động hóa Excel bằng macro, thêm các hàm trang tính mới do người dùng xác định (UDF) và phản ứng với các sự kiện Excel. Mọi thứ trước đây bạn đã làm trong Excel bằng VBA đều có thể đạt được bằng Python. Sử dụng Python để thay thế VBA có nhiều lợi ích và thường nhanh hơn VBA.
Tôi có thể sử dụng Python trong Excel VBA không?Mọi thứ bạn có thể viết bằng VBA đều có thể được thực hiện bằng Python . Trang này chứa thông tin sẽ giúp bạn dịch mã VBA sang Python. Xin lưu ý rằng Mô hình đối tượng Excel là một phần của Excel và được Microsoft ghi lại.
VBA hay Python tốt hơn cho Excel?Không giống như ngôn ngữ VBA được sử dụng trong Excel, phân tích dữ liệu bằng Python sạch hơn và cung cấp khả năng kiểm soát phiên bản tốt hơn . Tốt hơn nữa là tính nhất quán và chính xác của Python trong việc thực thi mã. Những người dùng khác có thể sao chép mã gốc và vẫn trải nghiệm quá trình thực thi trơn tru ở cùng cấp độ với mã gốc. |