質問: excelが値を適切に再計算しない 値が含まれているexcelシートがあります(このシートはカスタムperlスクリプトによって生成されますが、そこに問題があるとは思いません)。その中に、私は式を持っています:_=sum(indirect(concatenate(address(6,column()),":",address(17,column())))) _この数式の目的は、現在の列の行6と17の間のセルのsum()を取得することです。 gnumeric spreadsheet で、ファイルを開くとすぐに、これは機能します。ただし、excel(2003と2007の両方)では、ファイルを開くと、この数式のフィールドに_#value!_エラーが発生し、indirectが値_$b$6:$b$17_はエラーになります。これが問題のねじれです。 (_f2_を介して)フィールドを編集し、noを変更して、enterキーを押すと、値が更新されます。また、ファイルを.xlsx(excel 2007形式)で保存すると、開くと値が更新されるようです。残念ながら、私が使用しているモジュールでxlsxを作成できるかどうかはわかりません。また、クライアントの多くはおそらくそれを使用できないでしょう。助言がありますか?クライアントごとに毎月200以上のファイルを編集することは不可能なので、何か足りないものがあれば教えてください。
回答: たぶん、これでスプレッドシート全体の再計算を強制することができます: http://msdn.microsoft.com/en-us/library/bb687891.aspx マクロの名前を変更してから、スプレッドシートの名前を再度変更すると、正常に機能するはずです。たぶん、パールスクリプトの最後で実行できますか?真珠についてはあまりよくわかりません。または、ホットキーctrl + alt + f9を使用し、それが機能する場合は、次の関数でvbaを使用します:application.calculatefull