私の問題は次のとおりです。
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 ライブラリの find メソッドへの参照です: MSDN Find メソッドは、存在しないセルにいくつかの変数を書き込もうとしないようにします。