2012-12-27 40 views
0

我正在使用两个文件夹,一个用于inuput文件夹,其中所有文件都存在,另一个是输出文件夹,其中重命名的文件将被保存。使用VBA将某些文件从输入文件夹重命名为输出文件夹

请参阅下面的代码。我正在使用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 

回答

0

我不知道我完全地按照你在做什么试图去做,但它看起来并不像你已经将r设置为一个整数,所以它只是将该值用作字符串。如果你想让它增加,那么我认为你会希望它是一个数值,而不仅仅是文本。

我相信你需要这个维度添加到顶部:也

Dim r As Long 

,我敢肯定,你会希望把这样的事情在循环的一个

r = r + 1 

这将使它在每个循环中递增r的值。如果您希望增量与用户输入的增量相同,则需要更详细一些,因为它需要保留原始值或r。您可以在开始时使用r2 = r(在用户输入之后),以便您可以使用r2作为增量(这将是原始的r值)。然后,你可以使用:

r = r + r2 

不要忘了标注的r2开头:

Dim r2 As Long 
相关问题