更改工作表名称时出错

时间:2016-04-04 21:07:35

标签: vba

我正在运行下面的代码并且它运行良好 - 它使用Sheet1上的单元格B1中指定的名称创建我的文件,但是当我将其他名称(示例FileNames)命名为时,它会给我一个错误。

Sub OpenFiles()
Dim fso As Scripting.FileSystemObject
Dim ts As Scripting.TextStream

Set fso = New Scripting.FileSystemObject
Set ts = fso.CreateTextFile("C:\Users\Betty_smith\Desktop\VBA\" &
Replace(Sheet1.Range("B1").Text, ".txt", "") & ".txt", True)

End Sub

这是给我一个错误的代码:

Sub OpenFiles()
Dim fso As Scripting.FileSystemObject
Dim ts As Scripting.TextStream

Set fso = New Scripting.FileSystemObject
Set ts = fso.CreateTextFile("C:\Users\iwona_ring\Desktop\VBA\" & 
Replace(Names.Range("B1").Text, ".txt", "") & ".txt", True)

End Sub

有人可以解释原因吗?

2 个答案:

答案 0 :(得分:0)

Replace(Sheet1.Range("B1").Text, ".txt", "") & ".txt", True)

看起来您正在使用Sheet的代号(显示在VB编辑器的Project explorer窗口中;最初它与工作表选项卡名称相同,但在更改选项卡名称时不会更改)

更新至:

Replace(Sheets("Sheet1").Range("B1").Text, ".txt", "") & ".txt", True)

然后将“Sheet1”更新为新的工作表名称...

答案 1 :(得分:0)

有两个概念:

  • 名称 - >在您撰写Worksheets("Names").Range(...)
  • 时使用
  • 代码名称 - >在您撰写Names.Range(...)
  • 时使用

最初它们具有相同的值:

  • name = Sheet1
  • 代码名称= Sheet1

但是,在重命名标签后,这些名称将不会具有相同的值。 名称更改,但代码名称仍然相同

  • name = Names
  • 代码名称= Sheet1

    (因此,您的代码失败,因为没有代码名称=姓名)

要检查这些值是否有所不同,右键单击选项卡> 查看代码>在左上角看到如下内容:

  • Sheet1(姓名)
  • Sheet2(Sheet2)
  • Sheet3(Sheet3)

name vs code name