Lập trình viên kết nối chương trình với Excel. Lập trình tuyến tính trong Excel

Mọi người dùng đều từng trải qua thực tế rằng đôi khi trong Excel không có công cụ phù hợp nào đáp ứng được nhu cầu của họ. Với tất cả sự phong phú Khả năng của ExcelĐôi khi không thể tự động hóa các giải pháp cho một số vấn đề vì không có giới hạn cho sự hoàn hảo. Giải pháp hoàn hảo– điều này mang lại cho người dùng cơ hội tạo ra các công cụ cụ thể của riêng họ. Macro được tạo ra cho mục đích này.

Viết macro trong Excel

Mã số Vĩ mô Excelđược viết bằng ngôn ngữ Ngôn ngữ lập trình cho Ứng dụng (VBA) và được thực thi bởi công cụ ứng dụng được đính kèm. Hầu hết các công cụ này không có sẵn ở cấp độ cửa sổ chương trình excel. Cách viết macro.

Bây giờ hãy minh họa bằng thông tin ví dụ về cách viết, chỉnh sửa và thực thi mã macro.

Để viết macro:


Ghi chú. Nếu không có tab “PHÁT TRIỂN” trong menu chính thì nó phải được kích hoạt trong cài đặt: “FILE” - “Tùy chọn” - “Tùy chỉnh Ribbon”. Trong danh sách bên phải “Tab chính:”, hãy chọn tùy chọn “Nhà phát triển” và nhấp vào nút OK.



Khả năng macro trong Excel

Macro cho phép bạn tự động hóa các quy trình làm việc với tài liệu và hơn thế nữa... Chúng gần như có thể thực thi đồng thời hàng nghìn công cụ trong một thao tác (thậm chí chỉ bằng một cú click chuột). Điều này mở rộng khả năng làm việc với chương trình.

Sử dụng macro, người dùng có thể tạo công cụ của riêng mình, công cụ mà anh ta thiếu trong kho vũ khí Excel. Ví dụ: khi bạn cần tự động chọn từng hàng thứ hai chỉ bằng một cú nhấp chuột. Hoặc bạn cần tạo đồng thời một số lượng bản sao nhất định của một bảng tính nhất định. Danh sách nhu cầu của người dùng về tự động hóa quy trình làm việc có thể được tiếp tục vô thời hạn.

Nếu không thể tạo macro trong tất cả các chương trình có trong gói MS Office. Trong quá trình làm việc thường ngày, người dùng sẽ phải thực hiện nhiều thao tác thủ công (chọn từng dòng khác bằng cách dùng chuột nhấp vào từng tiêu đề thứ hai hoặc sao chép và dán từng trang một). thủ công V. trường hợp tốt nhất dẫn đến mất mát lượng lớn thời gian và tệ nhất là dẫn đến sai sót hoặc thậm chí mất mát dữ liệu có giá trị.

Khả năng tạo macro và tự động hóa quy trình làm việc giúp công việc của bạn không bị lãng phí thời gian và sai sót. Tiếp theo, chúng ta sẽ xem cách tạo một macro có thể thực thi tự động và không có lỗi. công việc thường ngày chỉ trong một cú click chuột. Chúng tôi cũng sẽ xem xét ở những nơi nào sách bài tập Excel có thể tạo và lưu trữ macro. Cách khởi chạy và thực thi chúng, cũng như cách tối ưu hóa chúng nhiều nhất có thể để phù hợp với nhu cầu của bạn.

Excel cung cấp một kho công cụ lớn và phong phú để lưu trữ và xử lý lượng thông tin dữ liệu khổng lồ. Mặc dù đối với chương trình phân tích phổ biến nhất Excel, việc lưu trữ dữ liệu không thú vị bằng khả năng xử lý, cấu trúc và phân tích dữ liệu bằng cách trình bày trong báo cáo. Vì những mục đích này, công cụ xử lý dữ liệu phân tích mạnh mẽ nhất, chẳng hạn như “Bảng tổng hợp”, sẽ được sử dụng. Nhưng nó có thể được cải thiện hơn nữa với sự trợ giúp của macro. Và sau đó là những khả năng bảng tổng hợp không biết ranh giới.

Ngoài các mẹo về cách học viết macro VBA cho Excel, tôi sẽ kể cho bạn nghe câu chuyện của tôi - tôi đã học lập trình VBA như thế nào.

Mọi chuyện bắt đầu vào thế kỷ trước, vào 1993 năm tôi còn đi học. Trong các bài học về khoa học máy tính, trong lớp của chúng tôi, có những chiếc máy tính quái đản tên là “Corvette” và chúng tôi đã viết những chương trình đơn giản trên chúng bằng BASIC. Những máy tính này khác biệt khá nhiều so với những máy tính “bình thường” (tương thích với IBM) - chúng có màn hình đơn sắc, nhưng không có ổ cứng và ổ đĩa mềm, và thứ duy nhất chạy trên nó (tự động, sau khi khởi động) là trình thông dịch ngôn ngữ Cơ bản.

Trên thực tế, sở thích lập trình của tôi xuất hiện sớm hơn - vào năm 9 tuổi, khi tôi nhìn thấy trên tạp chí “Modelist-Konstruktor” năm 1988 (mà tôi thường xuyên đọc từ đầu đến cuối) một số mã máy cho máy tính “Chuyên gia”. . Khi đó tôi rất quan tâm đến khả năng nhập một số chữ cái và số vào máy tính để nó thực hiện những gì tôi muốn. Than ôi, tình hình tài chính của bố mẹ tôi vào thời điểm đó còn nhiều điều đáng mong đợi, và việc mua bất kỳ chiếc máy tính nào cũng là điều không thể. Vì vậy, tôi thích thú bằng cách sao chép những mã này từ tạp chí vào một cuốn sổ, với hy vọng một ngày nào đó tôi sẽ có một chiếc máy tính và có thể điều khiển nó :)

