人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルのセル内の文字列をマクロを使ってmicrosoft wordの要約機能で自動要約するためのプログラムを探しています。
例としては

|a列 |b列
??????????????????????????
1行|10文字の文字列 |
2行|12文字の文字列 |

という状態があった場合、A1セルの内容をワードを解して要約しB1に要約した内容を返すというプラグラムを探しています。
以降A2に自動的に移動していき、どんどん要約結果を隣のセルに介してくれるプログラムを探しています。

完成時の一例
|a列 |b列
??????????????????????????
1行|10文字の文字列 |8文字ぐらいの文字列
2行|12文字の文字列 |9文字ぐらいの文字列

出来れば要約率が設定できるとありがたく思います。
使用できるエクセル、ワードは2003になります。
出来るだけの御礼はしますのでよろしくお願いします。


●質問者: yokosima_nhp
●カテゴリ:コンピュータ インターネット
✍キーワード:Microsoft Word エクセル セル プラグ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● koriki-kozou
●35ポイント

Wordの要約は単語を削ります

http://office.microsoft.com/ja-jp/word/HP052334521041.aspx


テストケースとしてご質問文を丸ごとWordに貼り付けて要約を実行すると以下のようになります

エクセルのセル内の文字列をマクロを使ってmicrosoft wordの要約機能で自動要約するためのプログラムを探しています。

例としては

|a列 |b列

??????????????????????????

1行|10文字の文字列 |

2行|12文字の文字列 |

という状態があった場合、A1セルの内容をワードを解して要約しB1に要約した内容を返すというプラグラムを探しています。

使用できるエクセル、ワードは2003になります。

ご覧の通り10文字から8文字に削るなどは出来ません

Wordの要約機能を誤解していると思います

もう少し具体的に文字列の変換例を出して別の案を募るほうが良いでしょう

◎質問者からの返答

確かに説明が足りなかったですね。


2 ● HALSPECIAL
●35ポイント ベストアンサー

ActiveDocument.AutoSummarize メソッドで要約します。

こんな感じでしょうか。

Option Explicit

Public Sub 要約実行()
 Const wdNewBlankDocument As Integer = 0
 Const wdSummaryModeCreateNew As Integer = 3
  '文書全体の長さに対する要約の長さの割合 (%)。数値が大きいほど詳細な内容が要約に含められます。
 Const AUTO_SUMMARIZE_LENGTH As Integer = 25
 
 Dim wk As String
 Dim objWord
 Set objWord = CreateObject("Word.Application")  'ワード起動
 objWord.Visible = False 'ワード非表示
 objWord.Documents.Add DocumentType:=wdNewBlankDocument
 
 Application.ScreenUpdating = False
 Cells(1, 1).Activate
 
 Do Until ActiveCell.Value = ""
 objWord.Selection.HomeKey
 objWord.Selection.TypeText Text:=ActiveCell.Value
 objWord.ActiveDocument.AutoSummarize Length:=AUTO_SUMMARIZE_LENGTH, Mode:=wdSummaryModeCreateNew, UpdateProperties:=False
 objWord.ActiveDocument.Select
 wk = objWord.Selection.Text
 If wk = vbCr Then
  '要約できない場合はそのままセット
 ActiveCell.Offset(0, 1).Value = ActiveCell.Value
 Else
  '要約を貼り付け
 ActiveCell.Offset(0, 1).Value = wk
 End If
 objWord.ActiveDocument.Close False
 objWord.ActiveDocument.Select
 objWord.Selection.Text = ""
 ActiveCell.Offset(1, 0).Activate
 Loop
 
 
 Cells(1, 1).Activate
 Application.ScreenUpdating = True
 
 objWord.Quit False
 Set objWord = Nothing
 
End Sub

※要約率は、

Const AUTO_SUMMARIZE_LENGTH As Integer = 25

を調整してください。

※ある程度の文章でないと要約できないのではないでしょうか?

10文字の文字列等では無理のような・・・

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