Word (VBA)

Word VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
表のデータを配列に格納したい
投稿日時: 22/01/14 21:10:31
投稿者: ta1chn

 Excel vbaにおいてデータ処理を早くする方法の一つとしてセルデータを配列へ一括に格納してから処理を行う方法がありますが、同様にwordにおいても表の中にあるセルデータをループ文を用いらずに一括に配列へ格納することは難しいでしょうか。
 もし可能であればその方法を教えて頂きたいです。

回答
投稿日時: 22/01/15 10:54:34
投稿者: んなっと

Word VBA だけでは無理だと思います。
普通にセルをループしてください。
 
例えば1行目だけを1次元配列で取り出すのであれば可能です。
 
  Dim T As Table
  Dim v, a
  Set T = ActiveDocument.Tables(1)
  v = Split(T.Range.Text, Chr(13) & Chr(7))
  ReDim Preserve v(T.Columns.Count - 1) 'これで完了
  'ここからは確認用
  For Each a In v
    Debug.Print a
  Next

投稿日時: 22/01/16 18:27:42
投稿者: ta1chn

お返事ありがとうございます。
やはりWordでとなると厳しいのですね。。。
  
ご丁寧にありがとうございます、参考にさせていただきます。
 
1列目だけを1次元配列で取り出す方法も教えて頂けると助かります。

回答
投稿日時: 22/03/28 17:44:55
投稿者: WinArrow
投稿者のウェブサイトに移動

表の形式
(1)結合セルがないこと
(2)セル内で改行が無いこと
 
参考コード

Sub test()

Dim T As Table
Dim v
Dim r As Long, c As Long
  
    Set T = ActiveDocument.Tables(1)
  
    ReDim v(1 To T.Rows.Count, 1 To T.Columns.Count)
    For r = LBound(v) To UBound(v)
        For c = LBound(v, 2) To UBound(v, 2)
            v(r, c) = Replace(T.Cell(r, c).Range.Text, Chr(13) & Chr(7), "")
        Next
    Next
    '確認用
    For r = LBound(v) To UBound(v)
        For c = LBound(v, 2) To UBound(v, 2)
            Debug.Print "[" & r & "," & c & "]:" & v(r, c)
        Next
    Next
    
End Sub

回答
投稿日時: 22/03/28 17:57:07
投稿者: WinArrow
投稿者のウェブサイトに移動

前レスで
(2)セル内改行がないこと
という条件を提示しましたが、
↓のように変更すれば、セル内改行にも対応可能です。
 
変更対象
> v(r, c) = Replace(T.Cell(r, c).Range.Text, Chr(13) & Chr(7), "")
変更後

            v(r, c) = Replace(T.Cell(r, c).Range.Text, Chr(13) & Chr(7), Chr(10))

投稿日時: 22/07/07 07:47:51
投稿者: ta1chn

WinArrow 様
 
お礼が遅くなり申し訳ございません。
無事問題を解決する事ができました。
本当にありがとうございます。