Bởi vì vào những ngày đó máy tính ở nhà là một điều xa xỉ (chỉ một số có Spectrum ở nhà, và một số may mắn có được chiếc IBM PC 286 đắt tiền), tôi chỉ học Basic ở trường, đôi khi ở lại muộn sau giờ học. Chuong trinh hoc chỉ có 2 năm giảng dạy môn “Tin học” (lớp 10 và 11), nhưng từ nhỏ tôi đã thích các loại điện tử nên bắt đầu tham gia các lớp học từ lớp 8, đọc ở đó cuốn sách hướng dẫn duy nhất về “Corvette” (đây là cuốn sách bắt đầu hành trình lập trình của tôi, ở dạng PDF) và cố gắng soạn thảo các chương trình đơn giản. Chẳng bao lâu giáo viên bắt đầu cho tôi vào máy tính chính(chỉ có điều nó có khả năng lưu các chương trình vào đĩa mềm 5,25" - và thậm chí sau đó, nó còn tốn rất nhiều công sức) - và các chương trình của tôi trở nên phức tạp hơn nhiều. Thậm chí có lần tôi còn thành công trong việc triển khai trò chơi “Poker” với Giao diện đồ họa(hóa ra là khoảng 2000 dòng mã) - điều này mặc dù thực tế là trình thông dịch Cơ bản chỉ cho phép hiển thị các ký hiệu và đồ họa nguyên thủy trên màn hình.
Kết quả là vào cuối năm học ( 1996 năm) Tôi sử dụng thành thạo vòng lặp và có một số kinh nghiệm trong việc soạn thảo thuật toán.

Về thuật toán, thuật ngữ này vẫn khiến tôi dị ứng. Khi học ở trường, tại các bài giảng về khoa học máy tính (tôi học khá giỏi và chúng tôi, những người chiến thắng trong tất cả các loại Olympic, đã được gửi đến giáo dục thêm toán cao hơn và khoa học máy tính vào một trường bán thời gian ở USU), chúng tôi buộc phải viết các thuật toán bằng một loại mã giả nào đó (sự pha trộn giữa tiếng Nga và tiếng Nga). Turbo Pascal). Vì tôi tụt hậu đáng kể so với các bạn cùng lứa trong lĩnh vực lập trình (họ học tại Máy tính tương thích với IBM, nơi có cùng một Pascal và nhiều hơn nữa, và tôi, ngoại trừ BASIC, không biết và không thấy gì), rất khó để nắm vững cú pháp của ngôn ngữ thuật toán. Ngoài ra, tôi không hiểu (và vẫn chưa hiểu) tại sao lại phải mất một giờ để biên soạn thuật toán cho chương trình đơn giản nhất, nếu bạn có thể mở trình soạn thảo và viết vài dòng mã (đối với tôi, người thường biết tiếng Anh, cú pháp của ngôn ngữ BASIC rõ ràng hơn nhiều so với mã giả thuật toán bí ẩn này). Không có cuộc nói chuyện nào về sơ đồ cả - khi tôi nhớ đến viện nơi chúng tôi buộc phải vẽ sơ đồ (trên vài tờ A4) cho các chương trình đơn giản nhất gồm 10 dòng, tôi không còn hiểu làm thế nào mà cuối cùng, mong muốn học lập trình vẫn có thể tồn tại. cái này.. .

Sau khi tốt nghiệp ra trường, tại học viện, tôi học một chút Turbo Pascal, nơi việc đào tạo lập trình của tôi đã dừng lại trong một thập kỷ (không có máy tính ở nhà hoặc ở nơi làm việc) và tôi quên hầu hết mọi thứ tôi đã học trong các lớp khoa học máy tính.
Tuy nhiên, trong 2004 Năm sau, tại nơi làm việc của tôi, các ông chủ cuối cùng đã quyết định thay thế chiếc máy đánh chữ (mà tôi đã gõ phím rất khéo léo) bằng một chiếc máy tính đơn giản (đó là Pentium-1 với 64 megabyte RAM và Windows 98). Vì lần đầu tiên nhìn thấy Windows nên tôi phải học cách sử dụng máy tính từ đầu.

Tôi làm chủ máy tính một cách nhanh chóng, bởi vì... Vào ngày thứ hai, Windows gặp sự cố sau nỗ lực ép xung bộ xử lý không thành công và tôi phải khẩn cấp học cách cài đặt lại hệ điều hành và chương trình. Người giúp tôi cài đặt máy tính ngày đầu tiên làm quen với máy tính hệ điều hành và các chương trình cơ bản, không thể giúp tôi liên tục. Anh ấy đã bỏ rơi tôi Bản phân phối Windows và Office, một vài chiếc đĩa với các tiện ích khác nhau, sau đó anh ấy giải thích cho tôi cách nhập và định dạng văn bản trong Word, cách mở và lưu tệp qua menu chương trình rồi rời đi, chúc tôi may mắn. Tôi không có lựa chọn nào khác ngoài việc làm chủ hệ thống một cách ngẫu nhiên.

Thật là một điều may mắn (sau máy đánh chữ) là khả năng lưu và chỉnh sửa các tài liệu đã in... và tôi không hề bận tâm khi việc khởi chạy Word mất khoảng 20-30 giây (và CorelDRAW được tải trong vài phút). Máy tính đã trở thành sở thích chính của tôi - trong vài tháng, tôi thành thạo các chương trình cơ bản, sáu tháng sau, tôi tìm kiếm trong sổ đăng ký với sức mạnh và chính, khôi phục Windows bị lỗi (ai còn nhớ Win98 sẽ hiểu tôi), trong quá trình đó tôi đã thành thạo kiến trúc máy tính (tôi liên tục phải cắm lại các mô-đun bộ nhớ, kết nối thêm Đĩa cứng, và như thế.)

