- ベストアンサー
マクロエラーについて
Sub Kanrimas_call() Dim komo(18) As String, nara As String, st Dim finame(1) As String, foname(1) As String, narabi As String, path As String, kensu As Integer Dim ken As Integer, moji As String, c As Integer, kamei, code count = 0: cout = 0: kensu = 2: narabi = "": code = "": st = 0 path = "c:\aa着色加工計画\" finame(1) = "T_SORT.csv" foname(0) = "kanrisha.csv" foname(1) = "管理者マスタ.csv" Close #2 Close #1 Open path + foname(0) For Output As #2 'Kanrisha.csvを開く Open path + foname(0) For Append As #2 'kanrisha.csvを追加モードで開く Open path + finame(1) For Input As #1 '項目名の出力 Input #1, code, komo(1), komo(2), komo(3), komo(4), komo(5), komo(6), komo(7), komo(8), komo(9), komo(10), komo(11), komo(12), komo(13), komo(14), komo(15), komo(16), komo(17), komo(18) Do Until EOF(1) = True Input #1, code, komo(1), komo(2), komo(3), komo(4), komo(5), komo(6), komo(7), komo(8), komo(9), komo(9), komo(10), komo(11), komo(12), komo(13), komo(14), komo(15), komo(16), komo(17), komo(18) 上記のマクロを実行すると、 Input #1, code, komo(1), komo(2), komo(3), komo(4), komo(5), komo(6), komo(7), komo(8), komo(9), komo(9), komo(10), komo(11), komo(12), komo(13), komo(14), komo(15), komo(16), komo(17), komo(18)の所で ファイルにこれ以上データがありませんというメッセージがでます。 何がおかしいのでしょうか、教えてください。 ちなみに、T_SORT.csvにはデータがA列からS列まで19列にデータがあります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> Input #1, code, komo(1), komo(2), komo(3), komo(4), komo(5), komo(6), komo(7), komo(8), komo(9), komo(9), komo(10), komo(11), komo(12), komo(13), komo(14), komo(15), komo(16), komo(17), komo(18)の所で > ファイルにこれ以上データがありませんというメッセージがでます。 > 何がおかしいのでしょうか、教えてください。 > ちなみに、T_SORT.csvにはデータがA列からS列まで19列にデータがあります。 まず、foname(0)をOutputモードとAppendモードで二重に開こうしていますので、この時点でエラーになります。(質問欄の記述誤り?) 本題ですが、最後の行をInputするときにエラーが発生します。 Do ~以下のInput文の変数(code ~ komo(18))が全部で20個あるため、最後のkomo(18)にInputしようとして「ファイルにこれ以上」データがありません」となります。 最後のkomo(18)をはずせば、読み込めますが、そもそも、komo(9)が2回あるのは正しいのでしょうか?
その他の回答 (1)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 Input~のコードは2箇所ありますが、どちらで出ますか。もし、Doループ内でなら、何周目で出ますか。(ちなみにこのDoループはお尻にLoopはもちろんあるんですよね。) おかしいというのは、読み込んだデータの行数と実際のCSVファイルの行数が一致しないということですか? あと、foname(0)をOutputモードとAppendモードで二重に開こうとしてますが、これではエラーになるのでは?(この質問欄への単なる記述ミスならいいですが) 補足お願いします。 あと、蛇足ですが ファイル番号は1、2という数字を直接あてるのではなく、FreeFile関数を使用した方がいいですよ。FreeFile関数を使用すれば、わざわざ最初に使う番号をCloseしなくてもいいですし。 あと文字列の結合は"+"ではなく、"&"を使用した方がいいですよ。数値演算と混同しますし。 では。
お礼
参考になりました。 ありがとうございました。