Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1771|回复: 9

[已解决]抓取当前excel文档名称的前10个字VBA 代码修正

[复制链接]
发表于 2017-1-5 11:44 | 显示全部楼层 |阅读模式
本帖最后由 lotgot 于 2017-1-5 18:26 编辑

各位老师好,我想在excel vba 抓取 当前开启的excel 文档名称的前10个字 我自己琢磨的代码出错了,请问老师是哪边错了呢

我的逻辑是抓取 ActiveWorkbook的名称 左边 算起 的10个字

比如: AA05012016.xlsm 我要抓取的是AA05012016

ActiveWorkbook.Name = Left(10) & ".xls"

顺带一提这个是另存的代码

请老师协助,谢谢了


最佳答案
2017-1-5 14:31
FName = Left(activeworkbook.name,10) & ".xls"
哈哈,爱风被你误导了。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-1-5 11:52 来自手机 | 显示全部楼层
ActiveWorkbook.Name = Left(10,activeworkbook.name) & ".xls"
回复

使用道具 举报

 楼主| 发表于 2017-1-5 12:12 | 显示全部楼层
本帖最后由 lotgot 于 2017-1-5 12:13 编辑
爱疯 发表于 2017-1-5 11:52
ActiveWorkbook.Name = Left(10,activeworkbook.name) & ".xls"

爱疯老师您好,根据您提供的代码我测试了会报错,错误信息为 :Run-time error '13' Type mismmatch

原代码是这样的,请看看是否其他代码引发的错误~

  1. Sub UpdateOnShareFolder()
  2. 'this is for ribbon update/save

  3.     'On Error Resume Next
  4.     Dim FName           As String
  5.     Dim FPath           As String
  6.     Dim NewBook         As Workbook

  7.     FPath = "\\11.1.1.1\CP\Ort\DZ\AD"
  8.     FName = ActiveWorkbook.Name = Left(10, ActiveWorkbook.Name) & ".xls"
  9.    
  10.     Set NewBook = Workbooks.Add

  11.     ThisWorkbook.Sheets("Addition").Copy Before:=NewBook.Sheets(1)
  12.    
  13.     ThisWorkbook.Sheets("Deduction").Copy Before:=NewBook.Sheets(2)
  14.    
  15.     NewBook.SaveAs Filename:=FPath & "" & FName
  16.    
  17.     NewBook.Close

  18. End Sub
复制代码
FName = ActiveWorkbook.Name = Left(10, ActiveWorkbook.Name) & ".xls"
这段出错了
非常感谢老师的耐心协助~谢谢了

回复

使用道具 举报

发表于 2017-1-5 12:16 来自手机 | 显示全部楼层
黄色这句改成

FName = Left(10,activeworkbook.name) & ".xls"

回复

使用道具 举报

 楼主| 发表于 2017-1-5 13:12 | 显示全部楼层
爱疯 发表于 2017-1-5 12:16
黄色这句改成

FName = Left(10,activeworkbook.name) & ".xls"

FName = Left(10,activeworkbook.name) & ".xls"

老师您好,刚刚测试了是同个错误信息~

回复

使用道具 举报

发表于 2017-1-5 14:31 | 显示全部楼层    本楼为最佳答案   
FName = Left(activeworkbook.name,10) & ".xls"
哈哈,爱风被你误导了。
回复

使用道具 举报

发表于 2017-1-5 14:42 | 显示全部楼层
本帖最后由 Excel学徒123 于 2017-1-5 15:15 编辑

对于字符数长度不一样的,有几种方法
1、用vba.StrReverse 反转文本,找到第一个\出现的位置,用left提取即可
2、用正则表达式 [^\\]+\.xlsx?$ 进行提取
3、对全名用Split对\进行分列,提取分列出来的数组的最后一个值,如arr(ubound(arr))





回复

使用道具 举报

发表于 2017-1-5 15:46 | 显示全部楼层
文件名(不包括点和扩展名)可能不是10个字符吗?
比如 123456789.xlsm


回复

使用道具 举报

 楼主| 发表于 2017-1-5 18:25 | 显示全部楼层
grf1973 发表于 2017-1-5 14:31
FName = Left(activeworkbook.name,10) & ".xls"
哈哈,爱风被你误导了。

谢谢grf老师解决了我的问题,也谢谢爱疯老师热心协助~感谢大家
回复

使用道具 举报

 楼主| 发表于 2017-1-5 18:26 | 显示全部楼层
Excel学徒123 发表于 2017-1-5 14:42
对于字符数长度不一样的,有几种方法
1、用vba.StrReverse 反转文本,找到第一个\出现的位置,用left提取 ...

学习了,谢谢老师
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 20:46 , Processed in 5.855560 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表