格式化单元格从一般到文本

Format cell from general to text

我正在尝试编写一个小脚本来打开 Excel,将单元格 B1 格式化为文本并保存文件,但我无法使 "format to text" 工作。有人知道我在这里错过了什么吗?

这条线不起作用:ExcelObj.Cells("B").Value = "@"

Set ExcelObj = CreateObject("Excel.Application")
ExcelObj.DisplayAlerts = False
ExcelObj.Visible  = true    ' or false
ExcelObj.Workbooks.Open "C:\Supplier\DK\ExternalPrices\Mapforcecode\Computercity\excelmapping\ExternalPrices.xlsx"
ExcelObj.Cells("B").Value = "@"
ExcelObj.Workbooks(1).SaveAs "\file-srv1\Scalepoint\Supplier\Catalog\Data\DK\Computercity\Current\ExternalPrices.xlsx", 51
ExcelObj.Quit
ExcelObj.ActiveSheet.Range("B1").NumberFormat = "@"

如有疑问,请阅读 documentationCells 属性 需要行号和列号:

ExcelObj.Cells(1, 2).NumberFormat = "@"

如果您想使用 "B1" 表示法,您必须使用 Range 属性:

Set wb = ExcelObj.Workbooks.Open "C:\Supplier\...\ExternalPrices.xlsx"    
wb.Sheets(1).Range("B1").NumberFormat = "@"
wb.SaveAs "\file-srv1\Scalepoint\...\ExternalPrices.xlsx", 51
wb.Close

但是请注意,Range 是相对于活动单元格而言的,因此根据您的活动单元格是否是 A1,您可能会引用不同的单元格。 Cells的索引是绝对的。