Công việc của tôi là chuẩn bị nhiều tài liệu khác nhau(hành động, mệnh lệnh, v.v.) và tôi bắt đầu nghĩ cách đơn giản hóa nó (tôi không thích làm những việc giống nhau mỗi ngày). Gần như ngay lập tức tôi nhận thấy mục “Visual Basic Editor” trong Trình đơn Microsoft Word, và đi xem nó là loại động vật gì. Mình mò mẫm, xem phần trợ giúp tích hợp sẵn nhưng không hiểu nhiều. Cơ bản này hoàn toàn không giống với cơ bản tôi đã học ở trường. Tôi phát hiện ra rằng bạn có thể vẽ biểu mẫu bằng các nút và Trường văn bản, - nhưng tôi vẫn không hiểu làm thế nào để nó hoạt động. Không có quyền truy cập Internet nên tôi không thể xem ví dụ về cách sử dụng.

Tôi lẽ ra đã từ bỏ vấn đề này, nhưng rồi, vào một ngày đẹp trời, Tập tin Word Chúng bắt đầu mở chậm và khi mở ra, một loại lỗi nào đó bắt đầu xuất hiện. Tôi bắt đầu xem xét nó và phát hiện ra rằng lỗi xảy ra khi thực thi macro 20 dòng và lỗi này xuất hiện một cách bí ẩn trong tất cả tài liệu của tôi. Sau khi xem mã, tôi nhận ra rằng đây không gì khác hơn là một loại virus macro lây nhiễm vào tất cả các tệp Word đã được mở và cố gắng gửi một số dữ liệu qua mạng không thành công. (nhân tiện, đây là lần đầu tiên và lần cuối cùng tôi nhìn thấy macrovirus - kể từ đó hàng nghìn người đã đi qua tôi Tệp Excel và Word, và tôi chưa bao giờ gặp virus macro trong đó). Điều này khiến tôi quan tâm - nếu macro có thể thu thập dữ liệu từ máy tính, sao chép chính nó sang các tệp khác và thậm chí gửi nội dung nào đó đến một địa chỉ IP khác, thì hầu hết mọi thứ đều có thể được thực hiện bằng cách sử dụng macro!

Và tôi bắt đầu thành thạo macro - đọc trợ giúp tích hợp cho VBA, thử các ví dụ mã từ trợ giúp này, viết các vòng lặp đơn giản (mà tôi nhớ ở trường), vẽ các biểu mẫu đơn giản, v.v. Tôi đã tận dụng triệt để việc ghi macro trong Word, tối ưu hóa mã kết quả. (Lúc đó tôi không làm việc với Excel - tôi thực sự không hiểu tại sao nó lại hữu ích). Điều này mang lại rất ít lợi ích - nhưng nó rất thú vị đối với tôi, bởi vì... Tôi đam mê lập trình từ khi còn đi học. Dần dần, công việc của tôi bắt đầu trở nên đơn giản hơn, mặc dù việc tự động hóa tốn nhiều thời gian hơn đáng lẽ phải có. thực hiện thủ công mọi hành động.

Một ngày nọ, ở 2006 năm, tôi thực sự cần kỹ năng lập trình VBA. Là một phần công việc của mình, tôi cần tạo (vẽ trong CorelDRAW) nhiều kế hoạch sơ tán tương tự (đây là những bản vẽ các phòng có mũi tên và các biểu tượng cụ thể). Có thể vẽ chúng theo cách thủ công, nhưng để kết quả tuân thủ GOST, cần duy trì các tỷ lệ và khoảng cách khác nhau giữa các phần tử. Việc di chuyển các biểu tượng xung quanh trang tính, điều chỉnh khoảng cách với các dòng và các biểu tượng lân cận “bằng mắt” nhanh chóng trở nên nhàm chán. Và tôi cũng phải căn chỉnh mọi thứ, vẽ nhanh và nối các đường chấm cho đẹp, chuẩn bị trước khi in mỗi lần, v.v. v.v... Kết quả là, sau khi dành 2 hoặc 3 tháng để tự động hóa quy trình này, tôi đã giảm được thời gian cần thiết để tạo một bản vẽ lên nhiều lần. Ngoài ra, thật thú vị khi nhìn vào khuôn mặt của các đồng nghiệp của tôi khi điều kỳ diệu xảy ra trước mắt họ - các đường thẳng được vẽ và di chuyển trên màn hình, các mũi tên thẳng hàng và uốn cong, mọi thứ lóe sáng, và một phút sau tôi đã rút ra được một đĩa mềm từ máy tính, sẵn sàng để gửi đến nhà in (có hai bản sao của tệp, hoàn toàn sẵn sàng để in)

Bên ngoài đang là mùa hè 2008 của năm. Tôi không có việc gì tốt hơn để làm nên tôi quyết định giúp đỡ những người đến diễn đàn để xin lời khuyên giải quyết vấn đề trong Excel. Tôi nhanh chóng tham gia vào nó - thật vui khi được nghe lòng biết ơn từ những người mà “nút thần kỳ” của tôi đã tiết kiệm được nhiều giờ cho cùng một loại công việc. Ngoài ra, sự trợ giúp đòi hỏi rất ít nỗ lực - đôi khi chỉ cần viết 2-3 dòng mã là đủ. Sau đó tôi bắt đầu nhận ra rằng kiến ​​thức về VBA và Excel của mình vẫn còn rất rất kém và tôi bắt đầu tìm hiểu, tìm hiểu các giải pháp do những đồng nghiệp giàu kinh nghiệm hơn đề xuất.

