• ベストアンサー

メモ帳に表をコピーする

エクセルで下のような簡単な表を作ったのですが、 1 XXXXXXXX AA 2 XXXX   BBB 3 XXXXXX  C これをメモ帳にコピーすると、こんな風に間が詰まってしまいます 1 ああああ AA 2 いい BBB 3 ううう C 手動でスペースを入れて上の方の表っぽくしたのですが、これを自動でやる方法は無いでしょうか?

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

  • ベストアンサー
  • kazzs
  • ベストアンサー率40% (129/322)
回答No.2

http://cgi.fuji.ne.jp/~fj2094/cgi-bin5/exqalounge.cgi?print+200706/07060012.txt ありましたがマクロなのでちょっと手間かもしれません。

wasa131
質問者

お礼

回答ありがとうございます。 マクロを使ったことが無かったので大分手間取りましたが、なんとか出来ました!

その他の回答 (6)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

#5 の回答者です。 >教えてくださったマクロはNO.2の方のリンク先のマクロと同じ使い方でいいのでしょうか? 同じオブジェクトを使っています。そのコード自体では、強制終了するような問題はないはずですが、オブジェクト自身か、システム上のトラブルがあるのか、クリップボードに異物が入るのかだと思います。そういう場合は、あえて継続的にお使いになることをお勧めしません。 他にクリップボードから取り出す方法もあるのですが、不明な理由のまま、書き換えることはできませんし、特別な間違いは見出せませんので、それを直す予定はありません。NO.2さんが紹介されたマクロ自体の内容には訂正の余地を感じたから書いたまでです。残ったマクロは、削除した後、参照設定も外したほうが無難です。 なお、私個人は、テキスト・エディタを使って、tab コードをスペース2か4つに変換するか、大掛かりの場合は、Excelの保存の際に、テキスト・スペース区切り(*.PRN)で保存するか、どちらかだと思います。

wasa131
質問者

お礼

強制終了する原因は分かりませんでした・・・ 既に希望通りに出来る回答をいただいていますので、このマクロは使わないでおきます。 ありがとうございました。

noname#204879
noname#204879
回答No.6

[回答番号:No.4この回答へのお礼]へのコメント、 》 1行目と2行目で2つめのセルの内容がズレて表示された フォントの種類を固定長フォント(例えば、MS ゴシック、MS 明朝)に設定してみてください。MS Pゴシック、MS P明朝等の「P」が付いたフォントはプロポーショナル(Proportional)フォントで「ズレて表示」されます。

wasa131
質問者

お礼

何度もありがとうございます、今度はちゃんと出来ました! フォントで表示幅が違うんですね、知りませんでした。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 関数でも可能ではあるけれども、実際は、2列でもないでしょうし、セル幅と文字列の長さの比較とか考えると複雑化はやむをえないような思います。 #2番様のリンク先のマクロの内容ですが、たぶん、作者ご本人も、今では同じようなマクロは書いていないとは思います。ワークシート関数に対応するVBA関数が良く分かっていらっしゃらないようです。違うものは、LENB,REPTとかは、 結果オーライではあるけれども、もう少し、VBAらしくする必要がありそうな気がします。 以下は、特に、上記のマクロを参考にはしておりません。どうも、こちらの作ったものは、良いと思った方法が、原因の分からないバグが存在しているので、内部で修正しなくてはなりませんでした。以下のマクロも結果オーライです。 '標準モジュール Sub Spacehold()   '参照設定--Microsoft Forms 2.0 Object Library   'または、UserForm を一回作って、削除すると、参照設定される。   Dim objData As New DataObject   Dim buf0 As String   Dim buf As String   Dim buf1 As Variant   Dim buf2 As Variant   Dim buf3 As String   Dim s1 As Variant   Dim i As Integer, j As Integer, k As Integer, m As Integer   Dim n As Integer 'スペースの広さ      With objData    .Clear   If TypeName(Selection) <> "Range" Then     Exit Sub   Else     Selection.Copy   End If   n = Int(ActiveCell.ColumnWidth) 'セル幅     .GetFromClipboard     buf0 = .GetText()     buf1 = Split(buf0, vbCr)     buf3 = ""     For Each s1 In buf1       buf2 = Split(s1, vbTab)       For i = LBound(buf2) To UBound(buf2)         j = LenB(StrConv(Trim(buf2(i)), vbFromUnicode))         If n - j < 0 Then           k = 2         Else           k = n - j         End If         If i < UBound(buf2) Then           buf3 = buf3 & Trim(buf2(i)) & Space(k + m - 1)         Else            buf3 = buf3 & Trim(buf2(i))         End If         m = 1 '補正       Next       buf = buf & vbCr & buf3       buf3 = ""     Next s1     .SetText Mid(buf, 2)     .PutInClipboard   End With   Beep End Sub

wasa131
質問者

お礼

回答ありがとうございます。 教えてくださったマクロはNO.2の方のリンク先のマクロと同じ使い方でいいのでしょうか? 試してみたところ、何度やってもエクセルが強制終了してしまいます・・・

noname#204879
noname#204879
回答No.4

[回答番号:No.3この回答へのお礼]へのコメント、 》 どう弄っても綺麗な表になりませんでした どう弄っても?例えばどう弄ったのですか? 貴方が言う「綺麗な表」とはどんなものですか? メモ帳上で“固定長テキスト”(「簡単な表」)になることではなかったのですか?

wasa131
質問者

お礼

再度ありがとうございます。 >>ヒントだけ ということだったのでこのまま使うのでは無いのかと思ったのですが、違ったのでしょうか? この関数をそのままコピーして使ったところ、1行目と2行目で2つめのセルの内容がズレて表示されたので、関数の中の参照するセルを変えてみたりしたのですが・・・

noname#204879
noname#204879
回答No.3

ヒントだけネ(^_^) =A1&REPT(" ",CELL("width",A1)-LENB(A1))&B1

wasa131
質問者

お礼

回答ありがとうございます。 すみません、全然分かりませんorz A1とB1の内容がスペースを空けて同じセルに表示されることは分かったのですが、どう弄っても綺麗な表になりませんでした

  • Syleena
  • ベストアンサー率39% (385/974)
回答No.1

Excelから保存される時にファイルの種類をテキスト(タブ区切り)に してみてはいかがですか?

wasa131
質問者

お礼

回答ありがとうございます。 やってみましたが、やはり間が詰まった状態になってしまいました。

関連するQ&A