excel 创建多个文本文件,每个文件的名称基于一个单元格

u3r8eeie  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(130)

我对VBA和一般的代码都很陌生。
我接下来的问题是:
在我的工作中,我必须创建不同的文本文件来发送信息到服务器,所以我必须创建几个文件,所以我有一个Excel与这些:
列“A”中是我要为每个文本文件创建的名称。
列“B”中将是文本文件的正文
但在列“B”的第一个单元格中,我必须更改每个值的单元格值 在“A”栏
那么,谁能告诉我怎么做呢?

Sub CreateFiles_2()

    Dim sExportFolder, sFN
    Dim rName As Range
    Dim action As Range
    Dim oSH As Worksheet
    Dim oFS As Object
    Dim oTxt As Object

    'sExportFolder = path to the folder you want to export to
    'oSh = The sheet where your data is stored

    sExportFolder = "C:\Users\DATEFILES\"
    Set oSH = Worksheets("INDEX")

    Set oFS = CreateObject("Scripting.Filesystemobject")

    For Each rName In oSH.UsedRange.Columns("A").Cells
        Set action = rName.Offset(, 1)

        'Add .txt to the article name as a file name

        sFN = rName.Value & ".txt"
        Set oTxt = oFS.OpenTextFile(sExportFolder & "\" & sFN, 2, True)
        oTxt.WriteLine action.Value
        oTxt.Close
    Next

End Sub

我的目标是创建一个文本文件与这些信息:

SG5U0SX1914550051
CCHIME
ICHIME
BNONE
NQC703A014
PWIPCLEAN
n
r
O1175726
LRoute 703A
[
]
TP

只有第一行必须更改:“S”&(下一行上的值”)
如果你能帮助他,就太好了!

trnvg8h3

trnvg8h31#

我已经创建了解决方案
(我复制了另一个问题的解决方案,并更改了我需要的部分)
创建文件伪对象()

Dim sExportFolder As String, sFN As String
Dim oSh As Worksheet
Dim rName As Range
Dim oFS As Object, oTxt As Object

sExportFolder = "C:\Users\Data_Files\"
Set oSh = ThisWorkbook.Sheets("INDEX") '<-- set sheet name here
Set oFS = CreateObject("Scripting.Filesystemobject")

For Each rName In oSh.Range("A1:A" & oSh.Cells(Rows.Count, 2).End(xlUp).Row)
    If rName.Value <> "" Then
        sFN = rName.Value & ".tar"
        Set oTxt = oFS.OpenTextFile(sExportFolder & sFN, 2, True)
        oTxt.WriteLine "S" & rName  '<-- S (Serial Number)
        oTxt.WriteLine Range("B1")  '<-- C (Customer)
        oTxt.WriteLine Range("B2")  '<-- I (Division)
        oTxt.WriteLine Range("B3")  '<-- B (Board Style)
        oTxt.WriteLine Range("B4")  '<-- N (Tester Name/Equipment)
        oTxt.WriteLine Range("B5")  '<-- P (MES Test Process/Route Step)
        oTxt.WriteLine Range("B6")  '<-- n (Assembly Number) 
        oTxt.WriteLine Range("B7")  '<-- r (Assembly Revision)
        oTxt.WriteLine Range("B8")  '<-- O (MES Operator Id/Employee Number)
        oTxt.WriteLine Range("B9")  '<-- O (MES Operator Id/Employee Number)
        oTxt.WriteLine Range("B10") '<-- (Start Date Time)
        oTxt.WriteLine Range("B11") '<-- (end Date Time)
        oTxt.WriteLine Range("B12") '<-- T (Test Status)
        oTxt.Close
    End If
Next

结束子组件
所以,这是我的另一个问题,我一行一行地写着“创造”,但是有一种方法,把一种坚定的愤怒写进去吗?你会怎么做?
但是谢谢你所有的这个页面和信息!!

相关问题