|
かすみ さん、おはようございます。
>はじめて投稿いたします。
>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が入っているのかはよくわかりません。
|
|