Làm thế nào để chỉnh Code từ notepad???

Liên hệ QC

green_bp

Thành viên mới
Tham gia
7/3/13
Bài viết
16
Được thích
0
Dạ các anh cho em hỏi là làm thế nào để mình có thể code từ 1 file notepad (*txt). Có nghĩa là thay vì chỉnh sửa code trực tiếp trên file exel, mình có thể code từ một file txt nào đó để nó link đến file excel đó. Em hỏi vấn đề này là bởi vì em có nhiều file excel, và nhiều ngừoi sử dụng, em muốn thay vì phải chỉnh code cho từng file thì chỉ chỉnh trên cái notepad đó thôi, để nó tự link đến những file excel khác. Em xin cảm ơn và muon biêt đieu đo có thuc hien duoc ko. +-+-+-++-+-+-++-+-+-+
 
Dạ các anh cho em hỏi là làm thế nào để mình có thể code từ 1 file notepad (*txt). Có nghĩa là thay vì chỉnh sửa code trực tiếp trên file exel, mình có thể code từ một file txt nào đó để nó link đến file excel đó. Em hỏi vấn đề này là bởi vì em có nhiều file excel, và nhiều ngừoi sử dụng, em muốn thay vì phải chỉnh code cho từng file thì chỉ chỉnh trên cái notepad đó thôi, để nó tự link đến những file excel khác. Em xin cảm ơn và muon biêt đieu đo có thuc hien duoc ko. +-+-+-++-+-+-++-+-+-+
Nghe yêu cầu này có vẻ như nó liên quan đến Add-ins trong Excel ấy nhỉ. Tôi nghĩ là thay vì chỉnh code trên file Text hay đại loại vậy thì bạn nên viết 1 Add-ins thực hiện những công việc ấy, nó sẽ được "gắn kèm" với Excel, khi nào cần dùng thì gọi thôi.
 
Nghe yêu cầu này có vẻ như nó liên quan đến Add-ins trong Excel ấy nhỉ. Tôi nghĩ là thay vì chỉnh code trên file Text hay đại loại vậy thì bạn nên viết 1 Add-ins thực hiện những công việc ấy, nó sẽ được "gắn kèm" với Excel, khi nào cần dùng thì gọi thôi.

Nhưng ở trên người ta có nói:
Em hỏi vấn đề này là bởi vì em có nhiều file excel, và nhiều ngừoi sử dụng, em muốn ...
Vậy chắc là nhiều máy tính à hen?
Đoán thôi!
 
Nghe yêu cầu này có vẻ như nó liên quan đến Add-ins trong Excel ấy nhỉ. Tôi nghĩ là thay vì chỉnh code trên file Text hay đại loại vậy thì bạn nên viết 1 Add-ins thực hiện những công việc ấy, nó sẽ được "gắn kèm" với Excel, khi nào cần dùng thì gọi thôi.
Những máy khác link đến file add-in, khi em muốn chỉnh sửa gì thì chỉ cần chỉnh trên file add-in đúng ko anh?? File add-in em để trên public để những máy khác link tới.
 
Dạ cũng khoảng vài máy a. Em nghĩ Ado Net làm được mà em tìm ko có tài liệu nào cả.

Câu hỏi của bạn nói khó không khó mà nói dễ cũng không dễ
- Dễ: Vì tôi cùng từng làm qua rồi. Đơn giản là tôi mang "cục" Add-In của tôi sang cài vào từng máy có nhu cầu rồi cứ thế mà xài thôi
- Khó: Đâu có biết cụ thể bạn làm điều gì mà hướng dẫn
 
