繁体   English   中英

Windows脚本打开Excel文件并运行宏

[英]Windows Script to open Excel file and run macro

抱歉,我是VBA的新手,所以我在学习中一直在学习。 我试图寻找答案,但是我发现的所有内容似乎都认为该宏将在我要打开的文件中。

一个月一次,我得到一个包含一些数据的文件。 到目前为止,我不得不查看数据,然后执行VLOOKUP在添加数据之前添加一些其他数据。

现在,我已经写了一个VBA宏来添加我想要的其他信息,它可以按预期工作。 但是,我想做的是拥有一个Windows脚本,它将打开我收到的文件,运行我编写的宏,然后将该文件另存为csv。

谁能指出我正确的方向? 如果需要,我的宏在下面

Sub AddBandInfo()
Dim i As Long
For i = 2 To 50000
Dim band As String, result As Double
band = Range("B" & i).Value
If band = "A" Then result = 1144.02
If band = "B" Then result = 1334.7
If band = "C" Then result = 1525.36
If band = "D" Then result = 1716.04
If band = "E" Then result = 2097.38
If band = "F" Then result = 2478.72
If band = "G" Then result = 2860.08
If band = "H" Then result = 3432.08
If band = "" Then result = 0.01
Range("C" & i).Value = result
Next i

Dim r As Long
For r = Sheet1.UsedRange.Rows.Count To 1 Step -1
If Cells(r, "C") = "0.01" Then
    Sheet1.Rows(r).EntireRow.Delete
End If
Next

End Sub

谢谢

创建一个.txt文件,并将其重命名为.vbs。

使用以下代码启动代码:

Set objXLS = CreateObject("Excel.Application")
Set myWkbk = objXLS.Application.Workbooks.Open("C:\mypath\myfile.xlsx")
Set myWksh = myWkbk.Worksheets("yoursheet")
With myWksh

'your
'code
'here

End With

Set objXLS = Nothing

全部做完。 :)

我们可以通过以下方式提高AddBandInfo的速度和性能:

  • 切换Application.ScreenUpdating
  • 从最后一行循环到第一行(这样做允许使用删除行)

如果50000不是实际的最后一行使用

对于i = Range(“ B”&Rows.Count).End(xlUp).Row To 2 Step -1

Public Sub AddBandInfo()
    Dim i As Long
    Application.ScreenUpdating = False
    For i = 50000 To 2 Step -1
        Dim band As String, result As Double
        band = Range("B" & i).Value
        Select Case Cells(i, 2).Value
            Case "A"
                Range("C" & i).Value = 1144.02
            Case "B"
                Range("C" & i).Value = 1334.7
            Case "C"
                Range("C" & i).Value = 1525.36
            Case "D"
                Range("C" & i).Value = 1716.04
            Case "E"
                Range("C" & i).Value = 2097.38
            Case "F"
                Range("C" & i).Value = 2478.72
            Case "G"
                Range("C" & i).Value = 2860.08
            Case "H"
                Range("C" & i).Value = 3432.08
            Case Else
                Rows(i).EntireRow.Delete
        End Select
    Next
    Application.ScreenUpdating = True
End Sub

假设AddBandInfo保存在C:\\ somedirectory \\ somefile.xlsx中,并且您想要vbscript打开工作簿,然后运行AddBandInfo:

Const WorkBookPath = "C:\somedirectory\somefile.xlsx"
Dim xlApplication, xlWorkbook

Set xlApplication = CreateObject("Excel.Application")
Set xlWorkbook = xlApplication.Workbooks.Open(WorkBookPath)
xlApplication.Run "'" & xlWorkbook.Name & "'!AddBandInfo()"

xlWorkbook.Save , False
xlApplication.Quit

Set xlApplication = Nothing

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM