2017-11-02 6 views
1

最後の8行をtxtファイルからExcelファイルのセルAにコピーするためのスクリプトを作成します。これは私が今までにまとめたもので、うまくいきません。基本的にタブ区切りからExcelテンプレートファイルにコピーします。これまで私はVBで非常に基本的なスクリプトしか書いていないので、助けてください。.txtから.xlsxへのデータのコピーと貼り付けのためのVBscript

Const ForReading = 1 
Set objFSO = CreateObject("Scripting.FileSystemObject") 

' get number of lines 
Set objTextFile = objFSO.OpenTextFile("c:\test.txt", ForReading) 
objTextFile.ReadAll 
lineCount = objTextFile.Line 
objTextFile.Close 


Set objTextFile2 = objFSO.OpenTextFile("c:\test.txt", ForReading) 

' skip all lines except 8 last 
i = 0 
while i < lineCount-8 
objTextFile2.ReadLine 
i = i+1 
wend 

' prepare excel 
Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("c:\NBP ESP-152 REV F 
TEMPLATE.xlsx") 
objExcel.Application.Visible = True 

j = 1 
' read last 8 lines 
Do Until objTextFile2.AtEndOfStream 
    ' read line 
    line = objTextFile2.ReadLine 
    ' write to console 
    ' WScript.Echo line (for testing) 
    ' and into workbook 
    objExcel.Cells(1, j).Value = strLine 
    j=j+1 
Loop 
:ここ

はAedvaldから以下のスクリプトは、ブックに貼り付けることになっているところのポイントまで動作します

Const ForReading = 1 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile("C:\test.txt", ForReading) 
for i = Last 8 lines 
objTextFile.ReadLine 
Next 
strLine = objTextFile.ReadLine 
Wscript.Echo strLine 
objTextFile.Close 



Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("C:\NBP ESP-152 REV F TEMPLATE.xlsx") 

objExcel.Application.Visible = True 
objExcel.Workbooks.Add = i 
objExcel.Cells(a, 3).Value = strLine 

....私がこれまでに働いているものです

+0

は参照してください:// stackoverflowのを.com/q/24035730/603855が役立ちます。 –

+0

[VBScript関数を使用してログファイルの最後の3行の内容を取得する方法](https://stackoverflow.com/questions/24035730/how-to-obtain-last-three-lines-content-of-a) -log-file-using-vbscript-function) – Lankymart

答えて

2

これは私がそれを動作させるためにしたものです:

私はtest.txtを開いて、それらを数えるためにすべての行をループします。それから私はtest.txtをもう一度開き、8行しか残らなくなるまでループします。次に、Excelワークブックの最初のワークシートのセルに追加しながら残りの8行をループします。

更新:はエクセルシートにテキストを追加するには、ワークシートのセル・プロパティを使用する必要があります。https場合 https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheet-cells-property-excel

====

Const ForReading = 1 
Set objFSO = CreateObject("Scripting.FileSystemObject") 

' get number of lines 
Set objTextFile = objFSO.OpenTextFile("C:\test.txt", ForReading) 
objTextFile.ReadAll 
lineCount = objTextFile.Line 
objTextFile.Close 


Set objTextFile2 = objFSO.OpenTextFile("C:\test.txt", ForReading) 

' skip all lines except 8 last 
i = 0 
while i < lineCount-8 
    objTextFile2.ReadLine 
    i = i+1 
wend 

' prepare excel 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Application.Visible = True 
Set objWorkbook = objExcel.Workbooks.Open("C:\NBP ESP-152 REV F TEMPLATE.xlsx") 
Set objWorksheet = objWorkbook.Worksheets(1) 

j = 1 
' read last 8 lines 
Do Until objTextFile2.AtEndOfStream 
    ' read line 
    line = objTextFile2.ReadLine 
    ' write to console 
    ' WScript.Echo line ' (for testing) 
    ' and into workbook 
    objWorksheet.Cells(1, j).Value = line 
    j=j+1 
Loop 
+0

Excelのテンプレートに貼り付けるのではなく、メッセージボックスに行が表示されても何らかの理由で実行すると、これは素晴らしいことです。ご協力いただきありがとうございます! –

+0

私は、メッセージボックスにテキストを表示する行をコメントアウトしました。それはデバッグのためのものでした。もう一度お試しください。そして、私の答えをupvoteしてください。 –

+0

上記の修正をテストした後も、何らかの理由でブックに貼り付けることができません。 –

関連する問題