Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


87 / 308 ツリー ←次へ | 前へ→

【637】csvを表に変換したいのですが。。。 かすみ 09/5/18(月) 14:52 質問[未読]
【638】Re:csvを表に変換したいのですが。。。 りる 09/5/19(火) 4:49 回答[未読]
【639】Re:csvを表に変換したいのですが。。。 かすみ 09/5/19(火) 15:11 質問[未読]
【640】Re:csvを表に変換したいのですが。。。 りる 09/5/19(火) 19:05 回答[未読]
【641】Re:csvを表に変換したいのですが。。。 かすみ 09/5/20(水) 17:23 お礼[未読]

【637】csvを表に変換したいのですが。。。
質問  かすみ  - 09/5/18(月) 14:52 -

引用なし
パスワード
   はじめて投稿いたします。
Wordでのマクロ作成に苦心しており、お知恵を拝借したく投稿いたしました。
CSVのファイルから、Wordで表作成をしたいのです。

CSVファイルの中身が以下のようになっています。
○○○,○○●●▲○○,■▲■,○○,○○,○○,▼▼●●,▼▲,▲▲●●,■■▲●
○○○,○○▲▲■○○,■■●■,○○,○○,○○,▼●●,●▲●,▼●
○○○,○○▲■▲○○,●▼,○○,○○,○○,■●▼,■▲,●■■
以下数十行続く。

▲、■、▼は同じ文字列でなく、一つずつ全く異なる文字列です。
○は不必要な文字列です。

上のCSVファイルを以下の様な表にしたいのです。
○の文字列だけを取り除いて、カンマで区切られた部分を各セルに振り分けるイメージ。
|●●▲|■▲■ |▼▼●●|▼▲ |▲▲●●|■■▲●
|▲▲■|■■●■|▼●● |●▲●|▼●  |
|▲■▲|●▼  |■●▼ |■▲ |●■■ |

何卒よろしくお願いいたします。

【638】Re:csvを表に変換したいのですが。。。
回答  りる  - 09/5/19(火) 4:49 -

引用なし
パスワード
   かすみ さん、おはようございます。
>はじめて投稿いたします。
>Wordでのマクロ作成に苦心しており、お知恵を拝借したく投稿いたしました。
>CSVのファイルから、Wordで表作成をしたいのです。
>
>CSVファイルの中身が以下のようになっています。
>○○○,○○●●▲○○,■▲■,○○,○○,○○,▼▼●●,▼▲,▲▲●●,■■▲●
>○○○,○○▲▲■○○,■■●■,○○,○○,○○,▼●●,●▲●,▼●
>○○○,○○▲■▲○○,●▼,○○,○○,○○,■●▼,■▲,●■■
>以下数十行続く。

>○の文字列だけを取り除いて、カンマで区切られた部分を各セルに振り分けるイメージ。
>|●●▲|■▲■ |▼▼●●|▼▲ |▲▲●●|■■▲●
>|▲▲■|■■●■|▼●● |●▲●|▼●  |
>|▲■▲|●▼  |■●▼ |■▲ |●■■ |

>何卒よろしくお願いいたします。
○を抜いた後にセルがずれるかどうかわからないので、表にしてから行を削除しています。

Sub Tempo()
  Dim Ifile As String, s1 As String
  Dim RR As Long, CC As Long, Rmax As Long, Cmax As Long
  '新しい文書で作業
  Application.Documents.Add
  '読み込むファイル名
  Ifile = "C:\Tempo\Tempo.csv"
  'ファイルを読み込む『挿入→ファイル』
  With ActiveDocument.Content
   .InsertFile FileName:=Ifile, Range:="", _
   ConfirmConversions:=False, Link:=False, Attachment:=False
   '○を抜く『編集→置換』
   With .Find
     .Text = "○"
     .Replacement.Text = ""
     .Execute Replace:=wdReplaceAll
   End With
   '表に変換『罫線→表のオートフォーマット』
   .ConvertToTable Separator:=wdSeparateByCommas, AutoFitBehavior:=wdAutoFitFixed
   '追加した表を処理
   With .Tables(1)
     Cmax = .Columns.Count
     Rmax = .Rows.Count
     '
     For CC = Cmax To 1 Step -1
      s1 = ""
      '制御コード等を消した状態で全行空欄だったら列削除
      For RR = 1 To Rmax
        s1 = s1 & Replace(Replace(.Cell(RR, CC).Range.Text, Chr(13), ""), Chr(7), "")
      Next
      '全行空欄の列を抜く『罫線→削除→列』
      If s1 = "" Then .Columns(CC).Delete
     Next
   End With
   '保存したフリ
   .Parent.Saved = True
  End With
