2012-02-02 154 views
0

我真的希望有人可以帮助我,因为我需要做的,如何将文件从英语重命名为其他语言?

我有一个excel文件,有一些列和一列有英文文件名和其他列有其他语言的文件名。 现在我需要做的是重命名其他语言的文件,是否可以重命名。

我尝试这个代码

Sub pdfrenamefile() 
Dim oldfile As String 
Dim nwfile As String 
Dim rng As Range 
Dim fname As Range 
Set rng = Range("Y7", Range("Y" & Rows.Count).End(xlUp)) 
For Each fname In rng 
    If IsEmpty(fname) Or fname = "" Then 
    'do nothing 
    Else 
     If FileFolderExists(Cells(1, 1) & fname) Then 
      nwfile = fname.Offset(, 1) & ".PDF" 
      Name Cells(1, 1) & fname As Cells(1, 1) & nwfile 
      fname.Offset(0, 2) = nwfile 
      fname.Offset(0, 3) = "Success" 
     Else 
      Range("AB" & fname.Row) = "File Not Found" 
     End If 
    End If 
Next fname 
End Sub 

实施例:

示例数据ID OldFileName NewFileName

1 Sales1.PDF తెలుగు1.PDF 
2 Sales02.PDF తెలుగు02.PDF 
3 Sales567.PDF తెలుగు567.PDF 
4 dest67.PDF తెలుగు67.PDF 

我尝试,但它仅转换成英语,但不接受对其他。

在此先感谢您的帮助。

+0

您没有显示您尝试过的任何代码。分享你正在做的事情......以及数据的样本。 – 2012-02-02 12:34:51

+0

谢谢麦斯欧德快速响应 该守则 子pdfrenamefile() 昏暗的oldfile作为字符串 昏暗nwfile作为字符串 昏暗的RNG作为范围 昏暗FNAME作为范围 设置RNG =范围(“Y7”,范围(“Y “&Rows.Count).END(xlUp)) 对于每个FNAME在RNG 如果为IsEmpty(FNAME)或者FNAME = ”“ 然后 否则 如果FileFolderExists(将细胞(1,1)&FNAME)然后 nwfile = FNAME。 (1,1)&“。PDF” fname.Offset(0,2)= nwfile fname.Offset(0,3)=“fname.Offset(0,2)&nwfile ”成功“ 其他 范围(“AB”及fname.Row)=“找不到文件” 结束如果 结束如果 接下来FNAME 末次 – user1049518 2012-02-02 12:41:35

+0

请将此代码添加到这个问题,以便它实际上可读。此代码ASIS不可用的任何地方:( – 2012-02-02 12:42:28

回答

4

我已对您的代码进行了最低限度的更改以使其正常工作。不过,我发现你的代码很混乱,所以我还推荐了一些进一步的修改。

我不得不将您的示例数据放在范围X6:Z10中,因此第一个旧文件名在单元格Y7中。

我必须将包含文件的文件夹的名称放在单元格A1中。

我希望我的变化的原因很明确。问他们是不是。

Sub pdfrenamefile() 

    Dim oldfile As String 
    Dim nwfile As String 
    Dim rng As Range 
    Dim fname As Range 

    ' I find your names confusing. For example, You should rename fname to make 
    ' clear that it is a range. You have declared oldname but do now use it. 

    ' You are using methods that require a file system object 
    Dim fso As Object 
    Set fso = CreateObject("Scripting.FileSystemObject") 

    Set rng = Range("Y7", Range("Y" & Rows.Count).End(xlUp)) 

    ' You use too many different methods of located cells. You use 
    ' rng.Offset(0, c), Cells(r, c) and "AB" & r. Will you understand this 
    ' code in six months? What if you decide to change the position of the 
    ' table of names? 

    For Each fname In rng 

    ' fname is a range. fname.Value is its value. 
    If IsEmpty(fname.Value) Or fname.Value = "" Then 
    Else 
     ' I have replaced "FileFolderExist" by "fso.FileExists". 
     ' "Cells(1, 1)" is acceptable but I prefer "Cells(1, 1).Value" 
     ' which makes absolutely clear you want the value. 
     If fso.FileExists(Cells(1, 1).Value & fname.Value) Then 
     ' You already have the extension in the worksheet so 
     ' do not need to add ".PDF". 
     nwfile = fname.Offset(0, 1).Value 
     ' You check the old file exists but not that the new file 
     ' does not exist. I have added another If-Then-Else-End If. 
     If fso.FileExists(Cells(1, 1) & nwfile) Then 
      Range("AB" & fname.Row) = nwfile & " already exists" 
     Else 
      ' The Name statement will not accept non-English letters. 
      ' I have used MoveFile which will accept non-English letters. 
      ' "fname.Value" not "fname" because "fname" is a range. 
      fso.movefile Cells(1, 1).Value & fname.Value, _ 
                Cells(1, 1).Value & nwfile 
      ' You have nwfile in Offset(0,1). Why duplicate it? 
      fname.Offset(0, 2) = nwfile 
      fname.Offset(0, 3) = "Success" 
     End If 
     Else 
     ' I have added the old name to the message to make clear 
     ' what has not been found. 
     Range("AB" & fname.Row) = fname.Value & " not found" 
     End If 
    End If 
    Next fname 

End Sub 
+0

不值得改善这个代码+1(并试图理解问题:)) – JMax 2012-02-02 19:39:57

+0

非常感谢Tony Dallimore。它的工作正常。其实我需要做的是用非英文字母,即其他语言重命名文件。您修改的代码运行良好。我有一个疑问,非英文文件名将会以原样显示(即以非英文显示)或以符号显示。按照原样显示(非英文不符号)我需要做什么。感谢您的帮助... – user1049518 2012-02-03 03:46:37

+0

我使用您的名字将虚拟文件重命名,其外观正确,形状与您的示例中相同。我相信Windows将允许任何字母表中的任何字母用于文件名中。唯一的问题是他们字体很小,所以很难阅读。我确信有一种让他们变大的方法,但我不知道它是什么。 – 2012-02-03 09:06:22

相关问题