Excel 用于替换特殊字符的命令按钮代码

Excel 用于替换特殊字符的命令按钮代码,excel,button,command,excel-2007,vba,Excel,Button,Command,Excel 2007,Vba,我没有任何VB方面的培训,我只是用我在网上找到的东西来修改我的代码 下面是ActiveX命令按钮的代码(如果多余,请原谅),该按钮允许我从Excel电子表格(MS Office 2007)中的特定单元格中绘制值,并将这些值作为文件名的一部分保存在指定文件夹中。但是,某些单元格的文件名中不允许使用字符(例如/:*?“|”) 我如何修改下面的代码,用破折号(“-”)替换这些禁止的字符 将所有字符替换为“-”可能是个坏主意。您可能会得到一个很长的文件名 我使用这个简单的函数来清理任何字符串以获得正确的

我没有任何VB方面的培训,我只是用我在网上找到的东西来修改我的代码

下面是ActiveX命令按钮的代码(如果多余,请原谅),该按钮允许我从Excel电子表格(MS Office 2007)中的特定单元格中绘制值,并将这些值作为文件名的一部分保存在指定文件夹中。但是,某些单元格的文件名中不允许使用字符(例如/:*?“|”)

我如何修改下面的代码,用破折号(“-”)替换这些禁止的字符


将所有字符替换为“-”可能是个坏主意。您可能会得到一个很长的文件名

我使用这个简单的函数来清理任何字符串以获得正确的文件名。希望这对您有所帮助

Function strClean(strIn As String) As String
    Dim objRegex As Object
    Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
        .Pattern = "[\[\]|\/\\:\*\?""<>]"
        .Global = True
        strClean = .Replace(strIn, vbNullString)
    End With
End Function
函数strClean(strIn作为字符串)作为字符串
作为对象的Dim objRegex
设置objRegex=CreateObject(“vbscript.regexp”)
用objRegex
.Pattern=“[\[\]\124;\/\\:\*\?”“]”
.Global=True
strClean=.Replace(strIn,vbNullString)
以
端函数

可能构建一个函数来替换不需要的字符:

Function RepCh(str As String)

myarray = Array("/", ":", "*", "?", Chr(34), "<", ">", "|")

For i = LBound(myarray) To UBound(myarray)
    If i = LBound(myarray) Then
        NewStr = Replace(str, myarray(i), "-")
    Else
        NewStr = Replace(NewStr, myarray(i), "-")
    End If
Next i
RepCh = NewStr
End Function

但我不知道所有被拒绝的字符,请查找它们并将其添加到“myarray”

谢谢,Siddarth。这也很有效,但文件名需要“-”作为一个用途。此外,被拒绝的字符非常少。再次感谢您的建议。将保留它用于其他用途。如果您需要“-然后将
vbNullString
更改为
“-”
。就这么简单:)像魔法一样工作,费德里科。正是我需要的。非常感谢!
Function RepCh(str As String)

myarray = Array("/", ":", "*", "?", Chr(34), "<", ">", "|")

For i = LBound(myarray) To UBound(myarray)
    If i = LBound(myarray) Then
        NewStr = Replace(str, myarray(i), "-")
    Else
        NewStr = Replace(NewStr, myarray(i), "-")
    End If
Next i
RepCh = NewStr
End Function
Filename2 = RepCh(Range("Q7").value) ' or RepCh(cstr(Range("Q7").value))