如何使用 VBA 从单元格中获取一些字符
Posted
技术标签:
【中文标题】如何使用 VBA 从单元格中获取一些字符【英文标题】:How can I get some characters from a cell with VBA 【发布时间】:2020-05-25 08:58:43 【问题描述】:我正在尝试使用 vba 保存一个 excel 文件,我希望该文件中的文件名是单元格 A3 中的一些字符。
假设我的单元格 A3 的下一个数字是 2420561300,我希望我的文件名仅从该数字中获取前 6 个字符作为其名称:242056。
我有以下代码:
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "Please choose where to save the file and a name to it"
.ButtonName = "Save Excel"
Set rng = Range("A3").Value
.InitialFileName = "C:\Users\admin\Desktop\" & rng
If .Show = 0 Then
MsgBox "File was not saved.", vbCritical
Exit Sub
End If
从这段代码中,我得到的文件名是整数,但是我怎样才能从那个 Range().Value 中只得到一些字符? 谢谢您的回答。我检查了几篇帖子,但找不到解决方案。
【问题讨论】:
试试Left(Range("A3").Value, 6)
。如果 rng
已被声明为 As Range
,则 Set rng = Range("A3").Value
不正确。至少,如果你喜欢它是一个范围。否则,VBA 可能会将其视为Variant
...无论如何,请尝试声明所有变量。将Option Explicit
放在模块顶部!
非常感谢@FaneDuru,效果很好!!我不敢相信事情这么简单,谢谢!
设置Range
的正确方法是Set rng = Range("A3")
。
谢谢,我也会考虑的!
【参考方案1】:
为了直接SaveAs
一个工作簿,你可以这样进行:
Dim fullFilename As String
fullFilename = "C:\Users\admin\Desktop\" & left(Range("A3").value, 6) & ".xlsx"
ActiveWorkbook.SaveAs fileName:=fullFilename, FileFormat:=xlWorkbookDefault
以上代码假定您的Range("A3")
也不包含扩展名。如果包含,则必须删除fullFilename
定义的最后一部分。
如果您坚持使用对话框并使其显示要保存的名称,请使用:
.InitialFileName = "C:\Users\admin\Desktop\" & Left(Range("A3").Value, 6) & ".xlsx"
【讨论】:
【参考方案2】:With Application.FileDialog(msoFileDialogSaveAs)
.Title = "Please choose where to save the file and a name to it"
.ButtonName = "Save Excel"
.InitialFileName = "C:\Users\admin\Desktop\" & Left(Range("A3").Value, 6)
If .Show = 0 Then
MsgBox "File was not saved.", vbCritical
Exit Sub
End If
End With
@FaneDuru 在 cmets 中给了我正确的答案,非常感谢。它只是添加Left(Range("A3").Value, 6)
【讨论】:
但这是一个对话框,在您显示的内容中,您可以设置最初显示对话框的文件夹。如果您需要SaveAs
获取特定名称,我可以告诉您如何操作。无论如何,您上面的代码错过了End With
...您想保存什么扩展名? xlsx?你必须知道,当保存一些东西时......
哦,是的,对不起,我忘记输入End With
。是的,对不起,我也忘了提,我把它做成了一个对话框,所以你可以选择保存它的位置和文件名,但我希望初始文件名与对话框中的文件名一样,因为大多数文件名都具有这种格式。是的,我想将它保存为 xlsx,因为我希望所有宏都消失,该代码只是整个代码的一部分。没问题,我解决了剩下的,我只需要看看如何将单元格中的一些字符保存为文件名,谢谢!
如果你想保存在一个特定的位置并且你知道它,你会浪费时间使用对话框,但这只是一个意见......
我知道,但问题是位置可能因文件不同而异,所以我更喜欢提供对话框,以便人们可以选择保存位置。以上是关于如何使用 VBA 从单元格中获取一些字符的主要内容,如果未能解决你的问题,请参考以下文章
如何从单元格中删除换行符,但将地址格式保留在同一单元格VBA中