使用VBA将一些文件从输入文件夹重命名为输出文件夹

时间:2012-12-27 08:51:16

标签: word-vba

我使用的是两个文件夹,一个用于inuput文件夹,其中所有文件都存在,另一个是输出文件夹,用于保存重命名的文件。

请参阅下面的代码。我正在使用Str()函数来转换数值,但它不起作用。为什么我不知道。此外,我没有得到所需的输出。

我遇到问题,即Str(m)没有工作并显示类型不匹配错误

请帮助.....

Sub ChangeFilename()


IFILEPATH = InputBox("Copy INPUT folder PATH")
OFILEPATH = InputBox("Copy OUTPUT folder PATH")
Dim strfile As String
Dim filenum As String

strfile = Dir(IFILEPATH)
startFile = InputBox("Start File NAME")
endFile = InputBox("End File NAME")
Dim r as Long
r = InputBox("Input INCREAMENT valu")
Do While strfile <> ""
 If (strfile = startFile) Then

  Do While strfile <= endFile
    x = Left(strfile, Len(strfile) - 4)
    x = Right(x, Len(x) - 2)
    y = Val(x)
    If y > 0 Or y < 9 Then
      Dim m As Long
      m = y + r
      Dim k As String
     'MsgBox Str(m)
      k = Str(m)        //This is the area where I am facing problem i.e Str(m) not WORKING and shows type mismatching Error
      x = "00" & k
      Name IFILEPATH & strfile As OFILEPATH & "eq" & x & ".eps"
    ElseIf y >= 9 Or y < 99 Then
      m = y + r
      x = "0" & k
      Name IFILEPATH & strfile As OFILEPATH & "eq" & x & ".eps"
    Else
      'x = Str(Val(x + r))
      Name IFILEPATH & strfile As OFILEPATH & "eq" & x & ".eps"

    End If
  Loop
 End If
  strfile = Dir
Loop

End Sub

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全按照您要执行的操作,但看起来您并未将r设置为整数,因此它仅将该值用作字符串。如果你试图让它增加,那么我假设你希望它是一个数值,而不仅仅是文本。

我相信您需要将此维度添加到顶部:

Dim r As Long

另外,我很确定你会想要在其中一个循环中放置这样的东西

r = r + 1

这将使它在每个循环期间递增r的值。如果您希望增量与用户输入的增量相同,则需要更精细的内容,因为它需要保留原始值或r。您可以在开头(用户输入之后)使用r2 = r,这样您就可以使用r2作为增量(这将是原始的r值)。然后你可以使用:

r = r + r2

不要忘记在开头标注r2

Dim r2 As Long