Để bắt đầu Với
Xin lỗi đã dành một số thời gian trong việc niêm yết nhưng tôi đã tạo ra một giao diện người dùng cho nó để nó không chỉ giúp bạn nhưng bất kỳ ai khác đến tìm kiếm các chức năng tương tự.
Bạn cần phải đầu tiên cho phép Trust Access to the VBA project Object model
mở Excel và nhấp vào File Tab | Tùy chọn | Trung tâm tin cậy | Cài đặt Trung tâm tin cậy | Cài đặt Macro
Enable vĩ mô và click vào Trust access to Visual Basic projects
Tiếp Trong VBA biên tập
Bấm vào Tool | Options và dưới "Editor" Tab chọn hộp kiểm Require Variable Declaration
Tiếp Tải file mẫu từ here và chỉ cần nhấn nút Run
Trong Sheet1 để khởi động userform như hình dưới đây.
Đơn giản chọn thư mục có CHỈ Tệp Excel.Nhập các thông tin có liên quan và click vào Start Replace
và bạn đã làm xong :)
Mã sử dụng
Sheet1 mã vùng
Option Explicit
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
UserForm Mã Diện tích
Option Explicit
Private Sub CommandButton1_Click()
Dim Ret
Ret = BrowseForFolder
If Ret = False Then Exit Sub
TextBox1.Text = Ret
End Sub
Private Sub CommandButton3_Click()
On Error GoTo Whoa
Dim wb As Workbook
Dim strPath As String, strfile As String
Dim strToReplaceWith As String, strToReplace As String
Dim i As Long, j As Long
Dim VBE As Object
strPath = TextBox1.Text & "\"
strfile = Dir(strPath)
While strfile <> ""
Set wb = Workbooks.Open(strPath & strfile)
Set VBE = ActiveWorkbook.VBProject
If VBE.VBComponents.Item(1).Properties("HasPassword").Value = False Then
If VBE.VBComponents.Count > 0 Then
For i = 1 To VBE.VBComponents.Count
VBE.VBComponents.Item(i).Activate
If VBE.VBE.CodePanes.Item(i).CodeModule.CountOfLines > 0 Then
For j = 1 To VBE.VBE.CodePanes.Item(i).CodeModule.CountOfLines
If InStr(1, VBE.VBE.CodePanes.Item(i).CodeModule.Lines(j, 1), TextBox2.Text, vbTextCompare) Then
strToReplace = VBE.VBE.CodePanes.Item(i).CodeModule.Lines(j, 1)
strToReplaceWith = Replace(strToReplace, TextBox2.Text, TextBox3.Text, 1, 1, vbTextCompare)
VBE.VBE.CodePanes.Item(i).CodeModule.ReplaceLine j, strToReplaceWith
End If
Next
End If
Next i
End If
End If
wb.Close True
strfile = Dir
Wend
LetsContinue:
Application.ScreenUpdating = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
'~~> Function to pop the browse folder dialog
Function BrowseForFolder(Optional OpenAt As Variant) As Variant
Dim ShellApp As Object
'~~> Create a file browser window at the default folder
Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please choose a folder", 0, OpenAt)
'~~> Set the folder to that selected. (On error in case cancelled)
On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error GoTo 0
'~~> Destroy the Shell Application
Set ShellApp = Nothing
Select Case Mid(BrowseForFolder, 2, 1)
Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then GoTo Invalid
Case Else
GoTo Invalid
End Select
Exit Function
Invalid:
BrowseForFolder = False
End Function
Private Sub CommandButton4_Click()
Unload Me
End Sub
Snapshots THÊM
file của ai mã cần phải được thay thế trước khi vĩ mô là Run
Sau vĩ mô đang chạy
EDIT
THAY THẾ FILE TẢI VỊ TRÍ
Trong trường hợp liên kết wikisend trên chết, tập tin có thể được tải về từ here
+ 1 Câu hỏi Tốt :) Tôi có VBA Mã sẵn sàng sẽ giúp đỡ mà hay bạn muốn có một mã C# đặc biệt? Nếu bạn muốn C# sau đó tôi sẽ phải sửa đổi nó và kiểm tra nó trong C# trước khi tôi đăng nó. –
Mã VBA chạy độc lập cũng ok, độc lập Tôi có nghĩa là hoặc là VBScript hoặc trong một tập tin excel tách ra, làm thế nào để bạn sau đó vượt qua các tên tập tin (s) để tìm kiếm và thay thế trong? Nếu bạn chia sẻ của bạn VBA chắc chắn tôi sẽ bỏ phiếu cho nó như là câu trả lời không phải là 100% hoặc chỉ C# và .NET :) –
Bỏ phiếu không phải là một mối quan tâm. :) Có, nó sẽ là một tập tin Excel riêng biệt mà sẽ cho phép bạn chọn một thư mục và sau đó mã sẽ thay thế văn bản có liên quan trong tất cả các mô-đun VBA trong tất cả các tập tin excel trong thư mục đó. –