使用VBA重命名文件

时间:2015-09-03 11:11:22

标签: excel vba excel-vba

我遇到了在vba中重命名文件的问题。

我只知道文件名的某个部分,例如它以happy开头。我希望能够将此文件重命名为我想要的任何内容。只有一个名为happy *的文件。我有以下代码,但它给我一个名为ffile As NewName的“找不到文件”错误

Sub ReNaming()

Dim ffile As String

ffile = Dir("h:\folder1\happy*")
NewName = "yellow.xlsx"
Name ffile As NewName


End Sub

我知道这可能不是正确的方法,但问题的通配符部分导致所有问题!

任何帮助都会很棒。

由于

2 个答案:

答案 0 :(得分:3)

最好尽可能具体和彻底,因为你可以获得可用的信息。

<!DOCTYPE html>
<html>

<head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
  <title>MobileTemplateCalne</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href='https://fonts.googleapis.com/css?family=Open+Sans:300' rel='stylesheet' type='text/css'>
</head>

<body>
  <header id="header">
    <div style="font-size:30px">Title</div>
  </header>
  <section id="menu">
    <ul>
      <li class="menuItems"><a href="#tasks">Tasks</a>
      </li>
      <li class="menuItems"><a href="#addtask">Add Task</a>
      </li>
    </ul>
  </section>
  <section id="searchMenu">
    <textarea id="search" onmouseover="changeText();" maxlength="40">Search Here</textarea>
  </section>
  <section id="list">
    <ul style="display:inline" id="group">
      <li class="items" id="item1" style="border:1px solid blue">

        <input type="radio" name="radios" class="radios" />
        <label class="label">Item</label>
        <br/>

        <label class="statusLabel">Status</label>
        <div class="status"></div>

        <label class="date">12/31/9999</label>
      </li>
      <li class="items" id="item2" style="border:1px solid blue">

        <input type="radio" name="radios" class="radios" />
        <label class="label">Itemite</label>
        <br/>

        <label class="statusLabel">Status</label>
        <div class="status"></div>

        <label class="date">12/31/9999</label>
      </li>
      <li class="items" id="item3" style="border:1px solid blue">

        <input type="radio" name="radios" class="radios" />
        <label class="label">Ite</label>
        <br/>

        <label class="statusLabel">Status</label>
        <div class="status"></div>

        <label class="date">12/31/9999</label>
      </li>

    </ul>
  </section>
  <section id="footer">
    <ul>
      <li class="buttons">Save</li>
      <li class="buttons">Edit</li>
      <li class="buttons">Delete</li>
    </ul>
  </section>
</body>

</html>

虽然ffile = Dir("h:\folder1\happy*.xlsx") NewName = "yellow.xlsx" Name "h:\folder1\" & ffile As "h:\folder1\" & NewName 不是必需的,但将不是.xlsx工作簿的任何内容重命名为.xlsx工作簿是没有意义的。

答案 1 :(得分:1)

问题是Dir()返回文件名但不返回完整路径。您可以在Debug.Print ffile之后放置Dir以查看它返回的内容。如果该文件在您运行VBA脚本的目录中不存在,那么您将收到该错误。你可以这样做:

Sub ReNaming()

    Dim ffile As String
    Dim pathname As String

    pathname = "h:\folder1\"
    ffile = Dir(pathname & "happy*")
    ffile = pathname & ffile
    NewName = "yellow.xlsx"
    Name ffile As pathname & "NewName" 'or just "NewName" if you *want* to change the folder
End Sub