質問へのご回答と、おそらく混乱している原因、それと最後に少し書きたいことを。。
1.【質問へのご回答】row()とdtA.Rows().item()の使い分けについて
row()を使うときとrows().item()を別に考えておられるみたいですが、本質的には同じものです。
なので、使い分けは好みでよいかと。
※私は、一度rowに受けるのが好きなので(単純に記述量を減らすため)
row = dtA.rows(0)
等として使います。
そのあと使用するときに、これまた記述量を減らすために、row.item(0)とせずに
row(0)
等として使用することが多いです。
rowというものは基本的には、単体では意味がないものです。
基本的にはなんらかのデータテーブルに所属します。
※理由は列情報のない行に意味がないからです。
※分かりやすくするためにだいぶ単純化しています。
※正式な情報はmicrosoftの.netの公式ドキュメントがよいかと。すごく分かりにくいですが。。
rowを使用するケースは2つあります。
1-1.row = dtA.Rows(<行番号>)
1-2.row = dtA.NewRow
1-1.はテーブル(excelの表のイメージ)内のある行を表しています。(excelの横(行)のイメージ)
1-2.はテーブルの新規行を表しています。(excelの表の下にデータを1行追加するイメージ)
※繰り返し(各行)で現れているrowは内部的には1.を使用していると考えていただいて構いません。
プロパティの出力にある現在のインデックスというのが行番号を表しています。
2.【混乱している原因?】1行目は「Row(0)」ではなく「Row(1)」となる。について
範囲を読み込む際にdtA.Rows(1)で1行目が取れる理由は、
ヘッダー(項目名)がある表の場合に、ヘッダーの追加をfalseにしているからだと推察します。
たとえば、excelで
1行目 “col1”,“col2” ← これをヘッダー(項目名)と呼んでいます。
2行目 “a”,1←これを1行目と呼んでいると思われます。
3行目 “b”,2
※excelは1始まりで行番号があるため
という表があるとします。
この表を範囲を読み込むアクティビティでdtAに読み込む場合を考えます。
ヘッダーの追加=trueの場合
列名 “col1”,“col2”
データ(2行)
(dtA.Rows(0)) a,1 ← 0番目が"1行目を表している"と感じる
(dtA.Rows(1)) b,2
ヘッダーの追加=falseの場合
列名 “Column1”,“Column2”
データ(3行)
(dtA.Rows(0)) col1,col2
(dtA.Rows(1)) a,1 ← 1番目が"1行目を表している"と感じる
(dtA.Rows(2)) b,2
となります。
なので、範囲を読み込むを使用する場合でもデータテーブル自体の仕様は同じです。
3.【言いたいこと】宛先指定について
このような質問系掲示板では宛先指定はしない方がよいと思います。
回答してくれた人が次いつ入ってくる分からない(最悪帰ってこないこともある)ですし、他によい回答をすぐにしてくれる人が出てくるかもしれないからです。
※hiromitsu_sekine様に言いたいという訳ではありません。他にもいくつか指定するやりとりを見ていて、回答者が忙しそうなのを見るともったいないなーと感じていてどこかで言いたいと思っていたものです。
ここで書いてしまって少し申し訳なく思います。
以上、長くなってしまいましたが、ご参考まで。