我有一个文本值列表,每个值都是我的工作簿的不同工作表上的命名表的名称。
Colum1 Value
Table1 True
Table2 False
Table3 False
Table4 True
Table5 True
我的VBA代码如下所示:
For Each cell In MyRange
If cell.Offset(0, 1).Value = "True" Then
Call WriteTXTFile(cell.Value)
End If
Next cell
WriteTXTFile子例程需要获取表名并将其用作范围以从表中获取所有数据并将其导出为管道分隔的TXT文件,如下所示:
Private Sub WriteTXTFile(TableName As String)
Dim TableRange As Range
Set TableRange = Range(TableName & "[#All]")
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim filesys, filenm, txtstrm
Dim CurrentCell As String
Set filesys = CreateObject("Scripting.FileSystemObject")
filesys.CreateTextFile ThisWorkbook.Path & "\" & TableName & ".txt"
Set filenm = filesys.GetFile(ThisWorkbook.Path & "\" & TableName & ".txt")
Set txtstrm = filenm.OpenAsTextStream(ForWriting, TristateFalse)
For Each cell In TableRange
CurrentCell = cell.Value
txtstrm.Write (Chr(124) & CurrentCell)
Next cell
txtstrm.Close
但是,我一直收到错误:
“对象的方法范围_全局失败。”
我确定子程序设置TableRange的方式有问题,但我找不到任何关于如何将命名表名作为字符串传递给子程序并在一个范围内使用它的信息。