如何从批处理文件运行VBA代码?

如何从批处理文件运行VBA代码?,vba,excel,batch-file,vbscript,Vba,Excel,Batch File,Vbscript,我有一个XLSX文件,我修改它,使用下面的VBA代码将一些数据从一个单元格复制到另一个单元格 然后我将这个xlsx文件转换为csv格式。(我可以这样做) 因为这个xlsx文件每天都被一个新文件替换,所以我需要找到一种方法,从我可以安排的批处理文件中运行我的VBA代码 我的代码 Option Explicit Sub copy_Cell_A4() Dim RowLocation As Long 'can hold over 32000 if over this many rows

我有一个XLSX文件,我修改它,使用下面的VBA代码将一些数据从一个单元格复制到另一个单元格

然后我将这个xlsx文件转换为csv格式。(我可以这样做)

因为这个xlsx文件每天都被一个新文件替换,所以我需要找到一种方法,从我可以安排的批处理文件中运行我的VBA代码

我的代码

Option Explicit

Sub copy_Cell_A4()

    Dim RowLocation As Long 'can hold over 32000 if over this many rows
    Dim ws As Worksheet

    Application.ScreenUpdating = False

    For Each ws In Worksheets
        RowLocation = ws.Range("A" & Rows.Count).End(xlUp).Row
        ws.Range("A4").Copy ws.Range("J6:J" & RowLocation)
        ws.Range("A2").Copy ws.Range("K6:K" & RowLocation)
        ws.Range("E2").Copy ws.Range("L6:L" & RowLocation)
    Next ws

    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Application.ThisWorkbook.Close SaveChanges:=True

End Sub
Option Explicit

Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Open("C:\YourFolderPath\SO_VBScript.xlsm", 0, True)
xlApp.Run "copy_Cell_A4"
xlApp.DisplayAlerts = False
xlBook.Save
xlBook.Close
xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing

WScript.Echo "Finished"
WScript.Quit

您可以稍微修改代码并将其存储在.vbs脚本中,该脚本将是一个独立的脚本文件,因此可以独立使用

按如下方式引用excel文件:

Option Explicit
Dim xlApp, xlBook
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Users\user1\Desktop\samplefile.xlsx, 0, True)

希望这会有所帮助。

您可以使用VBScript在工作簿中以静默方式运行宏

在下面的代码中,只需替换以下参数:

  • “C:\YourFolderPath\”
    -带有文件夹路径,您可以在其中保存包含代码的Excel文件

  • “SO_VBScript.xlsm”
    -修改Excel文件,在其中保存“复制单元格A4”
    子代码

  • “copy\u Cell\u A4”
    -这是您帖子中的
    子项的名称

  • VBScript代码

    Option Explicit
    
    Sub copy_Cell_A4()
    
        Dim RowLocation As Long 'can hold over 32000 if over this many rows
        Dim ws As Worksheet
    
        Application.ScreenUpdating = False
    
        For Each ws In Worksheets
            RowLocation = ws.Range("A" & Rows.Count).End(xlUp).Row
            ws.Range("A4").Copy ws.Range("J6:J" & RowLocation)
            ws.Range("A2").Copy ws.Range("K6:K" & RowLocation)
            ws.Range("E2").Copy ws.Range("L6:L" & RowLocation)
        Next ws
    
        Application.CutCopyMode = False
        Application.ScreenUpdating = True
        Application.ThisWorkbook.Close SaveChanges:=True
    
    End Sub
    
    Option Explicit
    
    Dim xlApp
    Dim xlBook
    Set xlApp = CreateObject("Excel.Application")
    
    Set xlBook = xlApp.Workbooks.Open("C:\YourFolderPath\SO_VBScript.xlsm", 0, True)
    xlApp.Run "copy_Cell_A4"
    xlApp.DisplayAlerts = False
    xlBook.Save
    xlBook.Close
    xlApp.Quit
    
    Set xlBook = Nothing
    Set xlApp = Nothing
    
    WScript.Echo "Finished"
    WScript.Quit
    

    您需要将代码放在另一个excel文件或VBScript中。@TontoDiablo您是否尝试过在VBScript中运行上述cde?