VBA用于斜杠文件名之间的单词

Mat*_*ttO 1 excel vba excel-vba

我构建了一个基于名称列表保存工作簿的宏.我收到了一个saveAs错误,因为某些新的列表项目/文件名中不允许这样做.

我需要一些帮助来编写一个代码来执行此操作:请注意,团队,名称,联赛和杯子的列表会更改每一行.

  list item: team/ league
  what I want: league 

  list item: team / league / cup                    
  What I want: league-cup

  List item; team / league / cup / score
  what I want: league-cup-score
Run Code Online (Sandbox Code Playgroud)

我让它适用于第一个场景,那里只有一个/但无法找到休息.

 InStr(Value, "/") > 0 Then
 filename = Right(Value, (Len(Value) - InStr(Value, "/")))
 Else
 filename = Value
 End If
Run Code Online (Sandbox Code Playgroud)

是我到目前为止所得到的.

谢谢

Joh*_*man 7

您可以拆分,修剪和加入:

Function MakeFileName(s As String) As String
    Dim v As Variant, w As Variant
    Dim i As Long, n As Long
    v = Split(s, "/")
    n = UBound(v)
    ReDim w(1 To n)
    For i = 1 To n
        w(i) = Trim(v(i))
    Next i
    MakeFileName = Join(w, "-")
End Function
Run Code Online (Sandbox Code Playgroud)

例如:

Sub test()
    Debug.Print MakeFileName("team/ league")
    Debug.Print MakeFileName("team / league / cup")
    Debug.Print MakeFileName("team / league / cup / score")
End Sub
Run Code Online (Sandbox Code Playgroud)

输出:

league
league-cup
league-cup-score
Run Code Online (Sandbox Code Playgroud)