Word文書で複数のセル内にテキストデータがあります。
セル内で改行をしているものも混ざっています。
Excelに変換し、1つのWordファイルにつき、1行でデータベースをつくらねばなりません。
今、地道にしている作業は以下の通りです。
<Word>
全て選択 → コピー
<Excel>
→テキストで貼り付け → 行列を入れ替えて貼り付け
それでも、セル内で改行をしているものとしていないものでExcelのセルがずれてきます。
Wordのセル内で改行していても、一つのセルとして変換する方法はないでしょうか?
また、うまい方法はないでしょうか??
1300件ほど処理しなければならず、困っています。
どなたか助けてくださいっ!!
No.3ベストアンサー
- 回答日時:
試しにコードを書いてみました。
Excel VBA です。DOC ファイル内の全ての表を Excel のアクティブシートに行列を入れ替えて
書き出します。ただ、複合表があると、期待どおりの結果は得られないと思い
ます。
Word VBA には結合セルを調べるプロパティーがない? みたいなので、無理矢理
やってますが、一応それなりに動くようです。
また、エラートラップもほとんどしてません。試してみて、エラー終了したら
タスクマネージャで WINWORD.EXE が残っていないか確認して下さい。
使い方は Excel の 標準モジュールに貼り付け、VBE [ツール]-[参照設定]で
・Microsoft Word x.x Object Lybrary
をチェックしてから実行します。x.x はお使いの OFFICE のバージョンにより
異なります。
少しは役立つかな? と思ったけど、あんまり役立たない気がしますm(_ _;)m
Sub Sample()
Dim WRD As Word.Application
Dim DOC As Word.Document
Dim objTable As Word.Table
Dim objCell As Word.Cell
Dim strFilename As String
Dim strText As String
Dim lngRows As Long
Dim lngCols As Long
Dim Buffer() As String
Dim R As Long
Dim C As Long
Const MARK As String = "$$$$"
' DOCファイルの指定
strFilename = Application.GetOpenFilename("WORDファイル (*.doc), *.doc")
If UCase$(strFilename) = "FALSE" Then
Exit Sub
End If
' DOCファイルオープン
Application.StatusBar = "[ " & Dir(strFilename) & " ]を開いてます..."
Set WRD = New Word.Application
WRD.Visible = False ' True の方がいいかも?
Set DOC = WRD.Documents.Open(strFilename)
' テーブルのコピー&ペースト
Application.StatusBar = "テーブルをコピー中..."
For Each objTable In DOC.Tables
' テーブルサイズを求めてバッファ領域を確保
With objTable
lngRows = .Rows.Count
lngCols = .Columns.Count
End With
ReDim Buffer(1 To lngRows, 1 To lngCols)
' セル内改行コードを置換しながらバッファ
For R = 1 To lngRows
For C = 1 To lngCols
' 結合セルがあると次行でエラーになります、、、
On Error GoTo ERROR_SKIP
strText = objTable.Cell(R, C).Range.Text
strText = Replace(strText, Chr(13), MARK)
strText = Left$(strText, Len(strText) - Len(MARK) - 1)
Buffer(R, C) = strText
ERROR_SKIP:
Next C
Next R
' 行列をスワップさせてアクティブシートに転記
With ActiveSheet.Range("A65536").End(xlUp).Offset(1) _
.Resize(UBound(Buffer, 2), UBound(Buffer))
' 文字列として転記しないなら次行をコメントアウト
.NumberFormatLocal = "@"
' 一括転記(Transpose で行列を入れ替えてます)
.Value = Application.Transpose(Buffer)
' セル内の改行コードを元に戻す
.Replace What:=MARK, Replacement:=vbLf
End With
Next objTable
' WORD フィイルを閉じてアプリケーションを開放
Application.StatusBar = "[ " & Dir(strFilename) & " ]を閉じています..."
DOC.Close SaveChanges:=False
Set DOC = Nothing
Application.StatusBar = ""
WRD.Quit
Set WRD = Nothing
End Sub
No.2
- 回答日時:
こんにちは。
VBA でセル内の改行コードを例えば $$$$ などの記号に置換し、Excel に
貼り付けてからまた $$$$ を改行コードに置換し直せばある程度の自動化
は可能かと、、
> ... 1つのWordファイルにつき、1行でデータベースを...
> <Word>
> 全て選択 → コピー
Word ファイルからコピーするのは「表」だけですか? 他に文章とかは?
No.1
- 回答日時:
Word側で表の解除をするときに、段落記号で区切って
みては。
メニューの[罫線]→[変換]→[表の解除]で区切りを
[段落記号]にします。
段落ごとに区切られたら、コピーしてExcelに貼り付け
をします。
Wordの文書は上書き保存しなければ良いのですから。
ありがとうございます。やってみたものの、結果は今までと同じになってしまいました。
Wordのセルで
(1)改行してあり、数行になって入っているデータ
(2)一行のみのデータ
↓ Excelに貼り付けすると
(1)は数列のセルにわたって変換される。
(2)は1セルに収まる。
これを(1)も1セルに納めたいのです、、、。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Wordを変換してExcelに挿入 2 2022/07/04 23:59
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Word(ワード) テキストデータのPDFをWordで開くとテキストが図として認識されてしまう 3 2023/01/24 11:38
- Excel(エクセル) excelで可視セルのみ置換 3 2022/08/04 11:02
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) Excelから複数のWordファイルを操作する方法について教えて頂きたい。 やりたいことは、複数のW 2 2022/07/26 20:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】アクティブセルの、...
-
エクセルでセル内改行の1行目...
-
エクセルでハイパーリンクのコピー
-
VBAからのHYPERLINK関数のアド...
-
エクセルの結合セル内に文章を...
-
エクセルのセル内で改行コピー...
-
結合されたセルの一部を変更す...
-
小数点以下を切り捨てる関数
-
アクティブセルとそのセルに隣...
-
exselの質問です
-
VBA セル内で改行またはカンマ...
-
エクセルのセルの右下の角の十...
-
Androidでデジタル時計ウィジェ...
-
エクセル 0:00 の時間をカウン...
-
エクセルで 来年の曜日の自動設定
-
PowerPointの表内のカンマ
-
EXCELでタイトル行と一番下の行...
-
【VBA】PDF出力に任意のファイ...
-
Wordの差し込み印刷で空白行が...
-
エクセルでleft関数の結果が表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでセル内改行の1行目...
-
エクセルでハイパーリンクのコピー
-
エクセル 0:00 の時間をカウン...
-
結合されたセルの一部を変更す...
-
エクセルの結合セル内に文章を...
-
【Excel】 色の一致するセル数...
-
アクティブセルとそのセルに隣...
-
VBAからのHYPERLINK関数のアド...
-
エクセルのセルの右下の角の十...
-
エクセルのセル内で改行コピー...
-
VBA セル内で改行またはカンマ...
-
Excel vba 毎月の第○ △曜日を求...
-
Word文書にパスワードをマクロ...
-
エクセルで 来年の曜日の自動設定
-
エクセルで納期遅れのセルを色...
-
Excel セル貼り付けができません
-
VBA ダブルクリックでセルの真...
-
Excel2002 色文字カウント コ...
-
エクセル 行も列もバラバラの入...
-
エクセル2010のセルのスタ...
おすすめ情報