Câu hỏi của bạn nói khó không khó mà nói dễ cũng không dễ
- Dễ: Vì tôi cùng từng làm qua rồi. Đơn giản là tôi mang "cục" Add-In của tôi sang cài vào từng máy có nhu cầu rồi cứ thế mà xài thôi
- Khó: Đâu có biết cụ thể bạn làm điều gì mà hướng dẫn
Thật sự rất khó đưa file lên đây a NDU à, File của em là file tạo mã từ tên hàng. Nó thuờng xuyên đuợc sửa đổi cập nhật bởi vì liên tục có mặt hàng mới. Những máy khác cũng lấy code từ máy của em, nếu mỗi lần chỉnh sửa như vậy lại sử dụng add in có bất tiện quá ko anh? Tại em cũng muốn quản lý những máy khác để code được đồng bộ liên tục từ file e viết.
 
Thật sự rất khó đưa file lên đây a NDU à, File của em là file tạo mã từ tên hàng. Nó thuờng xuyên đuợc sửa đổi cập nhật bởi vì liên tục có mặt hàng mới. Những máy khác cũng lấy code từ máy của em, nếu mỗi lần chỉnh sửa như vậy lại sử dụng add in có bất tiện quá ko anh? Tại em cũng muốn quản lý những máy khác để code được đồng bộ liên tục từ file e viết.
Tôi thử đoán nhé, hay bạn muốn tạo 1 file chương trình exe, mỗi khi code thay đổi các máy chạm chạy file đấy để cập nhật code hay chuyên môn là bản patch?
 
Tôi thử đoán nhé, hay bạn muốn tạo 1 file chương trình exe, mỗi khi code thay đổi các máy chạm chạy file đấy để cập nhật code hay chuyên môn là bản patch?
Nếu có chuơng trình đó thì tốt quá a, em chỉ nghĩ đến việc link đến file notepad thôi: ví dụ như:
sub ()
dim ......
Đoạn code lấy từ file notepad
end sub

File notepad này em để trên public, để khi cần chỉnh gì thì chỉnh trên đó, các máy khác tự động lấy code mới. :)
 
Nếu thế thì có gì đâu bạn, bạn cứ viết code thoải mái trên file của mình, sau đó export đoạn code (hay module) ra file .bas (file này cũng có thể sửa bằng notepad). Từ máy khác, bạn import cái file .bas này vào, thế là code mới nhẩy vào thôi
 
Nếu thế thì có gì đâu bạn, bạn cứ viết code thoải mái trên file của mình, sau đó export đoạn code (hay module) ra file .bas (file này cũng có thể sửa bằng notepad). Từ máy khác, bạn import cái file .bas này vào, thế là code mới nhẩy vào thôi
Dạ, thanks anh! Còn nếu để mấy máy khác tự động tìm thấy code mới khi có thay đổi thì chắc phải dùng chuơng trình patch gì đó a nói đúng ko a? :)
 
Dạ, thanks anh! Còn nếu để mấy máy khác tự động tìm thấy code mới khi có thay đổi thì chắc phải dùng chuơng trình patch gì đó a nói đúng ko a? :)
Không có chương trình patch nào đâu, mình đoán mò thôi, như kiểu windows cập nhật bản vá (patch) đó bạn.
Nếu có cách nào như bài #8 tôi nói đến, mong các thành viên trên GPE giúp đỡ (vi cái này ngoài tầm hiểu biết của tôi)
 
