【发布时间】:2016-06-14 13:46:42
【问题描述】:
我对 vba 还很陌生,但我已经开发了一个代码,用于在 excel 中将文本/数字移动到 txt 文件。我的问题是我目前有三个函数需要转到同一个 txt 文件。当我当前运行它时,第一个函数有
Set fs = CreateObject("scripting.FileSystemObject")
Set a = fs.createTextFile(Module1.NYS45Uploadfilename, True)
a.writeline (str)
a.Close.
另外两个函数已经保存了。
Set fs = CreateObject("scripting.FileSystemObject")
Set a = fs.saveTextFile(Module1.NYS45Uploadfilename, True)
a.writeline (str)
a.Close.
第一个函数会去txt文件,另外两个我报错
对象不支持此属性或方法。
当我更改所有三个以创建最后一个函数时,转到 txt 文件。我不知道要使用什么词才能使其他两个函数按照键入的顺序进入 txt 文件。
整个代码如下
Private Sub addRecord_Click()
On Error GoTo ErrHandler
Module1.NYS45Uploadfilename = Application.GetSaveAsFilename(FileFilter:="Textfiles (*.txt), *.txt")
If Module1.NYS45Uploadfilename = "False" Then Exit Sub
Header_Rec
Detail_Rec1
Detail_Rec2
Dim strmsg As String
strmsg = "Your file has been added here: " & Module1.NYS45Uploadfilename
MsgBox strmsg
Exit Sub
ErrHandler:
MsgBox Err.Number & vbNewLine & Err.Description
Resume Next
End Sub
Function Header_Rec()
Dim str, strfilename, txtpath As String
Dim strlencount, strspacer As Integer
str = str & Range("a3").Value
str = str & Range("b3").Value
str = str & Trim(Range("c3").Value)
strlencount = Len(Trim(Range("c3").Value))
strspacer = 30 - strlencount
str = Module1.SpaceAdd(str, strspacer)
str = str & Range("d3").Value
str = str & Range("E3").Value
str = Module1.SpaceAdd(str, 159)
' Debug.Print Len(str)
Set fs = CreateObject("scripting.FileSystemObject")
Set a = fs.createTextFile(Module1.NYS45Uploadfilename, True)
a.writeline (str)
a.Close
' Debug.Print str
End Function
Function Detail_Rec1()
Dim str, strnum, str2, strfilename, txtpath As String
Dim strlencount, strspacer As Integer
If Range("a7").Value <> "5" Then
Exit Function
End If
str = str & Range("a7").Value
str = str & Range("b7").Value
str = str & Range("c7").Value
str = Module1.SpaceAdd(str, 1)
str = str & Trim(Range("d7").Value)
strlencount = Len(Trim(Range("d7").Value))
strspacer = 30 - strlencount
str = Module1.SpaceAdd(str, strspacer)
str = str & Range("E7").Value
' Debug.Print Len(str)
Set fs = CreateObject("scripting.FileSystemObject")
Set a = fs.addTextFile(Module1.NYS45Uploadfilename, True)
a.writeline (str)
a.Close
' Debug.Print str
End Function
Function Detail_Rec2()
Dim str, strnum, str2, strfilename, strnew, txtpath As String
Dim strlencount, strspacer As Integer
If Range("a11").Value <> "6" Then
Exit Function
End If
str = str & Range("a11").Value
str = str & Range("b11").Value
str = str & Trim(Range("c11").Value)
strlencount = Len(Trim(Range("c11").Value))
strspacer = 11 - strlencount
str = Module1.SpaceAdd(str, strspacer)
strspacer = 30 - strlencount
str = Module1.SpaceAdd(str, strspacer)
str = str & Range("f11").Value
str = str & Range("g11").Value
' Debug.Print Len(str)
Set fs = CreateObject("scripting.FileSystemObject")
Set a = fs.getTextFile(Module1.NYS45Uploadfilename, True)
a.writeline (str)
a.Close
' Debug.Print str
End Function
【问题讨论】:
-
请编辑您的问题,分享您在 excel 中使用的代码以将文本/数字移动到 txt 文件,修复格式 - 使用代码块而不是内联代码。
-
我很抱歉你要什么?你想要到目前为止我为整个工作表制作的整个代码吗?我可以把它复制粘贴到这里吗
-
FileSystemObject对象没有这样的saveTextFile方法。我知道“第一个函数”的目标是创建一个TextStream对象并写入它。但是“其他两个功能”的目标是什么? -
每个函数都有一行要在 txt 文件中创建。此 txt 文件用于测试和上传到程序以获得所需的结果。我将包含整个代码供您查看。
-
但我一直看到 "strange" 方法,例如
getTextFile、addTextFile、... 你在用 VBA 编码吗?
标签: excel text-files vba