End Sub

『』内はマクロ記録した手順です。
ちなみに、13と7を消しているのは、確認してみたらそれが入っていたからです。
13はともかく何故7が入っているのかはよくわかりません。

【639】Re:csvを表に変換したいのですが。。。
質問  かすみ  - 09/5/19(火) 15:11 -

引用なし
パスワード
   りるさん
朝早くから早速のご回答頂き、本当にありがとうございます。
ご教授頂いた方法を参考に、未熟な私にも目的が達せられました。
とても感謝しております。

大変恐縮なのですが、重複するような事例ですので重ねて質問をさせて頂きたいのです。
また別のものなのですが
カンマで区切られた、データのn番目とn番目を抜き出して、表にするにはどのようにしたら良いでしょうか。
sprit関数を使うということは調べられたのですが。。。

下記のようなCSVファイルです。
01,02,03,04,05,06,07,08,09,10,11,12,13,14,15
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
31,32,33,34,35,36,37,38,39,40,41,42,43,44,45
以下数十行続く。数字は実際には、不規則な文字列。

表にするときには、カンマの何番目かは決まっています。
一行目 |2番目|6番目|9番目|12番目&13番目|
二行目 |2番目|6番目|9番目|12番目&13番目|
以下数十行続く。


重ねての質問であり、誠に申し訳ないのですが、ヒントだけでも頂ければ幸いです。
どうかよろしくお願いいたします。

【640】Re:csvを表に変換したいのですが。。。
回答  りる  - 09/5/19(火) 19:05 -

引用なし
パスワード
   かすみ さん、こんばんは。

>カンマで区切られた、データのn番目とn番目を抜き出して、表にするにはどのようにしたら良いでしょうか。
>sprit関数を使うということは調べられたのですが。。。
Spritの使い方はわりと最近EXCEL質問箱でもあったので省きますが。

>重ねての質問であり、誠に申し訳ないのですが、ヒントだけでも頂ければ幸いです。
csvを1行ずつ読み込み、Splitで分割してから必要なところだけをドッキングした文字列を作成し、文書にとりこんで表のオートフォーマットで体裁を整えています。

Sub tempo2()
  Dim s1 As String, s2 As Variant, s3 As String
  Ifile = "D:\Tempo\Tempo2.csv"
  Open Ifile For Input As #1
   Do Until EOF(1)
     Line Input #1, s1
     If s3 <> "" Then s3 = s3 & vbCrLf
     s2 = Split(s1, ",") 'カンマで区切る(0スタート)
     'エラーチェックはしていません
     '    |2番目    |6番目    |9番目    |12番目&13番目|
     s3 = s3 & s2(1) & "," & s2(5) & "," & s2(8) & "," & s2(11) & s2(12)
   Loop
  Close #1
  Application.Documents.Add
  With ActiveDocument.Content
   'テキストを文書に
   .Text = s3
   '表の体裁に
   .ConvertToTable Separator:=wdSeparateByCommas, AutoFitBehavior:=wdAutoFitFixed
  End With
End Sub

【641】Re:csvを表に変換したいのですが。。。
お礼  かすみ  - 09/5/20(水) 17:23 -

引用なし
パスワード
   りるさん、こんばんは。

今回もりるさんのご教授を参考に問題を解決できました。ありがとうございます。

ワードマクロは初めて触ったのですが、勝手が分からず混乱しておりまして、非常に助かりました。

この度はたいへんお世話になりました。
改めて御礼を申し上げます。

87 / 308 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
207115
(SS)C-BOARD v3.8 is Free