0

https://winactor.com/questions/question/変数値をcsvに追記したい/

このスレッドで一旦解決済みのテーマです。

CSVの出力(上書き)がうまくいかないケースに遭遇しました。
A列だけが出力され、B列以降が切り捨てられます。

Set region = ws.Range("A1").CurrentRegion
For Each Row In region.Rows
 For Each cell In Row.Columns ← ここで切り捨てられてるっぽい

  • Row.Columnsを手前で定義したmaxColumnに差し替えたら、上書きされなくなった

maxColumn = ws.Range("XFD1").End(xlLeft).Column

  • 範囲に単一の列番号指定を試みたことになる、、当然か、、
  • iのループにすれば、Range("A" & i & ":" & maxColumn & i)で何とかなりそうではある

 

  • データは10行×26列
  • ただしB列が一律ブランク ← .CurrentRegionが1列とみなされる原因っぽい
  • 文字コード対応の曖昧さがついに露呈したかと思いきや
  • モードBで動かすと、B列は一律ブランクになる
  • B列に一律ダミーデータを入れちゃうのは最終手段に取っておきたい
  • スマートな落としどころを見つけたい

この場合の正攻法や代替案って、どんなものが考えられますか?

 

  • 列数は可変
  • 同じシナリオを共用する別業務で、任意の列数に変更することがある
  • .CurrentRegionはかなり都合が良かった
  • モードCで、5列目が一律ブランクになることも考えられる

こんなシチュエーションに、常套手段があったりするのでしょうか?

anothersolution 編集済みのコメント
回答とコメントは、会員登録(無料)で閲覧できるようになります。