Anh em lập trình VBA có thể coi topic này là topic mẫu cho việc tạo Tool tự động tạo ra file output theo yêu cầu.
1. Đặt vấn đề:
Việc sử dụng mã code (TikZ) để vẽ hình có khó khăn là phải nhớ mã lệnh. Do đó, nếu có một Tool, khi click vào ra gợi ý lệnh thì sẽ bớt khó khăn hơn.
2. Tìm hiểu cấu trúc macro cho phần mềm Texstudio:
Mình gặp khó khăn trong việc này, chính thức tại thời điểm làm tool, thì không có tham khảo được đoạn code nào của người Việt. Nhưng may mắn là thông qua mấy trang web nước ngoài, mình dẫn link sau, thì đã hiểu được cấu trúc code.
Giả sử tôi có input như sau:
Bây giờ tôi muốn output như thế này
Phần code đầu là phần quan trọng, coi như cố định. Phần thay đổi là bắt đầu từ việc xét điều kiện (if). Nếu như input có càng nhiều hạng mục thì code trên càng dài, càng lắm lệnh if, đây chính là phần mà macro cần giản lược.
3. Hướng suy nghĩ:
Output tôi mong muôn là tạo ra một file txt có nội dung như trên từ INPUT như đã nêu. Tất nhiên nội dung input có thể thay đổi, tức là có thể có nhiều dòng dữ liệu đầu vào nhưng cấu trúc thì không thay đổi.
Vậy, nội dung sẽ ghi vào một biến string. Cụ thể ở trong chương trình, tôi nạp nội dung này vào biến op. Sau khi nội dung này được soạn xong, thì tôi ghi nội dung này ra file txt và lưu lại.
Đoạn code này chính là đoạn code để ghi nội dung ra một file txt và lưu lại.
Đây là phần mà các bạn có thể áp dụng cho các chương trình khác nhau của các bạn.
Link file VBA mà các bạn có thể tham khảo code:
Ấn Alt +F11, mật khẩu mở pass vẫn như mọi khi:
Trong quá trình tìm hiểu cấu trúc code macro của phần mềm Texstudio, tôi tham khảo ở đây:
Keyword để tôi có thể tìm hiểu đó chính là "UniversalInputDialog". Nhờ có keyword này mà tôi đã tìm được nguồn tham khảo rất chính xác. Tại sao tôi lại có keyword này thì cần phải cảm ơn video của thầy Bùi Quỹ, trong phần giới thiệu Tool, tuy tool thì không công khai, nhưng qua màn hình, trong một chốc lát tôi nhìn thấy dòng code có chữ UniversalInputDialog xuất hiện.
1. Đặt vấn đề:
Việc sử dụng mã code (TikZ) để vẽ hình có khó khăn là phải nhớ mã lệnh. Do đó, nếu có một Tool, khi click vào ra gợi ý lệnh thì sẽ bớt khó khăn hơn.
2. Tìm hiểu cấu trúc macro cho phần mềm Texstudio:
Mình gặp khó khăn trong việc này, chính thức tại thời điểm làm tool, thì không có tham khảo được đoạn code nào của người Việt. Nhưng may mắn là thông qua mấy trang web nước ngoài, mình dẫn link sau, thì đã hiểu được cấu trúc code.
Giả sử tôi có input như sau:
Bạn cần đăng nhập để thấy đính kèm
Bây giờ tôi muốn output như thế này
JavaScript:
var arraygt = [ "" ]; // Clear variable
arraygt =[
"Vẽ đường thẳng",
" Đường thẳng với [độ dày]"
]
choisedialog = new UniversalInputDialog();
choisedialog.setWindowTitle( "Đường thẳng" );
choisedialog.add(arraygt,"Lựa chọn loại đường","choiseGT");
choisedialog.add( true, "Chèn chú thích ", "checkbox" );
thvba: if (choisedialog.exec() != null) {
if (choisedialog.get("choiseGT") == "Vẽ đường thẳng") {
cursor.insertLine();
editor.insertText("\draw (x1,y1) -- (x2,y2);");
break thvba;}
if (choisedialog.get("choiseGT") == " Đường thẳng với [độ dày]") {
cursor.insertLine();
editor.insertText("\draw[line width=1pt] (x1,y1)--(x2,y2);");
cursor.insertLine();
editor.insertText("");
break thvba;}
}
3. Hướng suy nghĩ:
Output tôi mong muôn là tạo ra một file txt có nội dung như trên từ INPUT như đã nêu. Tất nhiên nội dung input có thể thay đổi, tức là có thể có nhiều dòng dữ liệu đầu vào nhưng cấu trúc thì không thay đổi.
Vậy, nội dung sẽ ghi vào một biến string. Cụ thể ở trong chương trình, tôi nạp nội dung này vào biến op. Sau khi nội dung này được soạn xong, thì tôi ghi nội dung này ra file txt và lưu lại.
Mã:
'INPUT: link file txt
'INPUT: Noi dung nhap vao file txt
'OUTPUT: txt
Sub CreateAfile(ByVal lk As String, ByVal outem As String)
Dim fso As Object, MyFile As Object
Dim lk2 As String
Set fso = CreateObject("Scripting.FileSystemObject")
If Right(lk, 1) = Application.PathSeparator Then
lk2 = lk & "Code_" & Format(Now, "yymmddhhmmss") & ".txt"
Else
lk2 = lk & Application.PathSeparator & "Code_" & Format(Now, "yymmddhhmmss") & ".txt"
End If
Set MyFile = fso.CreateTextFile(lk2, True, True)
MyFile.Write outem
MyFile.Close
Set fso = Nothing
End Sub
Đây là phần mà các bạn có thể áp dụng cho các chương trình khác nhau của các bạn.
Link file VBA mà các bạn có thể tham khảo code:
Bạn cần đăng nhập để thấy link
Ấn Alt +F11, mật khẩu mở pass vẫn như mọi khi:
Mã:
tuhocvba.net
Trong quá trình tìm hiểu cấu trúc code macro của phần mềm Texstudio, tôi tham khảo ở đây:
Bạn cần đăng nhập để thấy link
Bạn cần đăng nhập để thấy link
Keyword để tôi có thể tìm hiểu đó chính là "UniversalInputDialog". Nhờ có keyword này mà tôi đã tìm được nguồn tham khảo rất chính xác. Tại sao tôi lại có keyword này thì cần phải cảm ơn video của thầy Bùi Quỹ, trong phần giới thiệu Tool, tuy tool thì không công khai, nhưng qua màn hình, trong một chốc lát tôi nhìn thấy dòng code có chữ UniversalInputDialog xuất hiện.
Bạn cần đăng nhập để thấy đa phương tiện