Phải mất 2 hoặc 3 năm, trong thời gian đó tôi đã giúp đỡ mọi người trên diễn đàn để bắt đầu cảm thấy tự tin vào Excel. Lúc đầu tôi viết những macro rất đơn giản, sau đó là những macro phức tạp hơn. Một năm sau, họ bắt đầu liên hệ với tôi để đặt hàng - khi đó tôi sẵn sàng làm việc để kiếm từng xu (vì mục tiêu không phải là kiếm tiền mà là giúp đỡ mọi người). Đơn hàng ít nhiều nghiêm trọng đầu tiên mà tôi phải trả phí là chương trình dành cho nhân viên tuyển sinh - tôi phải triển khai cơ sở dữ liệu trong Excel. Trong 3 tuần dày vò và làm lại (chương trình được đặt hàng bởi một sinh viên mà bản thân cô ấy cũng không biết chính xác mình cần gì), chương trình đã được viết ra - và tôi kiếm được khoảng 3.500 rúp từ nó. Kể từ đó tôi không làm việc với sinh viên - không có đủ tiền, không có thông số kỹ thuật, có rất nhiều yêu cầu làm lại (vì giáo viên không thích điều gì đó) và nói chung là thật khó chịu khi nhận ra rằng chương trình sẽ chỉ được tung ra một lần và sau đó sẽ không có ai sử dụng nó.

TRONG 2009 năm tôi đã làm một trang web trang web. Nó chỉ có thể được gọi là một trang web kéo dài - nó bao gồm một trang (nó trông giống như vào thời điểm đó). Như bạn hiểu, một trang web như vậy có thể không mang lại lợi ích gì - những người đã truy cập trang web này đều biết tôi đang làm gì. Nhưng tôi muốn nhiều hơn thế - để trang web mang lại lợi ích cho cả tôi và khách truy cập. Vì vậy, tôi phải khẩn cấp nghiên cứu xây dựng trang web - và nhờ sự giúp đỡ của một người bạn, vài tháng sau, trang web đã có được một công cụ ở dạng CMS Drupal (tôi đã không thể tự mình làm được việc này). Tôi vẫn chưa tìm ra nội dung sẽ xuất bản trên trang web nên tôi bắt đầu sử dụng nó làm sổ tay- xuất bản các macro và chức năng phổ quát hữu ích ở đó để bạn không phải tìm kiếm chúng mọi lúc các tập tin khác nhau, nhớ lại tôi đã làm điều này khi nào và với ai.

Chưa đầy sáu tháng sau, lưu lượng truy cập trang web bắt đầu tăng lên. Hóa ra các macro mà tôi đăng rất thú vị với nhiều người và điều này đã mang lại cho tôi động lực để phát triển hơn nữa tài nguyên - tôi bắt đầu đăng giải pháp làm sẵn dưới dạng tệp Excel và tiện ích bổ sung, hãy chú ý hơn đến chức năng và cấu trúc của trang web. Đồng thời, số lượng đơn đặt hàng bắt đầu tăng lên - khách truy cập trang web nhận thấy khả năng của macro là vô hạn và họ đã tìm đến tôi với yêu cầu tự động hóa công việc của họ. Tuy nhiên, tất cả đều giống nhau, có quá ít đơn hàng để nghiêm túc coi việc lập trình như một nguồn thu nhập - có 2-3 đơn hàng nhỏ mỗi tháng. Ngay cả khi họ đặt hàng một chương trình tương đối phức tạp, nó cũng không mang lại niềm vui - do thiếu kinh nghiệm, tôi ngay lập tức đồng ý về số tiền, và sau đó, vì lòng tốt của mình, tôi đã đồng ý với nhiều sửa đổi khác nhau không có trong bản gốc nhiệm vụ cho chương trình. Kết quả là, tôi đã làm việc hàng tuần cho một chương trình và kiếm được rất ít - vì ban đầu người ta cho rằng có rất ít việc phải làm.

Nhưng khoảng thời gian này (gần một năm) không hề lãng phí - tôi không kiếm được tiền nhưng tôi đã có được kinh nghiệm vô giá trong quá trình phát triển giao diện người dùng(Tôi đã phải vẽ các biểu mẫu đầu vào với hàng trăm trường), giải quyết các tác vụ Excel không chuẩn (xử lý trang web, làm việc với các tệp, hình ảnh, v.v.), đồng thời học cách hiểu khách hàng và nhiệm vụ của họ một cách hoàn hảo (uh, bạn nên đã thấy cách một số người xây dựng nhiệm vụ cho chương trình phức tạp trong một câu 10 từ...). Tôi vẫn chưa trở thành nhà ngoại cảm, nhưng tôi bắt đầu đoán xem khách hàng thực sự muốn gì và đưa ra cho mọi người chính xác những gì họ cần (bản thân hầu hết mọi người cũng không biết họ muốn gì khi yêu cầu giúp đỡ). Và mọi chuyện sẽ ổn nếu không thiếu đơn đặt hàng (thời đó việc giúp đỡ mọi người trên diễn đàn đã trở nên nhàm chán - những câu hỏi giống nhau hàng ngày, không ai muốn sử dụng tìm kiếm, thậm chí cả sinh viên cũng là những kẻ ăn bám).

Và tôi bắt đầu nghĩ về cách tăng số lượng đơn đặt hàng - tôi muốn sở thích của mình cuối cùng cũng bắt đầu tạo ra thu nhập hữu hình. Một lần nữa tôi lại phải bắt tay vào xây dựng trang web - hãy làm chủ nó SEO cơ bản, thiết kế và xây dựng trang web nói chung. Và một ngày tôi nhận ra điều vẫn còn thiếu trên trang web - nút lớnđặt hàng. Không cần suy nghĩ kỹ, trong vòng 5 phút, nút này (bây giờ bạn có thể thấy ở bên trái góc trên cùng pages) đã được thêm vào tất cả các trang của trang web. Kết quả không lâu nữa - trong vòng một tháng, tôi đã nhận được nhiều đơn đặt hàng hơn cả năm trước.

