我正在尝试使用Excel宏重新格式化使用OLE-Automation
导出的电子表格以下代码可以正常工作:
Application.FindFormat.NumberFormat = "#,##0.0000000"
Application.ReplaceFormat.NumberFormat = "#,##0.00"
Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True
如果我将ReplaceFormat更改为
Application.ReplaceFormat.NumberFormat = "#,##0.0"
只显示1位小数,我收到错误1004(应用程序定义或对象定义错误)。 “0.0”也失败了。
我可以将单元格格式(Cells.NumberFormat)设置为“#,## 0.0”
我只针对Excel-2003尝试了这个,因为它是我唯一可用的版本。
答案 0 :(得分:1)
我找到了部分答案。为此,NumberFormat必须已存在于工作簿中。
解决方法是将单元格的格式设置为“#,## 0.0”,然后执行替换:
Worksheets("Sheet1").Range("A1").NumberFormat = "#,##0.0"
Application.FindFormat.NumberFormat = "#,##0.0000000"
Application.ReplaceFormat.NumberFormat = "#,##0.00"
Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True
似乎没有任何合集可以让我获得自定义数字格式(According to this site anyway)。
我在将Application.FindFormat设置为新格式时开始抛出错误,我发现了这一点!
答案 1 :(得分:1)
运行时错误'1004':应用程序定义的错误或对象定义的错误
要避免此错误,您必须至少使用两种已使用格式的现有单元格。我有第一行的列名,所以他们只有字符串值,并设置前两个列名到dateformat将不会对我的工作表数据产生任何可见的影响。
Sub datum_popravak_rucno()
' add find format to cell A1
ActiveSheet.Range("A1").NumberFormat = "m/d/yyyy"
' add replace format to cell B1
ActiveSheet.Range("B1").NumberFormat = "yyyy-mm-dd hh:mm:ss"
' define find format
Application.FindFormat.NumberFormat = "m/d/yyyy"
' define replace format
Application.ReplaceFormat.NumberFormat = "yyyy-mm-dd hh:mm:ss"
' do replace on all cells
Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByColumns, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True
End Sub
适用于Excel 2003,2007,2010!