पोस्टिंग में कुछ समय लग रहा है, लेकिन मैं इसके लिए एक यूआई बनाने गया था के लिए के साथ
क्षमा करें शुरू करने के लिए इतना है कि यह न केवल आप में मदद करता है लेकिन किसी और को, जो एक ही कार्यक्षमता की तलाश में आता है।
आप पहली बार Trust Access to the VBA project Object model
ओपन एक्सेल सक्षम और फ़ाइल टैब पर क्लिक करें की जरूरत है | विकल्प | ट्रस्ट सेंटर | ट्रस्ट सेंटर सेटिंग्स | मैक्रो सेटिंग्स
मैक्रो को सक्षम और पर Trust access to Visual Basic projects
अगला VBA संपादक उपकरण पर
क्लिक करें क्लिक करें | विकल्प और "संपादक" टैब के अंतर्गत चेकबॉक्स Require Variable Declaration
अगला चयन here से नमूना फ़ाइल डाउनलोड करें और बस के रूप में नीचे दिखाया गया userform लांच करने के लिए पत्रक 1 में Run
बटन दबाएँ।
सरल उस फ़ोल्डर का चयन करें जिसमें केवल एक्सेल फ़ाइलें हैं।प्रासंगिक जानकारी दर्ज करें और Start Replace
पर क्लिक करें और आप कर चुके हैं :)
कोड का इस्तेमाल किया
पत्रक 1 संहिता क्षेत्र
Option Explicit
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
UserForm कोड क्षेत्र
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
और स्नैपशॉट
फ़ाइल किसका कोड की जरूरत है के बाद मैक्रो चलाया जाता है से पहले मैक्रो चलाया जाता है
को बदला जाएगा
संपादित
वैकल्पिक फ़ाइल डाउनलोड स्थान
मामले ऊपर wikisend लिंक मर जाता है में, फ़ाइल से here
+ 1 अच्छा प्रश्न :) मैं VBA कोड तैयार होगा कि मदद है या आप एक सी # कोड विशेष रूप से चाहते हैं:
आप घटकों निर्यात करने के लिए इस तरह इस कोड का उपयोग कर सकते हैं? यदि आप सी # चाहते हैं तो मुझे इसे संशोधित करना होगा और इसे पोस्ट करने से पहले इसे सी # में जांचना होगा। –
वीबीए कोड चलने वाला स्टैंडअलोन भी ठीक है, स्टैंडअलोन मेरा मतलब है कि या तो वीबीस्क्रिप्ट है या एक अलग एक्सेल फ़ाइल में, फिर आप फ़ाइल नामों को खोजने और बदलने के लिए कैसे पास करते हैं? यदि आप अपना वीबीए निश्चित रूप से साझा करते हैं तो मैं इसे वोट दूंगा क्योंकि उत्तर 100% या केवल सी # और .NET :) –
वोटिंग चिंता नहीं है। :) हां, यह एक अलग एक्सेल फ़ाइल होगी जो आपको एक फ़ोल्डर चुनने देगी और फिर कोड उस फ़ोल्डर में सभी एक्सेल फ़ाइल में सभी वीबीए मॉड्यूल में प्रासंगिक टेक्स्ट को प्रतिस्थापित करेगा। –