Tới nơi 2012 năm. Số lượng đơn đặt hàng tăng lên đến mức tôi không thể nào xử lý chúng một mình được. Tôi bắt đầu chuyển một số đơn đặt hàng cho đồng nghiệp của mình (đặc biệt là những đơn hàng lớn và phức tạp), vì tôi vẫn chưa thể kiếm hết tiền và tôi thực sự không muốn ngồi vào màn hình nhiều ngày liên tục. Đồng thời, với công việc chính của tôi (từ 8 giờ đến 17 giờ, tôi làm kỹ sư tại một nhà cung cấp dịch vụ Internet ở địa phương), khối lượng công việc tăng lên rõ rệt và tôi không còn thời gian để viết macro trong thời gian làm việc. Kết quả là không còn thời gian cho việc phát triển trang web - vào buổi tối, tôi chỉ có thời gian để sắp xếp một số đơn đặt hàng, và những lá thư chưa đọc bắt đầu tích tụ trong thư.

Đã đến lúc phải thay đổi điều gì đó trong cuộc sống của tôi - đưa ra lựa chọn giữa công việc và lập trình. Và vì vậy, vào giữa tháng 7 năm 2012, tôi đã đưa ra lựa chọn này - tôi đã viết đơn từ chức công việc chính của mình, quyết định cống hiến hết mình cho việc lập trình (phát triển macro cho Excel). Kể từ đó, tôi có quá nhiều thời gian rảnh, vì vậy tôi dự định bắt đầu mở rộng lại trang web và làm việc tích cực hơn với các đơn đặt hàng (để loại bỏ tình trạng khách hàng phải đợi macro của họ trong vài tuần).
Tôi vẫn chưa biết điều gì sẽ xảy ra với tất cả những điều này, thời gian sẽ trả lời. Tôi nghĩ nhu cầu về macro cho Excel sẽ còn tiếp tục trong ít nhất 2-3 năm nữa, vì vậy tôi sẽ không thể thiếu bánh mì và bơ.

Ngoài ra, kế hoạch trong tương lai gần còn có việc phát triển và xuất bản các phần bổ trợ phần mềm chia sẻ cho Excel (những nỗ lực đầu tiên trong lĩnh vực này đã mang lại kết quả tốt).
Và sau đó tôi dự định bắt đầu phát triển cơ sở dữ liệu (có giao diện web) và dần dần chuyển sang làm việc với các dịch vụ web.

<спустя 4 года, решил продолжить статью>

Và bây giờ nó đã ở trong sân 2016 năm. Tôi rất vui vì Microsoft vẫn chưa từ bỏ việc hỗ trợ VBA trong Excel nên tôi vẫn tiếp tục làm việc trong lĩnh vực này. 4 năm này đã thay đổi cuộc đời tôi rất nhiều - thu nhập của tôi tăng lên gấp nhiều lần, tôi bắt đầu đi du lịch nhiều và có ít thời gian làm việc hơn. Số lượng đơn đặt hàng macro không ngừng tăng lên, vì vậy tôi bắt đầu cộng tác với một số lập trình viên, những người mà tôi đã chuyển đơn đặt hàng cho họ khi tôi không thể đáp ứng được do thiếu thời gian. Một số đồng nghiệp của tôi (người mà tôi đã ra lệnh làm việc) biến mất theo thời gian, trong khi những người khác, ngược lại, ngày càng cộng tác với tôi tích cực hơn - và bây giờ tôi có một nhóm có thể giải quyết mọi vấn đề (một đồng nghiệp sử dụng các macro đơn giản và thực hiện chúng một cách nhanh chóng, một cái khác thực hiện các macro phức tạp bằng cách sử dụng giải pháp phi tiêu chuẩn, phần thứ ba giải quyết các đơn đặt hàng khối lượng “âm u”, trong đó bạn cần thảo luận về nhiệm vụ trong vài tuần và sau đó thực hiện nó trong một tháng nữa, phần thứ tư chuyên về công thức, phần thứ năm thiết lập trình phân tích cú pháp, v.v. - mỗi phần đều có lĩnh vực hoạt động riêng).

Nhặt lên đội ngũ tốtĐó không phải là một nhiệm vụ dễ dàng - mặc dù bản thân tôi không thực sự tìm kiếm ai (một nửa trong số họ tìm đến tôi để làm việc, tôi đã tự viết thư cho những người còn lại, vì tôi biết mọi người trên diễn đàn Excel rằng họ là những chuyên gia giỏi), tôi đã không thể làm việc với mọi người thời gian dài. Một số hiếm khi xuất hiện trên mạng và không phản hồi đủ nhanh các đơn đặt hàng, những người khác coi công việc như một sở thích nhiều hơn (nếu đột nhiên không muốn làm việc, một người như vậy có thể biến mất trong một tuần, thậm chí một tháng mà không báo trước cho tôi hoặc người khác. khách hàng). Một người thậm chí còn lừa được tiền của tôi (anh ta đã nhận một số đơn đặt hàng và biến mất mà không trả tiền hoa hồng cho tôi). Nhưng tất cả những điều này đã là quá khứ - bây giờ tôi chỉ có những người đáng tin cậy (người mà tôi đã làm việc cùng được vài năm), những người nhận đơn đặt hàng dù ở mức độ phức tạp nào và luôn hoàn thành công việc.

