エクセル表中セル内での改行No.06630
[ ZIROH ] さん 00/10/17 03:51
 
よろしくお願いします m(_ _)m 。

 MSエクセルの表をコピーし、秀丸エディタに貼り付けると、行
 は改行で、列はタブで置き換わります。

 問題はセル内で改行されている場合(セル内が複数行になってい
 る)なんですが、多くのエディタ(代表:メモ帳)では、

  "たとえば\nこんなふうに"

 便宜上改行を \n で示していますが、エディタ上では普通に改行
 されています。

 つまり「"」区切りで「このセルはセル内で改行されていますよ」
 ということを表しているのですが、秀丸エディタでは、

  "たとえばこんなふうに"

 というような感じで改行されません。

 これで困っているのは、エクセル表を HTML 表に変換するマクロ
 で「"」ではさまれている範囲内の改行は <BR> タグに変換すると
 いう指定が効かないということなんです。

 今は、一度メモ帳に貼り付け、もう一度それをコピーし、秀丸エ
 ディタに貼り付けるという作業をしています。

 なんとか秀丸エディタで

  "たとえば\nこんなふうに"

 というようにすることはできないでしょうか?

[ ]
RE:06630 エクセル表中セル内での改行No.06632
きいろいまふらあ さん 00/10/17 09:37
 
[ ZIROH ]さん、こんにちは。きいろいまふらあです。

> 便宜上改行を \n で示していますが、エディタ上では普通に改行
> されています。

Win95B上の Excel95,Excel97およびWin98上のExcel2000で試したのですが、
メモ帳に貼りつけた時点では、セル内の改行位置に何か制御文字は入っている
(半角の■で表示される)ようですが、見た目、改行はされませんでした。

> 今は、一度メモ帳に貼り付け、もう一度それをコピーし、秀丸エ
> ディタに貼り付けるという作業をしています。

いずれも、メモ帳から秀丸にコピーした時点で、上の制御文字らしきものは
消えてしまいました。

という意味で、私のところの環境では、二重の意味で[ ZIROH ]さんの
おっしゃっている現象が再現できませんでした。
参考までに[ ZIROH ]さんの環境はどうなってますか?

> これで困っているのは、エクセル表を HTML 表に変換するマクロ
> で「"」ではさまれている範囲内の改行は <BR> タグに変換すると
> いう指定が効かないということなんです。

後ろ向きな解決法としては、Excelの側であらかじめ<BR>に変換しておく
という手もありますね。

ご参考まで。

[ ]
RE:06632 エクセル表中セル内での改行No.06634
ENCODINGSHIFTJIS さん 00/10/17 10:13
 
\xA が 見た目改行でした

>後ろ向きな解決法としては、Excelの側であらかじめ<BR>に変換しておく
>という手もありますね。

Sub ZA2BR()
' 現在シートを全部 新シートにコピーして処理する
' シート数増える一方
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets.Add
ActiveSheet.Paste

Set range1 = Selection.CurrentRegion '全体範囲
For Each cell1 In range1

str0 = cell1.Value '変換前
If InStr(str0, Chr(10)) < 1 Then
GoTo continue1
End If
str1 = ""          '変換後
' シンプルで遅いです
For strx = 1 To Len(str0)
   char1 = Mid(str0, strx, 1)
If char1 = Chr(10) Then
str1 = str1 + "<BR>"
Else
str1 = str1 + char1
End If
Next
cell1.Value = str1  '置換

continue1:
Next
End Sub

テストランは1回しかしてません。

[ ]
RE:06634 エクセル表中セル内での改行No.06683
[ ZIROH ] さん 00/10/19 01:53
 
きいろいまふらあサン、ENCODINGSHIFTJISサン、レス有り難うござ
いました m(_ _)m 。

まず、きいろいまふらあサンにはお詫びしなければなりません。
メモ帳にて改行されるというのは、ワタシの勘違いでした。
ワタシの環境(Win2K + Excel2K)でも半角黒四角で表示されます。
ロクに確認もせず、また環境も書かずに投稿してしまい申し訳あり
ませんでした m(_ _)m 。

ということで、メモ帳からのコピー、貼り付けではなく、別のエデ
ィタからのものとなります。
この「\xA」についての処理は各エディタにより判断が違い、秀丸
エディタでは無視されるようですね。

> Excelの側であらかじめ<BR>に変換しておく

はい、まさにこの方法で対処してましたが、せっかく

 「"」で囲まれた範囲内の改行は <BR> に変換する

というマクロを書いたのだから...と意地になってました。

今度は ENCODINGSHIFTJISサンに書いていただいたコードを基に、
Excel側でマクロを作ってみます。

それでは、有り難うございました m(_ _)m 。

[ ]
RE:06683 エクセル表中セル内での改行No.06694
ENCODINGSHIFTJIS さん 00/10/20 09:22
 
この「\xA」についての処理は各エディタにより判断が違い、秀丸
>エディタでは無視されるようですね。

? ? Win95 秀丸3.05 では改行で再現されましたけれど? (ALT+[Enter])
その他の方法では クリップボードでなくファイル保存を経由するのも
あります。それを メニュー>ファイル>カーソル位置への読み込み
ファイル保存の形式は数多い、また Excel → Word で
ファイル保存すると また 多彩な保存ができる。
しかし、罫線は無理、「罫線を罫線文字に」の変換はできない。
Word  
テキスト+改行では 表内の 成り行き改行も再現される
テキストのみ では   成り行き改行はなく、ALT+ENT の改行のみ再現される。

[ ]