• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel2003)

Excel2003で固定長ファイルの複数行取り込みの方法

このQ&Aのポイント
  • Excel2003で固定長ファイルを複数行取り込む方法について教えてください。貼付シートのA1に取り込み、2GシートのE1-E301~BB1~BB301に各桁数を指定したいです。
  • 固定長ファイルをExcel2003で取り込む際の方法について質問です。複数行のファイルを取り込む場合、貼付シートのA1に取り込み、2Gシートの範囲に各桁数を指定したいのですが、繰り返し記述する必要があるのでしょうか。
  • Excel2003で固定長ファイルを複数行取り込む方法について教えてください。貼付シートのA1に取り込み、2Gシートの範囲に各桁数を指定したいですが、長くなりすぎてしまう場合、マクロを組む意味がなくなってしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

これ、Excel2003の問題ですね。 Excel2003はセルに表示できるのが1024文字なので sString = Sheets("貼付").Range("A" & i).Text で、取り出すと1024文字だけになってしまいます。 「.Text」を取って…… sString = Sheets("貼付").Range("A" & i) これなら大丈夫だと思います。

buu-1627
質問者

お礼

!!! 有難うございました! できました!! 本当に、本当に助かりました! ただ・・・ 実は、もうちょっと手を加えたい所がありまして・・・ 来週、月曜日に再度質問すると思いますので、 もし宜しければまたご回答頂けると嬉しいです。 本当に有難うございました。

その他の回答 (2)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

こちらの環境(Excel2010)ではちゃんと動きましたよ。 「データが反映されない」と言っている辺りでWindowsの一つの区切りである1024文字を超えています。 貼付シートにどうやって文字列を入れているのか知りませんが、1024文字しか入っていない可能性はありませんか?ちゃんと1578文字入っていますか?

buu-1627
質問者

補足

ご確認・ご回答有難うございます。 ご指摘のありました、 >貼付シートにどうやって文字列を入れているのか →固定長ファイルの内容をコピーし、貼付シートA1にそのまま貼付けています。 >1024文字しか入っていない可能性はありませんか →全体の文字数は4170文字で貼付シートA1に4170文字存在しています。 (サクラエディタで確認) 今回は試しに1578文字まで設定しました。 mt2008さんの方では正常に動作したとの事ですので、 再度、こちら側で確認してみたいと思います。 有難うございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

こういう事がしたいのかな? Sub Sample()   vLeng = Array(5, 4, 6, 12, 12) '←取り出す文字数   For i = 1 To Sheets("貼付").Range("A" & Rows.Count).End(xlUp).Row     sString = Sheets("貼付").Range("A" & i).Text     sString = Replace(Replace(sString, " ", "*"), " ", "×")     nPos = 1     For j = 0 To UBound(vLeng)       Sheets("2G").Cells(j + 1, i + 4) = Mid(sString, nPos, vLeng(j))       nPos = nPos + vLeng(j)     Next j   Next i End Sub

buu-1627
質問者

補足

すごいです! できました!有難うございます。 しかし・・・ 見にくいですが、下記取り出す文字数を指定しているにも関わらず、途中から内容が反映されません。 なぜでしょうか?制限数でもあるのでしょうか? 具体的に、取り出す文字数の上から5行目:真ん中あたりから反映されません。 6, 12, 8, 6, 12, 8, 6, 12, 8, 0, 100, 30, 1, 1, 10, _ 10, 23, 1, 20, 8, 100, 100, 30, 25, 23, 20) ' Sub Sample() vLeng = Array(5, 4, 6, 12, 12, 8, 23, 19, 1, 1, 6, 3, 13, 1, 12, 10, 1, 7, 20, 1, 3, _ 30, 25, 25, 2, 7, 1, 8, 3, 1, 0, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, _ 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, _ 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, _ 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 0, 100, 30, 1, 1, 10, _ 10, 23, 1, 20, 8, 100, 100, 30, 25, 23, 20) '←取り出す文字数 For i = 1 To Sheets("貼付").Range("A" & Rows.Count).End(xlUp).Row sString = Sheets("貼付").Range("A" & i).Text sString = Replace(Replace(sString, " ", "*"), " ", "×") nPos = 1 For j = 0 To UBound(vLeng) Sheets("2G").Cells(j + 1, i + 4) = Mid(sString, nPos, vLeng(j)) nPos = nPos + vLeng(j) Next j Next i End Sub 再度、ご回答頂ければ非常に助かります。 宜しくお願い致します。

関連するQ&A