Q17-1:エクセル連携で保存した場合に、MZプログラムでの日付属性の部分がエクセルで表示した場合うまく表示できない様です。
A17-1:
Excelファイルアクセスコンポーネントを用いて、エクセルファイルを出力した際のご質問であると判断し、回答させていただきます。
新規でシートを作成し、ご希望の書式でセルに日付型データを設定されたい場合には、文字列として出力する必要がございます。
この場合、Excelファイルアクセスの「現在のセルの値を設定する(String)」を使用して日付型データの文字列をセルに設定することになりますが、予めご希望の書式の文字列をカレンダーコンポーネント等を用いて作成し設定する必要があります。
また、メソッド「setCurrentCellValue(Date)」を用いますと、日付型データとしてセルに値を設定することは可能ですが、エクセル側では数値型として扱われてしまいます。
これらは仕様となっておりますので、どうぞご了承ください。
一方、既に書式が設定されたエクセルファイルを読み込み、既存のシートのセルに値を設定する場合には、上述の後者のメソッドでも、既に設定されている書式で出力することが可能です。
Q17-2:
再度の質問なのですが、下記方法のMZプログラム事例を見せて頂けないでしょうか。
>この場合,Excelファイルアクセスの「現在のセルの値を設定する(String)」を使用して日付型データの文字列をセルに設定することになりますが,予めご希望の書式の文字列をカレンダーコンポーネント等を用いて作成し設定する必要があります。
A17-2:
簡単にファイルを作成しましたので、どうぞご覧下さい。
値の書出し部分は、サンプルファイル「EXCELファイルアクセス.mzax」に沿っています。
特に[ID:85サブルーチン書出し処理(書式保持)]に連なる処理に、型の判定と[カレンダー]での書式指定を加えたものですので、どうぞ比べてご覧下さい。
なお、日付型データ以外のセル値の設定にはver.2.10から追加された「現在のセルの値を自動判別して設定する(object)」を使用しています。
ver.2.9で開くとメソッドが消えてしまうかと思います。ご注意下さい。
関連ファイル:日付型エクセルファイル書出し.mzax
Q17-3:
ご指導通りの様に作成して保存した場合、エクセルで日付を変更し保存するとMZプログラムで読み込んだ場合、添付ファイルの様に正常に読み込まなくなります。
原因は日付属性の問題だと思われます。
普通に修正して正常に読み込む方法はないものでしょうか?
関連ファイル:1.xls
A17-3:
まず、MZ⇔EXCELデータ出力時の表示状態を整理しますと
新規にBOOK作成
@MZから文字列で出力(書式なし)
⇒「Jan 24 Thr・・・・」
AMZから文字列で出力(カレンダーで書式変換)
⇒指定の形式の文字列→ !!しかし問題発生!!
BMZから日付型で出力
⇒数値(シリアル値)
というような状況が見受けられます。
Aで文字列としてエクセルに設定したデータは、書式を見ると「標準」になっているのですが、一部変更すると自動的に「日付」に変わってしまいます。
またそれを保存して[エクセルファイルアクセス]で入力して見た時に、自動的に「日付」となった部分と「標準」のままのセルとでは、見え方が違うようです。
(例:01/01/2013となってしまう)
選ぶ書式によっては、変わらず見えるものもありますが、
1)ユーザーは必ず一度はエクセルで書式を指定しなければならない
2)エクセルのバージョンによって見え方が同一か担保できない
という問題があります。
現在のところ、全て自動的にエクセル上で書式指定することなく日付を扱うのは難しいとお考え下さい。