使用string作为Range对象的命名表

时间:2015-11-25 15:47:43

标签: excel vba excel-vba

我有一个文本值列表,每个值都是我的工作簿的不同工作表上的命名表的名称。

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的方式有问题,但我找不到任何关于如何将命名表名作为字符串传递给子程序并在一个范围内使用它的信息。

0 个答案:

没有答案