Dạ các anh cho em hỏi là làm thế nào để mình có thể code từ 1 file notepad (*txt). Có nghĩa là thay vì chỉnh sửa code trực tiếp trên file exel, mình có thể code từ một file txt nào đó để nó link đến file excel đó. Em hỏi vấn đề này là bởi vì em có nhiều file excel, và nhiều ngừoi sử dụng, em muốn thay vì phải chỉnh code cho từng file thì chỉ chỉnh trên cái notepad đó thôi, để nó tự link đến những file excel khác. Em xin cảm ơn và muon biêt đieu đo có thuc hien duoc ko. +-+-+-++-+-+-++-+-+-+
Nếu bạn muốn soạn thảo code trên notepad và các file excel khác sẽ lấy code từ file notepad bên ngoài. Mình có thể gợi ý cho bạn một vài đoạn code như sau:
Copy code sau vào các file excel người dùng
[GPECODE=vb]
'Giả sử các code bạn muốn cập nhật được để trong 1 module riêng có tên là Custom_Code
'-----
'Xóa module tên là Custom_Code
Sub DeleteMod()
Dim VBACom As VBComponent
On Error GoTo MyExit
For Each VBACom In ThisWorkbook.VBProject.VBComponents
If VBACom.Name = "Custom_Code" Then
ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("Custom_Code")
End If
Next
MyExit:
Set VBACom = Nothing
End Sub
'Thêm module và đặt tên là Custom_Code
Sub AddMod()
Dim VBACom As VBComponent
Set VBACom = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
VBACom.Name = "Custom_Code"
Application.Visible = True
Set VBACom = Nothing
End Sub
'Thêm code lấy từ file notepad, ví dụ là file tại D:/Dulieu.txt, cho vào module Custom_Code
Sub AddCode()
Dim VBACode As CodeModule
Dim LineNo As Long, MyCode As String
Set VBACode = ThisWorkbook.VBProject.VBComponents("Custom_Code").CodeModule
With VBACode
LineNo = .CountOfLines + 1
MyCode = CodeText("D:\Dulieu.txt")
.InsertLines LineNo, _
" " & MyCode
End With
Set VBCodeMod = Nothing
End Sub
'--------------
Sub CreateCode()
Call DeleteMod
Call AddMod
Call AddCode
MsgBox "Create Complete"
End Sub
'--------------
Sub DeleteCode()
Call DeleteMod
MsgBox "Delete Complete"
End Sub
'-------------
'Hàm lấy chuỗi dữ liệu từ file notepad bên ngoài.
Public Function CodeText(sFile As String) As String
Dim fnum As Integer
Dim sTemp As String
fnum = FreeFile()
Open sFile For Input As fnum
While Not EOF(fnum)
Line Input #fnum, sTemp
CodeText = CodeText & sTemp & Chr(13)
Wend
Close fnum
End Function
[/GPECODE]
 
Dạ, thanks anh! Còn nếu để mấy máy khác tự động tìm thấy code mới khi có thay đổi thì chắc phải dùng chuơng trình patch gì đó a nói đúng ko a? :)

Làm được. Cách ở bài #13 (VMH0307) là một cách rất hữu hiệu.

Tuy nhiên, bạn cần lưu ý rằng nhập code là một thủ thuật rất nguy hiểm. Người ta chỉ dùng để phổ biến code cho chính mình thôi. Đem phân phối code cho người khác dùng qua mạng là đùa với lửa. Người dùng không có cách nào để kiểm soát an toàn.
 
Nếu bạn muốn soạn thảo code trên notepad và các file excel khác sẽ lấy code từ file notepad bên ngoài. Mình có thể gợi ý cho bạn một vài đoạn code như sau:
Copy code sau vào các file excel người dùng
[GPECODE=vb]
'Giả sử các code bạn muốn cập nhật được để trong 1 module riêng có tên là Custom_Code
'-----
'Xóa module tên là Custom_Code
Sub DeleteMod()
Dim VBACom As VBComponent
On Error GoTo MyExit
For Each VBACom In ThisWorkbook.VBProject.VBComponents
If VBACom.Name = "Custom_Code" Then
ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("Custom_Code")
End If
Next
MyExit:
Set VBACom = Nothing
End Sub
'Thêm module và đặt tên là Custom_Code
Sub AddMod()
Dim VBACom As VBComponent
Set VBACom = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
VBACom.Name = "Custom_Code"
Application.Visible = True
Set VBACom = Nothing
End Sub
'Thêm code lấy từ file notepad, ví dụ là file tại D:/Dulieu.txt, cho vào module Custom_Code
Sub AddCode()
Dim VBACode As CodeModule
Dim LineNo As Long, MyCode As String
Set VBACode = ThisWorkbook.VBProject.VBComponents("Custom_Code").CodeModule
With VBACode
LineNo = .CountOfLines + 1
MyCode = CodeText("D:\Dulieu.txt")
.InsertLines LineNo, _
" " & MyCode
End With
Set VBCodeMod = Nothing
End Sub
'--------------
Sub CreateCode()
Call DeleteMod
Call AddMod
Call AddCode
MsgBox "Create Complete"
End Sub
'--------------
Sub DeleteCode()
Call DeleteMod
MsgBox "Delete Complete"
End Sub
'-------------
'Hàm lấy chuỗi dữ liệu từ file notepad bên ngoài.
Public Function CodeText(sFile As String) As String
Dim fnum As Integer
Dim sTemp As String
fnum = FreeFile()
Open sFile For Input As fnum
While Not EOF(fnum)
Line Input #fnum, sTemp
CodeText = CodeText & sTemp & Chr(13)
Wend
Close fnum
End Function
[/GPECODE]

