首页 > 解决方案 > 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 位字母数字“文件名”。这似乎是一件非常具体的事情。

我依次通过以下方式更改了该部分,以尝试调试。我在该部分周围添加WithEnd 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 位字母数字“文件名”来自哪里?(见错误代码,第一张图片。)

标签: excelvba

解决方案


好的,这是一件非常简单的事情,以防其他人遇到这个问题。

不过,我花了两天时间才知道——>我不知何故在路径名中删除了一个文件夹层。捕获?字母数字字符串显示在路径名称的末尾,而不是文件夹层丢失的位置。这就是我被抛弃的原因,因为我的注意力集中在结局上。

当我重新添加它folder\时,我没有更多的保存问题并且宏运行良好。


推荐阅读