我遇到了在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
我知道这可能不是正确的方法,但问题的通配符部分导致所有问题!
任何帮助都会很棒。
由于
答案 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