命令按钮代码替换特殊字符

时间:2015-05-21 20:18:07

标签: excel-vba button command excel-2007 vba

我没有VB的任何培训,我只是使用我在网上找到的内容来修改我的代码。

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

如何修改下面的代码,用短划线(“ - ”)替换这些禁止的字符?

Private Sub CommandButton1_Click()
    Dim Path As String
    Dim FileName1 As String
    Dim FileName2 As String
    Dim FileName3 As String
    Dim FileName4 As String
    Dim FileName5 As String
    Dim FileName6 As String
    Dim FileName7 As String
    Dim str As String, strLeft As String
    str = Range("O7")
    strLeft = Left(str, 9)
    FileName1 = strLeft
    FileName2 = Range("Q7")
    FileName3 = Range("W7")
    FileName4 = Range("A7")
    FileName5 = Range("I7")
    FileName6 = Range("D7")
    FileName7 = Range("E7")
    Path = "C:\Users\Desktop\CURRENT PROJECTS\CatchAll\"
    ActiveWorkbook.SaveAs FileName:=Path & FileName1 & "_" & FileName2 & "_" &
    FileName3 & "_" & FileName4 & "_" & FileName5 & "_" & FileName6 & "_" &
    FileName7 & "_" & ".xls", FileFormat:=xlCSV
End Sub

2 个答案:

答案 0 :(得分:0)

用“ - ”替换所有字符可能不是一个好主意。您最终可能会得到一个很长的文件名。

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

import webapp2
from webapp2_extras import jinja2
import appengine_config
import handlers
import gae_mini_profiler.profiler

class MainHandler(handlers.BaseRequestHandler):
    def get(self):
        user = separate_file.get_user_and_logins(self)
        templateid = 'home.html'
        context = {
            'user': user,
        }
        self.render(templateid, context)

app_config = {
    'webapp2_extras.jinja2.default_config': {
        'globals': {
            'profiler_includes': gae_mini_profiler.templatetags.profiler_includes,
         },
     },
}

app = webapp2.WSGIApplication([
  ('/', MainHandler)], config=app_config, debug=True)
app = gae_mini_profiler.profiler.ProfilerWSGIMiddleware(app)

答案 1 :(得分:0)

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

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))

但我不知道所有被拒绝的角色,请查看并将其添加到&#34; myarray&#34;