|
こんにちは。
ご提示のデータですと
Sub TempTable()
Dim TmpTb As Table
Dim myArray() As Variant
Dim lngCol As Long
Dim strCell As String
Dim i As Long
Set TmpTb = ThisDocument.Tables(1)
'ソート処理
'見出しは対象外,2列目,JISコードを基準,昇順
TmpTb.Sort ExcludeHeader:=False, FieldNumber:="列 2", SortFieldType:= _
wdSortFieldJapanJIS, SortOrder:=wdSortOrderAscending
lngCol = TmpTb.Rows.Count - 1
ReDim myArray(lngCol, 1)
For i = 0 To lngCol
'一列目のデータを配列に格納
strCell = TmpTb.Cell(i + 1, 1).Range.Text
myArray(i, 0) = Left(strCell, Len(strCell) - 2)
'二列目のデータを配列に格納
strCell = TmpTb.Cell(i + 1, 2).Range.Text
myArray(i, 1) = Left(strCell, Len(strCell) - 2)
Next
With UserForm1.ListBox1
.ColumnCount = 2
.List = myArray
.ListIndex = 0
.ColumnWidths = "20;40"
End With
UserForm1.Show
Set TmpTb = Nothing
End Sub
こういったところでしょうか。
Excelですとご存知の通りUsedRangeそのものが配列として取り扱えますが
Wordの表(セル)では、改行情報やセル区切りといったWord固有の情報が
存在しますのでこの情報を切り捨てるという処理が必要になります。
ですのでExcelと同じような使い勝手のよさを期待されると辛いものが
あります。
>作業用のシートを適宜追加し
と仰っていますので、多分
リストボックスのデータを一旦表に書き出す→ソート処理→配列変数格納
→表の削除、または作業用文書の削除
といった一連の処理を考えておられるのでしたら、更なる工夫が必要に
なるでしょう。
この点
>他のサイトを検索したら配列変数にとりこんでからのソートで対応
こちらのアルゴリズムと天秤にかけて考える必要がありそうですね。
|
|