【问题标题】:Convert Excel macro to vbs script将 Excel 宏转换为 vbs 脚本
【发布时间】:2014-09-18 00:40:00
【问题描述】:

你好,我有一个问题。

我有一个 csv 文件,其中包含我不想要的数据。 所以我想删除它。我是 vbs 脚本的新手,所以需要一些帮助。

如何在 vbs 脚本中编写这个?

Sub Work1()
'
' Work1 Makro
'

'
    Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
    Columns("B:D").Select
    Selection.Delete Shift:=xlToLeft
    Columns("C:H").Select
    Selection.Delete Shift:=xlToLeft
    Columns("E:E").Select
    Selection.Delete Shift:=xlToLeft
    Columns("F:F").Select
    Columns("F:AP").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1:E7").Select
    Selection.EntireRow.Delete
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("N23").Select
    ActiveWindow.SmallScroll Down:=-21
    ChDir "C:\CSV"
    ActiveWorkbook.SaveAs Filename:="C:\CSV\export.csv", FileFormat:=xlCSV, _
        CreateBackup:=False
End Sub

我已经走到这一步了。删除列的部分是我的问题。

Set xl = CreateObject("Excel.Application") 
xl.Visible = True  'set to False for production 

Set wb = xl.Workbooks.Open("C:\csv\prov.csv")
Set objWorkbook = wb


‘replace values

Const FromValue = ","
Const ToValue = "."

Dim objExcel
Dim objWorksheet : Set objWorksheet = objWorkbook.Worksheets(1)
'Dim objRange : Set objRange = objWorksheet.UsedRange

objWorksheet.Cells.Replace FromValue, ToValue

objExcel.DisplayAlerts = False 


wb.SaveAs "C:\csv\data.csv"
wb.Close SaveChanges=True

【问题讨论】:

  • 您的问题到底是什么?你想让我做什么?它在做什么?
  • Things to observe 将 VBA 转换为 VBScript 时。

标签: excel csv vbscript


【解决方案1】:

您可以将Select 和以下Selection 语句合并为一个。例如,而不是:

Columns("E:E").Select
Selection.Delete

你可以这样做:

objWorksheet.Columns("E:E").Delete
' or
objWorksheet.Columns("E").Delete
' or
objWorksheet.Columns(5).Delete

这将从objWorksheet 引用的工作表中删除列E。

【讨论】:

    【解决方案2】:

    您好,谢谢您的快速回答。 效果很好,这是最终脚本。

    Set xl = CreateObject("Excel.Application") 
    xl.Visible = True  'set to False for production 
     
    Set wb = xl.Workbooks.Open("C:\csv\prov.csv")
    set objWorksheet = xl
    Set objExcel = xl
    
    objWorksheet.Columns("A:A").Delete
    objWorksheet.Columns("B:D").Delete
    objWorksheet.Columns("C:H").Delete
    objWorksheet.Columns("E:E").Delete
    objWorksheet.Columns("F:AP").Delete
    objWorksheet.Rows("1:7").Delete
    
    Const FromValue1 = ","
    Const ToValue1 = "."
    
    
    Dim objExcel
    Dim objWorksheet : Set objWorksheet = xl
    'Dim objRange : Set objRange = objWorksheet.UsedRange
     
    objWorksheet.Cells.Replace FromValue1, ToValue1
    
    	
    objExcel.DisplayAlerts = False 
    
    wb.SaveAs "C:\csv\export.csv"
    wb.Close SaveChanges=True
    
    xl.Quit

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      相关资源
      最近更新 更多