2012-09-07 66 views
4

我想在Excel中自动修改列的数字格式。自动打开,更新和保存Excel工作簿

Set excel = CreateObject("Excel.Application") 
Set oWB = excel.Workbooks.Open("E:\Docs\Invoice.csv") 

/* Excel Macro starts */ 
Columns("G:G").Select 
Selection.NumberFormat = "m/d/yyyy" 
Columns("H:H").Select 
Selection.NumberFormat = "0.00" 
/* Excel Macro ends */ 

oWB.save 
oWB.Application.Quit 

我使用命令行运行此.vbs。 Excel文档不会更新。
任何人都可以请帮我解决这个问题?

在此先感谢

+2

您已经标记了'VBA'而是说'用命令line' .VBS。这是什么? –

回答

7

你在上面的代码中缺少什么你是不是完全限定的Excel对象。

vbs如何理解Columns("G:G")是什么?

这是你正在尝试? (未经检验的 - 只需直接输入的)

Dim objXLApp, objXLWb, objXLWs 

Set objXLApp = CreateObject("Excel.Application") 
Set objXLWb = objXLApp.Workbooks.Open("E:\Docs\Invoice.csv") 

'~~> Working with Sheet1 
Set objXLWs = objXLWb.Sheets(1) 

With objXLWs 
    '/* Excel Macro starts */ 
    .Columns("G:G").NumberFormat = "m/d/yyyy" 
    .Columns("H:H").NumberFormat = "0.00" 
    '/* Excel Macro ends */ 
End With 

objXLWb.Save 
objXLWb.Close (False) 

Set objXLWs = Nothing 
Set objXLWb = Nothing 

objXLApp.Quit 
Set objXLApp = Nothing 

编辑:我唯一担心的是,NumberFormat中不会留下,因为它是一个CSV文件。您可能想将其保存为Excel文件?

久经考验

Dim objXLApp, objXLWb, objXLWs 

Set objXLApp = CreateObject("Excel.Application") 

objXLApp.Visible = True 

Set objXLWb = objXLApp.Workbooks.Open("E:\Docs\Invoice.csv") 

'~~> Working with Sheet1 
Set objXLWs = objXLWb.Sheets(1) 

With objXLWs 
    .Columns("G:G").NumberFormat = "m/d/yyyy" 
    .Columns("H:H").NumberFormat = "0.00" 
End With 

'~~> Save as Excel File (xls) to retain format 
objXLWb.SaveAs "C:\Sample.xls", 56 

'~~> File Formats 
'51 = xlOpenXMLWorkbook (without macro's in 2007-2010, xlsx) 
'52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2010, xlsm) 
'50 = xlExcel12 (Excel Binary Workbook in 2007-2010 with or without macro's, xlsb) 
'56 = xlExcel8 (97-2003 format in Excel 2007-2010, xls) 

objXLWb.Close (False) 

Set objXLWs = Nothing 
Set objXLWb = Nothing 

objXLApp.Quit 
Set objXLApp = Nothing 
+0

+1 - 同意资格。 – brettdj

+0

谢谢Siddharth ..它按预期工作:) –