1

テキスト ファイルを編集する必要があります。つまり、マクロを使用してデータを追加および更新する必要があります。何千ものレコードを含むテキスト ファイル、テキスト ファイル内のデータのマッピングを提供する別の Excel シートがあります。たとえば、テキスト ファイルのレコードは次のようになります。

ABCDNew Delhi India

このためのマッピング Excel シートは次のとおりです。

Name    4
City    10
Country 10

つまり、レコードの最初の 4 文字は名前を示し、次の 10 文字は都市を示し、次の 10 文字は特定の人物の国を示すというようになります。ここで、特定の名前のレコード (1 つまたは 2 つのフィールド) を編集して、同じファイルに保存する必要があります。また、上記の指定された形式で新しいレコードを追加し、ファイルを保存しました。

Excel シートは、テキスト ファイル内のフィールドのマッピングを提供するだけです。フィールド長のみを示します。私の質問でわかるように、テキストは区切り文字なしで連続しています。したがって、Excel シートを使用して、テキスト ファイル内のさまざまなフィールドを識別します。サンプルレコードは次のようなものです:

ABCDデリーインド1100019876543210

マッピングは次のとおりです。

名前 4 都市 5 国 5 PinCode 6 PhnNo 10

マッピングは、ファイル内のすべてのレコードで同じです。ファイルからレコードを読み取る方法を提供するだけです。

これを最も簡単な方法で行う方法についてのアイデアはありますか?

4

2 に答える 2

2

名前、都市、国の間に区切り文字を使用できます。たとえば、ABCD:ニューデリー:インドです。区切り文字を使用すると、名前、都市、国を区切ることができます。これで、各文字列の長さを簡単に決定できます。要件に基づいて、データを簡単に編集し、ファイルに書き込むことができます。以下のコードを参照してください。 テキスト ファイル : exceltest abcd:new delhi:india test:NY:USA

マクロコード:

Sub readTextFile()

Dim oFSO As New FileSystemObject

Dim oFS

Dim objFSO As New FileSystemObject

Set myTemp = objFSO.CreateTextFile("C:\Users\Rohit\Desktop\exceltestTemp.txt", True)

Set oFS = oFSO.OpenTextFile("C:\Users\Rohit\Desktop\exceltest.txt")

Do Until oFS.AtEndOfStream

stext = oFS.ReadLine

Dim testarray() As String

testarray = Split(stext, ":")

Dim i As Integer 

i = Len(testarray(0)) 'determine length of each String, here as a sample only length of one string is determined

Cells(4, "a").Value = i 'writing a length to excel sheet, you can write to any location

Cells(1, "a").Value = testarray(0) 'writing contents to excel sheet

Cells(2, "a").Value = testarray(1) 'writing contents to excel sheet

Cells(3, "a").Value = testarray(2) 'writing contents to excel sheet

'Search for the Name

If testarray(0) = "test" Then

testarray(1) = "Mumbai"

End If

myTemp.WriteLine testarray(0) & ":" & testarray(1) & ":" & testarray(2) 'writing to a temp text file

Loop

End Sub

要件に基づいて、名前を検索し、データを編集してファイルに書き込むことができます。その後、元のファイルを削除し、一時ファイルを元のファイルとして保存できます。

PS : Excel 2007 で試しました。参照「Microsoft Scripting Runtime」を追加する必要があります。

于 2013-10-21T08:05:53.800 に答える
0

あなたが説明したのは固定幅データです。これは、インポート ダイアログ ボックスの [固定幅] オプションを使用して、データを Excel のテキスト ファイルとしてインポートするのに簡単です。次に、各フィールドの開始と終了を選択できます。トリッキーな部分は、同じ形式にエクスポートすることです。これを達成するために私が知っている唯一の方法は、VBA を使用することです。書くのは簡単なルーチンのように思えますが、おそらく何度も書かれています。

于 2014-04-09T08:35:23.967 に答える