如何使用 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