'################################################### ' 表形式データ作成 2(VBScript) '  TjSoft-40, Taiju, 2007.9.24 ' 【使い方】 '  「真魚」エディタから使用する。 '  タテに並んだ不定長の文字列を、 '  指定の行数・列数で表形式に整形する。 '  配列は「Z」型・逆「N」型とも可能である。 '  一部、未解決の個所が残っている。 '################################################### sTargetString = Editor.GetSelText aryString = Split(sTargetString, Chr(10)) iSelectedMenu1 = UCase(InputBox("処理を選択" & vbCr & vbCr & " 1 「Z」型に並べる" & vbCr & " 2 「и」型に並べる","処理の選択")) sDelimiter = InputBox("任意の区切り文字を入力","デリミタ(区切り文字)の指定") If iSeledtedMenu1 = 1 Then iColumns = UCase(InputBox("列数を入力","列数の指定")) For i = 0 To iColumns - 1 If i = iColumns - 1 Then aryString(i) = aryString(i) & vbCr Else aryString(i) = aryString(i) & sDelimiter End If sConStr = sConStr & aryString(i) Next For i = iColumns To UBound(aryString) - 1 iMod = i Mod iColumns If iMod = iColumns - 1 Then aryString(i) = aryString(i) & vbCr ElseIf i = UBound(aryString) - 1 Then aryString(i) = aryString(i) Else aryString(i) = aryString(i) & sDelimiter End If sConStr = sConStr & aryString(i) Next Else iSelectedMenu2 = UCase(InputBox("1 行数を指定   2 列数を指定","行・列の指定")) Select Case iSelectedMenu2 Case 1 iRows = UCase(InputBox("行数を入力","行数の指定")) iColumns = Round((UBound(aryString) / iRows) + 1,0) Case 2 iColumns = UCase(InputBox("列数を入力","列数の指定")) iRows = Round((UBound(aryString) / iColumns) + 1,0) End Select Dim aryStr(10000) i = 0 For n = 1 To iRows '次に行を処理(n = 行数) '列数は次第に減る。最大値を変化させないと改行しない。 If n = UBound(aryString) Mod iRows + 1 Then iColumns = iColumns - 1 End If For j = 1 To iColumns '初めに列を処理(j = 列数) If i + iRows * (j - 1) > UBound(aryString) Then Exit For Else If j = 1 Then aryStr(j) = aryString(i) ElseIf j = iColumns Then 'なぜか「j=icolumns」でも、変化する以前は読まない。 aryStr(j) = sDelimiter & aryString(i + iRows * (j - 1)) & vbCr Else aryStr(j) = sDelimiter & aryString(i + iRows * (j - 1)) End If sConStr = sConStr & aryStr(j) End If Next i = i + 1 Next End If sTargetString = Editor.SetSelText(sConStr) sConStr = "" Erase aryString