我的问题如下:
我打开一个 Excel - 文件,但我不知道我的客户在模板文件中使用了哪些可能的标头变量。这些可以是:#DATE、#TIME、#NAME 等等。所以我需要寻找这些变量,如果已经使用:替换它们。
vCell = findCell("DATE");
tempStr = DateToStr(Date()) ; // Date
if (vCell.VType != VT_EMPTY )
vWorksheet.OlePropertyGet("Cells", vCell.OlePropertyGet("Address")).OlePropertySet("Value",StringToOleStr(tempStr));
findCell 看起来像这样:
Variant __fastcall TClassExcel::findCell(AnsiString Cell,String Range){
// Range is set to A1:Z100 as default in the header file
vRange = vWorksheet.OlePropertyGet("Range",StringToOleStr(Range));
return vRange.OleFunction("Find", StringToOleStr("#"+Cell));
}
该行if (vCell.VType != VT_EMPTY)
不检测标题内是否没有这样的单元格。我也尝试过vCell.Empty()
,但没有成功。Vtype
= 9 如果我看值。所以,我正在寻找VBA对应的“ If Not cell Is Nothing Then ”
此参考是查找方法的 MSDN 库:MSDN Find Method以确保不要尝试将某些变量写入不存在的单元格。