热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

另存为使用变量名称给出错误-SaveAsUsingVariableNamesGivesError

Tryingtosaveanew,notyetnamed,workbook(thatIaddedusinganothersub)withvariablesforth

Trying to save a new, not yet named, workbook (that I added using another sub) with variables for the name. When I place everything within the quotation marks it works to save (not with variables). But this code constantly gives the run-time errror '1004': Method'SaveAs'of object '_workbook' failed.

尝试使用名称的变量保存一个新的,尚未命名的工作簿(我使用另一个子程序添加)。当我将所有内容放在引号内时,它可以保存(而不是使用变量)。但是这段代码不断给出运行时错误'1004':Method'SaveAs'对象'_workbook'失败了。

Sub SalvarTabela30()
Application.DisplayAlerts = False
Dim CompanyNameSave As String
Dim VencimentoSave As Date
Dim ContractNumberSave As String
Dim LastrowForSave As Long
LastrowForSave = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row
CompanyNameSave = Range("A2")
VencimentoSave = Range("C" & LastrowForSave)
COntractNumberSave= Range("E2")
ActiveWorkbook.SaveAs _
   Filename:="\\dsapc429pfs.pactual.net\homefolder02$\wellsty\Desktop\" & _ 
      "Projeto - Marina\" & CompanyNameSave & " - " & ContractNumberSave & _
      " - Vencimento" & "(" & VencimentoSave & ")", FileFormat:=52

Application.DisplayAlerts = True
End Sub

1 个解决方案

#1


3  

There are a number of things that might cause an error with the Save operation but probably the most common is when we attempt to automate the filename creation, and don't account for illegal characters, which can't be part of a filename.

有许多事情可能会导致保存操作出错,但最常见的是当我们尝试自动创建文件名时,并且不考虑非法字符,这些字符不能是文件名的一部分。

In your case, since you are using date values, the presence of either a \ or / in the date format would cause an error.

在您的情况下,由于您使用的是日期值,因此日期格式中存在\或/会导致错误。

This lists the reserved characters:

这列出了保留字符:

  • < (less than)
  • <(小于)

  • > (greater than)
  • >(大于)

  • : (colon)
  • " (double quote)
  • “(双引号)

  • / (forward slash)
  • /(正斜杠)

  • \ (backslash)
  • | (vertical bar or pipe)
  • | (竖杆或管道)

  • ? (question mark)
  • ? (问号)

  • * (asterisk)

For your case, you may simply use a double replace:

对于您的情况,您可以简单地使用双重替换:

CompanyNameSave = Replace(Replace(CompanyNameSave, "\", "-"), "/", "-")

However, that doesn't account for all illegal/reserved characters. It may be helpful to write a custom function that cleans filename strings:

但是,这并不能解释所有非法/保留字符。编写清除文件名字符串的自定义函数可能会有所帮助:

Function CleanFileName(name As String, Optional replaceBy As String = "_")
Const reservedChars As String = "<>:""""/\|?*"
Dim i As Integer
Dim ch As String

For i = 1 To Len(reservedChars)
    ch = Mid(reservedChars, i, 1)

    name = Replace(name, ch, replaceBy)
Next

CleanFileName = name


End Function

You could then call this function, immediately before trying to save the file, like:

然后,您可以在尝试保存文件之前立即调用此函数,例如:

CompanyNameSave = CleanFileName(CompanyNameSave, "-")

Note: If you omit the optional replaceBy argument, it will default to using an underscore _ to replace the reserved characters.

注意:如果省略可选的replaceBy参数,则默认使用下划线_来替换保留字符。

Note also: This does not take in to account whether the file already exists.

另请注意:这不会考虑文件是否已存在。


推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • moment 国际化设置中文语言 (全局) 及使用示例 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
author-avatar
拥有勒幷不代表幸福_563
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有