【问题标题】:How to run a VBA code from a batch file?如何从批处理文件运行 VBA 代码?
【发布时间】:2017-05-16 04:18:20
【问题描述】:

我有一个 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

【问题讨论】:

  • 你需要把你的代码放到另一个excel文件或VBScript中。

标签: vba excel batch-file vbscript


【解决方案1】:

您可以使用 VBScript 在工作簿中静默运行 MACRO。

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

  1. "C:\YourFolderPath\" - 包含您的文件夹路径,用于保存包含代码的 Excel 文件。

  2. "SO_VBScript.xlsm" - 修改您的 Excel 文件,在其中保留“copy_Cell_A4”Sub 代码。

  3. "copy_Cell_A4" - 这是您帖子中Sub 的名称。

VBScript 代码

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

【讨论】:

  • @TontoDiablo 你试过在 VBScript 中运行上面的 cde 吗?
【解决方案2】:

您可以稍微修改您的代码并将其存储在 .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)

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2017-03-07
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多