如何使用 Excel VBA 编辑 .bat 文件
How to edit a .bat file with Excel VBA
我正在为 .bat / .vbs 文件开发 Excel 插件。该加载项有 2 个选项 (1) 创建新的 .bat / 和 .vbs 文件以及 (2) 修改现有的 .bat 和 .vbs 文件。
“创建”选项运行良好,完全满足我们的需求。
我对“修改”部分有疑问。当用户 select 进行“修改”时,Excel 表单会显示一个列表框。用户滚动列表,select 是他们需要修改的列表。到此为止。
下一步是让插件打开(而不是 运行).bat 和 .vbs 文件。我已经能够让 .bat 文件执行;依次执行 .vbs 文件。但这不是我需要它做的。
如果我要手动打开 .bat 或 .vbs 文件。我会右键单击 .bat 或 .vbs 文件并 select“编辑”。相应的文件在记事本中打开。然后我可以进行任何更改并保存文件。
我正在寻找重复的是 VBA 的“右键单击和 select 编辑步骤”。
如有任何建议,我们将不胜感激。提前感谢您的帮助....
我找到了一种方法,但不确定它是否适合你。
1。我们无法打开 .bat
个文件,但可以打开 .txt
个文件,因此我将 .bat
文件转换为 .txt
文件并使用超链接打开它。
在下面的示例中,Reminder 是一个 .bat
文件,单击“打开”按钮后,它会将 Reminder.bat
转换为 Reminder.txt
并打开文件。
Sub RenameFileExtensionFromBatToTextAndOpen()
Dim fileName As String
Dim fileLocation As String
Dim originalExtension As String
Dim renamedExtenstion As String
fileLocation = "C:\Users\Nandan\Downloads\"
fileName = Sheets("Sheet1").Range("B5")
originalExtension = fileLocation & fileName & ".bat"
renamedExtenstion = fileLocation & fileName & ".txt"
Name originalExtension As renamedExtenstion
ActiveWorkbook.FollowHyperlink Address:=renamedExtenstion
End Sub
2。保存更改后,单击“完成”会将文件格式从 Reminder.txt
更改为 Reminder.bat
Sub RenameFileExtensionFromTxtToBat()
Dim fileName As String
Dim fileLocation As String
Dim originalExtension As String
Dim renamedExtenstion As String
fileLocation = "C:\Users\Nandan\Downloads\"
fileName = Sheets("Sheet1").Range("B5")
originalExtension = fileLocation & fileName & ".bat"
renamedExtenstion = fileLocation & fileName & ".txt"
Name renamedExtenstion As originalExtension
End Sub
打开文件时,
点击完成后,
本人对插件不熟悉,如有误导请见谅。这在正常代码中确实有效:
假设有一个带有 TextBox1、ListBox1 和 CommandButton1(用于保存更改)的用户窗体 frmTest7。 userform代码如下
Option Explicit
Private Sub CommandButton1_Click()
Dim fso As FileSystemObject
Dim oFile As TextStream
Dim FilePath As String
Dim strFile As String
FilePath = "C:\Users\" & Environ("UserName") & "\desktop\test_bat.bat"
Dim i As Long
For i = 0 To frmTest7.ListBox1.ListCount - 1
strFile = strFile & frmTest7.ListBox1.List(i) & vbCrLf
Next i
Set fso = New FileSystemObject
If fso.FileExists(FilePath) Then
'fso.DeleteFile (FilePath)
Set oFile = fso.CreateTextFile(FilePath, True)
oFile.WriteLine strFile
End If
If Not (oFile Is Nothing) Then oFile.Close
Set oFile = Nothing
Set fso = Nothing
End Sub
Private Sub ListBox1_Click()
frmTest7.TextBox1.Text = frmTest7.ListBox1.List(frmTest7.ListBox1.ListIndex)
End Sub
Private Sub TextBox1_AfterUpdate()
frmTest7.ListBox1.List(frmTest7.ListBox1.ListIndex) = frmTest7.TextBox1.Text
End Sub
Private Sub UserForm_Activate()
Dim fso As FileSystemObject
Dim oFile As TextStream
Dim FilePath As String
Dim strFile As String
FilePath = "C:\Users\" & Environ("UserName") & "\desktop\test_bat.bat"
Set fso = New FileSystemObject
Set oFile = fso.OpenTextFile(FilePath, ForReading)
strFile = oFile.ReadAll
oFile.Close
Dim arrStrFile() As String
strFile = Replace(strFile, vbCr, "")
arrStrFile = Split(strFile, Chr(10))
frmTest7.ListBox1.Clear
frmTest7.ListBox1.List = arrStrFile
Set oFile = Nothing
Set fso = Nothing
End Sub
我正在为 .bat / .vbs 文件开发 Excel 插件。该加载项有 2 个选项 (1) 创建新的 .bat / 和 .vbs 文件以及 (2) 修改现有的 .bat 和 .vbs 文件。
“创建”选项运行良好,完全满足我们的需求。
我对“修改”部分有疑问。当用户 select 进行“修改”时,Excel 表单会显示一个列表框。用户滚动列表,select 是他们需要修改的列表。到此为止。
下一步是让插件打开(而不是 运行).bat 和 .vbs 文件。我已经能够让 .bat 文件执行;依次执行 .vbs 文件。但这不是我需要它做的。
如果我要手动打开 .bat 或 .vbs 文件。我会右键单击 .bat 或 .vbs 文件并 select“编辑”。相应的文件在记事本中打开。然后我可以进行任何更改并保存文件。
我正在寻找重复的是 VBA 的“右键单击和 select 编辑步骤”。
如有任何建议,我们将不胜感激。提前感谢您的帮助....
我找到了一种方法,但不确定它是否适合你。
1。我们无法打开 .bat
个文件,但可以打开 .txt
个文件,因此我将 .bat
文件转换为 .txt
文件并使用超链接打开它。
在下面的示例中,Reminder 是一个 .bat
文件,单击“打开”按钮后,它会将 Reminder.bat
转换为 Reminder.txt
并打开文件。
Sub RenameFileExtensionFromBatToTextAndOpen()
Dim fileName As String
Dim fileLocation As String
Dim originalExtension As String
Dim renamedExtenstion As String
fileLocation = "C:\Users\Nandan\Downloads\"
fileName = Sheets("Sheet1").Range("B5")
originalExtension = fileLocation & fileName & ".bat"
renamedExtenstion = fileLocation & fileName & ".txt"
Name originalExtension As renamedExtenstion
ActiveWorkbook.FollowHyperlink Address:=renamedExtenstion
End Sub
2。保存更改后,单击“完成”会将文件格式从 Reminder.txt
更改为 Reminder.bat
Sub RenameFileExtensionFromTxtToBat()
Dim fileName As String
Dim fileLocation As String
Dim originalExtension As String
Dim renamedExtenstion As String
fileLocation = "C:\Users\Nandan\Downloads\"
fileName = Sheets("Sheet1").Range("B5")
originalExtension = fileLocation & fileName & ".bat"
renamedExtenstion = fileLocation & fileName & ".txt"
Name renamedExtenstion As originalExtension
End Sub
打开文件时,
点击完成后,
本人对插件不熟悉,如有误导请见谅。这在正常代码中确实有效:
假设有一个带有 TextBox1、ListBox1 和 CommandButton1(用于保存更改)的用户窗体 frmTest7。 userform代码如下
Option Explicit
Private Sub CommandButton1_Click()
Dim fso As FileSystemObject
Dim oFile As TextStream
Dim FilePath As String
Dim strFile As String
FilePath = "C:\Users\" & Environ("UserName") & "\desktop\test_bat.bat"
Dim i As Long
For i = 0 To frmTest7.ListBox1.ListCount - 1
strFile = strFile & frmTest7.ListBox1.List(i) & vbCrLf
Next i
Set fso = New FileSystemObject
If fso.FileExists(FilePath) Then
'fso.DeleteFile (FilePath)
Set oFile = fso.CreateTextFile(FilePath, True)
oFile.WriteLine strFile
End If
If Not (oFile Is Nothing) Then oFile.Close
Set oFile = Nothing
Set fso = Nothing
End Sub
Private Sub ListBox1_Click()
frmTest7.TextBox1.Text = frmTest7.ListBox1.List(frmTest7.ListBox1.ListIndex)
End Sub
Private Sub TextBox1_AfterUpdate()
frmTest7.ListBox1.List(frmTest7.ListBox1.ListIndex) = frmTest7.TextBox1.Text
End Sub
Private Sub UserForm_Activate()
Dim fso As FileSystemObject
Dim oFile As TextStream
Dim FilePath As String
Dim strFile As String
FilePath = "C:\Users\" & Environ("UserName") & "\desktop\test_bat.bat"
Set fso = New FileSystemObject
Set oFile = fso.OpenTextFile(FilePath, ForReading)
strFile = oFile.ReadAll
oFile.Close
Dim arrStrFile() As String
strFile = Replace(strFile, vbCr, "")
arrStrFile = Split(strFile, Chr(10))
frmTest7.ListBox1.Clear
frmTest7.ListBox1.List = arrStrFile
Set oFile = Nothing
Set fso = Nothing
End Sub