Vì tôi đã thoát khỏi “thói quen” ( một lượng lớn những đơn hàng nhỏ tuy mang lại thu nhập khá nhưng lại chiếm 100% thời gian của tôi), tôi bắt đầu chú ý hơn đến việc phát triển và quảng bá các phần bổ trợ phổ quát cho Excel. Bây giờ tôi có 9 tiện ích bổ sung như vậy trong kho vũ khí của mình, nhưng chỉ có 5 tiện ích bổ sung được bán thành công: FillDocuments (tác phẩm đầu tiên của tôi, cho đến gần đây, nằm trong số những công cụ dẫn đầu về thu nhập và có nhu cầu ổn định, vì mọi thứ có thể hữu ích cho người dùng để điền tài liệu đã được triển khai ở đó), PastePictures (được bán từ năm 2012, nhưng bắt đầu trở nên phổ biến tương đối gần đây), Unification (3 năm trước đây là chương trình phức tạp nhất trong số các chương trình của tôi), Tra cứu (đơn giản nhất trong số các tiện ích bổ sung của tôi , về cơ bản là một sự thay thế Công thức VLOOKUP, - nhưng rất phổ biến với người dùng) và Parser (một trình phân tích cú pháp phổ biến để thu thập dữ liệu từ các trang web và tệp, chương trình phức tạp nhất của tôi cho đến nay - 17.600 dòng mã). Về trình phân tích cú pháp, vào năm 2013, ý tưởng làm một việc như thế này dường như hoàn toàn phi thực tế đối với tôi (và tôi đã từ chối khách hàng, nói rằng điều đó là không thể thực hiện được). giải pháp phổ quát cho các trang web như Thống nhất - chương trình xử lý giá), nhưng sau đó số lượng đơn đặt hàng cho trình phân tích cú pháp trang web bắt đầu tăng lên và tôi quyết định dùng thử, điều mà tôi chưa bao giờ hối hận - thu nhập từ các giải pháp dựa trên tiện ích bổ sung này vượt quá mọi mong đợi của tôi .

Nhưng không phải chương trình nào cũng thành công. Tôi hoàn toàn từ chối bán một chương trình (YandexMarket) - trang web thay đổi quá thường xuyên, chương trình yêu cầu cải tiến, thuật toán tìm kiếm dữ liệu cần thiết không rõ ràng, sau đó hình ảnh xác thực xuất hiện - và tôi quyết định rằng nó không đáng để lãng phí thời gian phát triển hơn nữa chương trình, trả lại tiền cho một số khách hàng. Các chương trình khác, chẳng hạn như BarcodeScanner, Labels, SearchText, mặc dù đã thu lại được thời gian phát triển và tiếp tục tạo thu nhập nhưng không thể so sánh với năm chương trình hàng đầu.

Khi các tiện ích bổ sung phổ biến được mô tả ở trên phát triển, cái gọi là "công cụ" của chương trình đã được hình thành - một tập hợp các macro và các thành phần giao diện cho phép bạn nhanh chóng tạo ra giải pháp sẵn sàng để bán từ bất kỳ ý tưởng nào. Công cụ này ban đầu cần thiết để hỗ trợ các bản cập nhật (để người dùng có thể kiểm tra và cài đặt bản cập nhật chỉ bằng một cú nhấp chuột), sau đó nó có chức năng bảo mật (tin tặc bắt đầu chú ý đến các giải pháp của tôi, vì nhu cầu về chúng tăng lên hàng năm - và tôi đã phải phát minh kế hoạch khác nhau bảo vệ khỏi việc sử dụng bất hợp pháp, mặc dù thực tế là tính năng bảo vệ mã tích hợp trong Excel không tốt vì nó có thể bị xóa sau vài giây). Trong quá trình đó, tôi phải tạo ra chức năng kích hoạt và cập nhật các chương trình trên trang web; tôi bắt đầu hiểu một chút về PHP và MySQL, tạo ra các tập lệnh tương tác với công cụ chương trình.

Trong vài năm qua, phần lớn thời gian của tôi dành cho việc cung cấp hỗ trợ kỹ thuật (ngày càng có nhiều người mua chương trình mỗi năm) và phát triển tiện ích bổ sung trình phân tích cú pháp, đây là giải pháp phổ biến và hứa hẹn nhất của tôi ( tôi thêm chức năng mới, tôi xuất bản các ví dụ về trình phân tích cú pháp được định cấu hình). Trình độ lập trình của tôi, nhờ trình phân tích cú pháp và công cụ chương trình mới, đã tăng lên rõ rệt - mặc dù mã của tôi 5 năm trước có chất lượng khá cao và hoạt động mà không gặp lỗi, nhưng bây giờ tôi có cách tiếp cận có trách nhiệm hơn đối với việc thiết kế mã , đối mặt với nhu cầu hỗ trợ các tiện ích bổ sung của tôi trong nhiều năm với hàng nghìn dòng mã. Giờ đây, cùng với việc đưa một công cụ mới (đa ngôn ngữ) vào tất cả các tiện ích bổ sung, tôi đang tái cấu trúc (cập nhật) mã, làm cho mã trở nên đơn giản, dễ hiểu và phổ quát hơn. Nhân tiện, về vấn đề đa ngôn ngữ, tôi đã quyết định bán các tiện ích bổ sung của mình bên ngoài CIS và thậm chí còn tạo một trang web riêng (chỉ đăng các tiện ích bổ sung phổ biến ở đó, với giao diện và mô tả trên ngôn ngữ khác nhau), nhưng tôi vẫn quá lười để làm việc này. Có thể một ngày nào đó họ sẽ làm được điều đó (nhưng hiện tại đã có đủ người mua từ CIS)

