Sa016
(Satoshi A)
January 30, 2019, 8:39am
1
for each でメールメッセージ(リスト型のコレクション:m05とします)をin に設定して
ループを回します。
それをExcelにデータを渡して、データテーブルに書き込みます。
Write Cell の設定ですが、
Sheet Name :A1行から”A”+int02.ToString としてint02を1ずつ
インクリメントさせて、
Value:m05(int01). Subject.ToString として1ずつインクリメントさせれば
データテーブル(db01とします)の行がきれいにExcelに1列書き込まれます。
ここまで何の問題もありません。
ところが、エクセルの2列目にメールのSubjectから文字列処理させたデータを
同じように2列目に1行ごと書き込もうとすると、問題が生じます。
データテーブルに書き込まれたデータを加工させるので、
for eachを用います。データテーブルdb01をコレクション(in)に設定します。
同じように Write Cellさせるのですが、
Sheet Name を”B"+int04.ToString として、Valueを
db01.Rows(int05).Item(”列の2列目”.ToString として、同じように
int04とint05をインクリメントさせますが、
エラーは一切出ませんが、結果がおかしいです。
行がインクリメントされず、1行目にしか書き込まれません。
どうもdb01.Rows(int05).Item(”列の2列目”.ToString を
読んでいないようです。インクリメントさせて、1行ずつ読み込ませる
ためには、どうしたらよいのでしょうか?
ご教授いただけましたら、ありがたいです。
Sa016
(Satoshi A)
January 30, 2019, 8:42am
2
申し訳ありません。記述の誤りがありました。
訂正いたします。
第3パラグラフ:
データテーブルに書き込まれたデータを加工させるので、
for eachを用います。
という記述は誤りです。
for each row を用います。が正しいです。
はじめまして。
初心者ですが、同様の問題に当たったことがあるのでコメントさせていただきます。
MessageBoxデバッグで変数に格納されている実際の値を確かめてみる方法はいかがでしょうか。
私の場合は、インクリメントされてると想定していた変数が、実際はインクリメントされておらず、同様の問題にあたりました。
実際に変数に格納されている値をMessageBoxで表示してデバックすることで、処理の不備に気づきました。
参考になれば幸いです。
Sa016
(Satoshi A)
January 31, 2019, 12:55am
4
ご回答ありがとうございます。
messageboxは最初から使って確認しています。
それでも、よくわからないので、お伺いしています。
Write CellのRangeの設定が上と下では全く同じで、インクリメントの仕方も
全く同じなのに、for each ではインクリメントするのに、
for each row ではインクリメントされず、行が下にダウンせず、書き込まれないことを
問題にしています。
設定はコピーして設定し、何度も確認して同じことを確認しています。
なぜそのような仕様の違いが起きるのか、困っています。
ひょっとしたら単純な設定の問題かもしれませんが
どなたかご指摘いただけますと、ありがたいです。
Sa016
(Satoshi A)
January 31, 2019, 12:57am
5
掲題の仕方が不適切だったと思いますので、
訂正して再度別の問題として起こすことにいたします。