Khi em chay code no hien len vay la sao a????? "User-defined type not defined"
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    25.5 KB · Đọc: 17
Lần chỉnh sửa cuối:
Nếu bạn muốn soạn thảo code trên notepad và các file excel khác sẽ lấy code từ file notepad bên ngoài. Mình có thể gợi ý cho bạn một vài đoạn code như sau:
Copy code sau vào các file excel người dùng
[GPECODE=vb]
'Giả sử các code bạn muốn cập nhật được để trong 1 module riêng có tên là Custom_Code
'-----
'Xóa module tên là Custom_Code
Sub DeleteMod()
Dim VBACom As VBComponent
On Error GoTo MyExit
For Each VBACom In ThisWorkbook.VBProject.VBComponents
If VBACom.Name = "Custom_Code" Then
ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("Custom_Code")
End If
Next
MyExit:
Set VBACom = Nothing
End Sub
'Thêm module và đặt tên là Custom_Code
Sub AddMod()
Dim VBACom As VBComponent
Set VBACom = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
VBACom.Name = "Custom_Code"
Application.Visible = True
Set VBACom = Nothing
End Sub
'Thêm code lấy từ file notepad, ví dụ là file tại D:/Dulieu.txt, cho vào module Custom_Code
Sub AddCode()
Dim VBACode As CodeModule
Dim LineNo As Long, MyCode As String
Set VBACode = ThisWorkbook.VBProject.VBComponents("Custom_Code").CodeModule
With VBACode
LineNo = .CountOfLines + 1
MyCode = CodeText("D:\Dulieu.txt")
.InsertLines LineNo, _
" " & MyCode
End With
Set VBCodeMod = Nothing
End Sub
'--------------
Sub CreateCode()
Call DeleteMod
Call AddMod
Call AddCode
MsgBox "Create Complete"
End Sub
'--------------
Sub DeleteCode()
Call DeleteMod
MsgBox "Delete Complete"
End Sub
'-------------
'Hàm lấy chuỗi dữ liệu từ file notepad bên ngoài.
Public Function CodeText(sFile As String) As String
Dim fnum As Integer
Dim sTemp As String
fnum = FreeFile()
Open sFile For Input As fnum
While Not EOF(fnum)
Line Input #fnum, sTemp
CodeText = CodeText & sTemp & Chr(13)
Wend
Close fnum
End Function
[/GPECODE]


  • First, you need to set an reference to the VBA Extensibility library. The library contains the definitions of the objects that make up the VBProject. In the VBA editor, go the the Tools menu and choose References. In that dialog, scroll down to and check the entry for Microsoft Visual Basic For Applications Extensibility 5.3. If you do not set this reference, you will receive a User-defined type not defined compiler error.

Em chỉnh đuợc rồi, thanks anh nhiều nhé! :D
 
Web KT

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

Back
Top Bottom