Kế hoạch của tôi trong tương lai (tính đến tháng 9 năm 2016) là phát triển lĩnh vực phân tích cú pháp trang web trong Excel và cuối cùng tạo video hướng dẫn cho các chương trình của tôi (Tôi không quá lười để thêm chức năng mới vào chương trình trong một vài tuần liên tiếp, trong khi người dùng và Họ không thể tìm ra những gì họ có, do thiếu sự trợ giúp chính thức. Tôi không thích quay video))
Chà, đã đến lúc tham gia thị trường quốc tế, vì tất cả các chương trình của tôi đã trở nên đa ngôn ngữ (mặc dù hiện tại bản dịch chỉ sang tiếng Anh và chỉ một phần)

<продолжение следует>

Để đơn giản hóa việc thu thập thông tin, tự động hóa việc nhập và xuất dữ liệu, v.v., lập trình trong Excel được sử dụng.

Video hướng dẫn viết (lập trình) macro bằng VBA trên Excel

VBA (Visual Basic for Application) là một loại ngôn ngữ lập trình Visual Basic có trong gói Microsoft excel

Lập trình excel giúp tăng tốc độ thực hiện các tác vụ khác nhau trên máy tính.

Khi viết mã trong excel, người lập trình sử dụng:

  • Có hai cách chính để viết mã: viết bên trong một trang tính; bên trong cuốn sách. Bất kỳ chương trình nào trong môi trường làm việc excel bắt đầu bằng từ khóa“SUB”, theo sau là bất kỳ tên nào sử dụng các chữ cái hoặc số, sau đó chúng ta mở và đóng dấu ngoặc () và nhấn “ENTER”, một môi trường làm việc để viết chương trình sẽ được tạo. Trong môi trường làm việc, gõ Ứng dụng, chỉ định ThisWorkBooks - cuốn sách này, sau đó là Trang tính - trang tính, rồi Ô (5,1) - số ô, đầu tiên viết hàng sau đó viết cột. Chương trình sẽ như sau: Ứng dụng - ThisWorkBooks - Sheets - Cells (5,1). Chúng tôi gán địa chỉ này giá trị 10 thông qua toán tử gán khóa “=” và khởi chạy chương trình để thực thi bằng cách nhấn nút “RunSub” hoặc nhấn phím “F5”. Giá trị được gán 10 sẽ xuất hiện ở vị trí được chỉ định.

Khi làm việc với đối tượng này trong Excel, “môi trường phát triển” sẽ được sử dụng. “Môi trường phát triển” được gọi bằng cách nhấn Ctrl + F11, sau đó bạn cần chọn tab “Xem”, sau đó chọn “Trình duyệt dự án”, tab này sẽ hiển thị ba thành phần, hai trang của sổ làm việc và chính sổ làm việc Excel.

DOM - Tài liệu mô hình đối tượng (mô hình đối tượng tài liệu) - độc lập giao diện phần mềm, cho phép các tập lệnh và chương trình tìm quyền truy cập vào nội dung, XHTML và tài liệu HTML và thay đổi thiết kế cũng như cấu trúc của các tài liệu này. DOM không giới hạn cấu trúc của tài liệu mà thể hiện nó dưới dạng cây nút, bất kỳ nút nào trong số đó là một phần tử, thuộc tính, đối tượng đồ họa hoặc văn bản.

  • “Làm việc với biến” là những từ hoặc chữ cái có chứa một số ý nghĩa, ví dụ: X=5, Y=10, bạn có thể thực hiện bất kỳ phép toán nào với chúng. Giả sử, để tìm tổng các giá trị này bằng lập trình, trong môi trường làm việc, chúng ta nhập chương trình tiếp theo: Cells(2,1) = X+Y nhấn “RunSub” hoặc “F5” ở dòng 2, cột 1 sẽ hiển thị 15 - tổng các giá trị có thể lập trình. Ngoài số, các giá trị có thể chứa từ, điểm khác biệt duy nhất là các từ có thể lập trình phải được đặt trong dấu ngoặc kép.

Lập trình rất dễ học và có thể sử dụng được người dùng thông thường. Việc phát triển macro trong VBA sẽ tự động hóa quy trình làm việc và tăng năng suất của nó.

Tham khảo chức năng bảng tính Excel là tài liệu tham khảo cho các hàm bảng tính Excel ở định dạng Trợ giúp Windows.chm. Tệp này chứa danh sách đầy đủ các hàm trong bảng Excel bằng tiếng Nga và tiếng Anh, đồng thời được cung cấp các ví dụ về cách sử dụng và ứng dụng của các hàm. Thư mục này có thể cần thiết cho cả người mới bắt đầu và người dùng có kinh nghiệm hơn.

Định dạng tập tin:.chm

Tham khảo hàm bảng tính Excel(532,2 KiB, 15.462 lượt tải xuống)

Lập trình VBA trong MSOffice là một hướng dẫn rất hay dành cho người mới bắt đầu lập trình VBA. Cuốn sách được viết bởi một giáo viên có chứng chỉ Microsoft Office bằng ngôn ngữ dễ hiểu và có danh sách mã rõ ràng. Sách giáo khoa sẽ giúp bạn thành thạo lập trình không chỉ trong Microsoft Excel, nhưng cũng Phần mềm soạn thảo văn bản và Dự án Microsoft.

Định dạng tập tin:.pdf

Lập trình VBA trong MS Office(4.1 MiB, 26.659 lượt tải xuống)
Bạn không có quyền tải xuống tập tin này. Có lẽ bạn chưa đăng ký trên trang web. Đăng ký và thử tải lại.

