3

私はVB6を使用して基本的なテキストファイルプログラムを作成しようとする初心者です。基本的に私の仕事では、見出しと変数データを含むテキスト ファイルをたくさん作成するので、見出しを自動的に追加する VB6 プログラムを作成するたびに、各見出しを含むドキュメントを手動で入力する手間を省くために、データを入力すると出力されます。すべてテキストファイルです。ほとんどのことはできましたが、できない部分が 1 つあります。

テキスト ファイルの一部は、後ろにドットが付いた番号付きリストです。例えば:

HEADING
01. チーズ
02. チョコレート
03. パン

等々。

リストはファイルごとに異なり、長さも異なるため、4 項目、20 項目になる可能性があります。現時点では、単純な TextBox を取得したばかりで、上記のように毎回手動でデータを入力します。私がやりたいのは、リストの前に数字、ドット、スペースを自動的に作成することです。だから私はリストをそのまま入力することができました

チーズ
チョコレート
パン

テキスト ファイルを生成すると、リストには自動的に番号が付けられます。それはVB6で可能ですか?些細なことのように思えますが、私はこれらのファイルを何百も作成しており、それぞれのファイルを作成する労力が少ないほど良い結果が得られます。

Private Sub create_Click()
Dim fso
Dim file As String
file = "C:\Textfile.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(file) Then
    fso.DeleteFile file, True
End If
Const ForAppending = 8
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("C:\Textfile.txt", ForAppending, True)
With filetxt
.writeline (txtArtist & vbNewLine)
.writeline ("SOURCE" & " (" & Combo1 & " #" & txtsource & ")" & ":")
.writeline (txtequip & vbNewLine)
.writeline (Combo2 & ":")
.writeline (txttransfer & vbNewLine)
.writeline ("GENERATION:")
.writeline (txtgen & vbNewLine)
.writeline ("LENGTH:")
.writeline (txtlength & vbNewLine)
.writeline ("NOTES:")
.writeline (txtnotes & vbNewLine)
.writeline ("TRACKS:")
.writeline (txttracks & vbNewLine)
.writeline ("MD5 FINGERPRINTS:")
.writeline (txtmd5 & vbNewLine)
.writeline ("TRANSFERRED BY:")
.writeline (txttransferby & vbNewLine)
.writeline ("**PLEASE DO NOT ENCODE TO LOSSY FORMATS OR SELL!**")
.Close
End With
Shell "notepad.exe C:\Textfile.txt", vbNormalFocus
End Sub
4

3 に答える 3

5

あなたはできる:

Text1.Text = TextToNumberedList(Text1.Text)

Function TextToNumberedList(strData As String) As String
    Dim arr()  As String
    Dim i      As Long
    arr = Split(strData, vbCrLf)
    For i = 0 To UBound(arr)
        arr(i) = Format$(i + 1, "00") & ". " & arr(i)
    Next

    TextToNumberedList = Join(arr, vbCrLf)
End Function
于 2011-06-07T14:48:11.800 に答える
2

あなたはおそらくこのようなことをしたいと思うでしょう(私の頭の上にあるので、構文エラーを許してください)...

   'Split The Text
   Dim YourArray As String()
   YourArray = Split(Input, vbNewLine)

   Dim Counter As Long
   Dim OutputString As String
   For Counter = 0 To UBound(YourArray)
      OutputString = Counter & ". " & YourArray(Counter)
   Next

工夫して上限をチェックして長さを取得し、数字などをパディングすることもできますが、これで始めることができます。

于 2011-06-07T14:44:58.373 に答える
1

質問を読み間違えたかもしれませんが、テキストボックスの内容を配列に分割し、配列インデックスを使用して番号を付けてループすることはできませんか?基本的な例

于 2011-06-07T14:41:07.047 に答える