Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 导入文本文件并删除以开头的范围名称时出错__Vba_Excel - Fatal编程技术网

Vba 导入文本文件并删除以开头的范围名称时出错_

Vba 导入文本文件并删除以开头的范围名称时出错_,vba,excel,Vba,Excel,我试图在Excel2010中导入文本文件(其内容粘贴在此处) 样本 0.000336179308182416 0.0003623072328649 0.000330580466347818 0.000328403140930966 0.00032653860231208 0.000316583362896417 0.000331824654826285 0.000376926431150615 0.00035919676480228 0.00035110955014428 0.000340022

我试图在Excel2010中导入文本文件(其内容粘贴在此处)

样本
0.000336179308182416 0.0003623072328649 0.000330580466347818 0.000328403140930966 0.00032653860231208 0.000316583362896417 0.000331824654826285 0.000376926431150615 0.00035919676480228 0.00035110955014428 0.0003400222914920751 0.00038594678488213 0.000374438054920212 0.000387197133020.0003567390280.000355464204204180755 0.000362307232454562 0.00040803102693052 0.00042793809249897 0.000361685139135481=平均值(B2:U2)=中位数(B2:U2)=标准差(B2:U2)0.000317516503116533 0.0003246700578360742 0.000343644429001611 0.000317205439935 0.0003162723161688 0.0003222204399 0.0003190717759=平均值(B2:AE2)=中位数(B2:AE2)=标准偏差值(B2:AE2)

进口商品运作正常。在excel中打开文本文件后,我编写了以下VBA代码来删除以x开头的范围名称

Private Sub Workbook_Open()
 For Each n In ActiveWorkbook.Names
  If Mid$(n.Name, 1, 1) = "_" Then
    MsgBox ("The file being deleted is " + n.Name)
     n.Delete
  End If
 Next n
End Sub
并保存了文件。现在,我再次打开这个保存的xlsm文件,并显示消息“正在删除的文件是xlfn.STDEV.P”


即使我在文本文件中指定了一个STDEV.p函数,我也不知道这个范围名称是从哪里添加到
ActiveWorkBook.Names
集合的。随后的删除操作也会引发错误,因为范围名称是excel函数名称。请帮我纠正这个问题

以xlfn开头的范围名称是由excel创建的,因此任何删除这些范围名称的尝试都会引发错误。因此,我避免了删除以xlfn开头的范围名称

For Each n In ActiveWorkbook.Names
    If Mid$(n.Name, 1, 5) = "_xlfn" Then
        continue
    Else  
        n.Delete
    End If
Next n

首先检查“菜单>>公式>>名称管理器”中的范围名称未列出。事实上,名称管理器是空的。您是否以编程方式生成名称,如果是,请发布此代码(通过编辑您的答案?)在Google中搜索
\u xlfn
,因为这是Excel在某些情况下添加的一种特殊限制类型的前缀。我在一些论坛上读到,当2010年工作簿以97-03格式保存时,对于任何包含仅在2010年才支持的函数的公式,都会添加_xlfn作为标记。但我无法理解为什么会创建一个范围名称(xlfn.STDEV.P),即使我正在以2010格式保存该工作表