excel - Excel VBA 不会保存:创建 8 位字母数字“文件名”
问题描述
我是 VBA 新手。我正在使用“shell”宏在一系列文件上运行另一个宏。它不会保存。我将在此处包含我的代码以及一系列照片,因为照片是显示将鼠标悬停在代码中的值上的结果的唯一方法。
因此,错误消息正在生成我不理解的内容。但很明显,代码中的链接链接到结果应该是什么,所以我很困惑。这是代码:
Sub SHELLforMacros()
Dim wbMatrix As Workbook
Dim strFileName As String
Dim strFileName As String
Dim newFileName As String
Dim strPath As String
Dim strExt As String
Dim objWorkbook As Workbook
Dim ws As Worksheet
Dim Sheetname As Worksheet
Set Sheetname = Worksheets(1)
Dim Worksheet As Worksheet
Dim rng As Range
Set rng = Range("A2")
strPath = "C:\Users\myname\Desktop\All_mricgcm3_files\45\Fall45\test\"
strExt = "csv"
strFileName = Dir(strPath & "*." & strExt)
While strFileName <> ""
Set wbMatrix = Workbooks.Open(strPath & strFileName)
Application.Run "'C:\Users\myname\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB'!Graph_NEW"
strPath = "C:\Users\myname\All_mricgcm3_files\45\Fall45\test\"
newFileName = Sheetname.Range("A2").Value
ActiveWorkbook.SaveAs fileName:=strPath & newFileName, FileFormat:=51
ActiveWorkbook.Close SaveChanges:=True
Wend
End Sub
这个宏应该做的是打开一个文件,在该文件上运行另一个宏(创建一个图形),然后用相同的名称将文件保存为 .xlsx 文件。然后打开文件夹中的下一个文件并执行相同操作,直到文件用完。我意识到代码可能不是最新的。它是由我在网上找到的东西拼凑而成的。谢谢你的帮助。
编辑:更新 - 我从“shell”宏中删除了所有关于保存和关闭文件的部分,并将其放入“Graph_NEW”宏中。现在“shell”宏运行良好。但是我现在遇到了与“Graph_NEW”宏相同的问题。它与第一张图像中突出显示的错误消息完全相同,只是每次它正在寻找一个新的 8 位字母数字“文件名”。这似乎是一件非常具体的事情。
我依次通过以下方式更改了该部分,以尝试调试。我在该部分周围添加With
了End With
:
With WB
ActiveWorkbook.Save
newFileName = Sheetname.Range("A2").Value
strPath = "C:\Users\qmontana\All_mricgcm3_files\mric45\Fall45\test\"
ActiveWorkbook.SaveAs fileName:=strPath & newFileName & ".xlsx", FileFormat:=51
ActiveWorkbook.Close SaveChanges:=True
End With
我将文件夹的名称从“45”更改为“mric45”,认为它可能不喜欢将数字作为文件夹名称。
我删除了 -- 末尾的“反斜杠”,strPath
然后 8 位字母数字字符串在 Fall45 文件夹之后显示为错误,例如“C:\Users\myname\Desktop\All_mricgcm3_files\45\Fall45\777GTY78 ”。然而,正如我在图片中展示的那样,所有迹象都表明它知道它正在使用什么文件。路径名中没有“空格”。
我尝试将下划线从文件夹“All_mricgcm3_files”中取出。
我将线路移动到线路newFileName = Sheetname.Range("A2").Value
之前strPath
。
这个 8 位字母数字“文件名”来自哪里?(见错误代码,第一张图片。)
解决方案
好的,这是一件非常简单的事情,以防其他人遇到这个问题。
不过,我花了两天时间才知道——>我不知何故在路径名中删除了一个文件夹层。捕获?字母数字字符串显示在路径名称的末尾,而不是文件夹层丢失的位置。这就是我被抛弃的原因,因为我的注意力集中在结局上。
当我重新添加它folder\
时,我没有更多的保存问题并且宏运行良好。
推荐阅读
- typescript - 类型错误:来自 jest.spyOn() 的 mockReturnValueOnce 推断参数类型为 void
- javascript - 使用 Flask 防止表单提交
- c# - 通过 RedirectToPage 传递数据
- python - 使用 cvxpy 优化 M/M/k/k 排队系统
- sharepoint - Sharepoint API:禁用文档库的版本控制
- jenkins - 尝试在 Ubuntu 服务器中安装/启动 Jenkins - hudson.util.AWTProblem
- javascript - 如何在 sharedModules angular 中更改primeng库
- reactjs - 如何使用 react 和 django-rest-framework 返回 404 状态码
- python - 在 C 扩展中定义 Python 枚举 - 我这样做对吗?
- awk - 在匹配的字符串之后打印文本块