Walkenbach J. Lập trình chuyên nghiệp trong VBA Excel 2003 - có lẽ là cuốn sách giáo khoa phổ biến nhất dành cho người mới bắt đầu. Nhiều người đã bắt đầu với anh ấy. Đúng, trong phiên bản in cuốn sách giáo khoa này Danh sách mã được sử dụng, không phải lúc nào cũng cần phải tin tưởng - rất thường có lỗi chính tả và các ký hiệu tiếng Nga được tìm thấy thay vì ký hiệu tiếng Anh. Vì vậy, cá nhân tôi khuyên không nên sao chép mã trực tiếp từ sách mà nên viết lại chúng theo cách thủ công trong trình soạn thảo VBA. Bằng cách này, bạn sẽ nhớ nó tốt hơn và tránh khỏi việc tìm kiếm sai lầm.

Định dạng tập tin:.pdf

Office 2007. Hướng dẫn - Nếu bạn quyết định xem xét kỹ hơn về giao diện và các tính năng chính Ứng dụng của Microsoft Office, tôi khuyên bạn nên đọc nó Cuốn sách này. Nó mô tả mọi thứ bạn cần để làm việc thành công trong các ứng dụng như: Excel, Word, Outlook, Power Point, Access. Sau khi đọc, bạn sẽ có thể tạo các bản trình bày đẹp mắt và đồ họa thông tin, tìm hiểu cách tạo tác vụ trong Outlook và cơ sở dữ liệu trong Access.

Định dạng tập tin:.pdf

Trợ giúp Visual Basic for Application(VBA) bằng tiếng Nga - Đây là Trợ giúp Visual Basic for Application(VBA) chính thức được bao gồm trong gói Microsoft Văn phòng 97. Lúc đó chứng chỉ vẫn còn được Nga hóa. Không có gì bí mật rằng hiện tại trong tất cả các phiên bản Office, trợ giúp VBA chỉ có sẵn tại tiếng anh, bất kể vị trí. Nhưng không phải ai cũng có thể đọc tư sản (thậm chí ở mức khá, như thực tế cho thấy).
Tôi muốn cảnh báo bạn ngay lập tức - bởi vì... sự giúp đỡ được dành cho khá phiên bản cũ, không phải tất cả các phương thức và thuộc tính đều được mô tả trong đó. Nhưng phần lớn chúng vẫn được mô tả và tôi hy vọng, Chứng chỉ này sẽ giúp bạn với nghiên cứu ban đầu VBA.

Định dạng tập tin: tập tin .help

RUS_VBA.zip(1.1 MiB, 9.164 lượt tải xuống)
Bạn không có quyền tải xuống tập tin này. Có lẽ bạn chưa đăng ký trên trang web. Đăng ký và thử tải lại.

Các đối tượng Shell_RegExp, v.v. - toàn bộ tập hợp các ví dụ về cách làm việc với các đối tượng như: Shell, RegExp, FileSystemObject, WshShell, Từ điển, WshNetwork, WScript, các hằng số và hàm WScript. Tất cả các ví dụ đều được cấu trúc thành các phần và được cung cấp dưới dạng tham chiếu cho các thuộc tính và phương thức của từng đối tượng. Sẽ rất thuận tiện nếu bạn không thường xuyên sử dụng những đồ vật này trong công việc và quên mất thứ gì đó.

Viết chương trình máy tínhĐầu tiên bạn cần phải biết một số ngôn ngữ lập trình. Thứ hai, bạn phải cài đặt trên máy tính của mình chương trình đặc biệt, nó sẽ biên dịch mã bạn viết. Thứ ba, bạn sẽ cần phát triển và viết ra giấy thuật toán của chương trình để luôn có mục tiêu rõ ràng trước mắt bạn về những gì chúng ta sẽ hướng tới (ít nhất, đây là điều tôi luôn làm khi viết những bài phức tạp hơn). các chương trình).

Ngôn ngữ lập trình Bất cứ điều gì sẽ làm, nhưng khi làm việc trong Excel và viết chương trình cho nó, tôi khuyên bạn nên sử dụng Visual Basic for Application (VBA), vì Excel đã có sẵn trình soạn thảo đặc biệt để tạo chương trình trong Excel.

Tôi nghĩ bạn và tôi có thể dễ dàng thành thạo ngôn ngữ lập trình, tôi đã thành công và bạn cũng có thể làm được. Tin tôi đi, lập trình trong Excel dễ hơn nhiều so với trong một số C++ hoặc java. Bởi vì nó được tạo ra cho tất cả mọi người, bất kể bạn là kỹ sư hay kế toán, VBA được tạo ra cho những người sử dụng Excel. Và nếu bạn đã thành thạo Excel thì bước hợp lý tiếp theo là thành thạo VBA.

Tôi sẽ chỉ cho bạn một ví dụ về cách tạo một chương trình trong VBA.

Chúng tôi không phát minh ra bất kỳ thuật toán nào; thay vào đó, chúng tôi sẽ viết cụm từ sau ““Mã của chúng tôi”.

1. Khởi chạy Excel.

2. Thực hiện lệnh blitz (giữ hai phím) “Alt” và “F11”.

3. Tạo mẫu và lưu nó.

4. Sau đó chúng ta viết ra ba dòng, dòng bắt đầu bằng dấu nháy đơn là một nhận xét. Từ "Sub" biểu thị phần đầu của chương trình, "program()" là tên của chương trình, có thể thay đổi, ví dụ: thành "Macro()".

Cụm từ “End Sub” cho biết chương trình kết thúc tại đây. Thay vì dòng “Mã của chúng tôi”, bạn có thể viết thuật toán của chúng tôi trong tương lai.

Lập trình trong Excel không khó như bạn tưởng, bạn cần phải có một thuật toán rõ ràng, tốt nhất là viết ra giấy, chúng ta sẽ sớm tìm hiểu cách phát triển và một số kiến ​​thức cơ bản về VBA (đầu vào và đầu ra dữ liệu vào chương trình, các điều kiện). và vòng lặp), điều này là đủ để bắt đầu.



Xem thêm trong phần này.