Excel精英培训网

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

[已解决]求保存的代碼修改

[复制链接]
发表于 2013-7-27 08:44 | 显示全部楼层 |阅读模式
本帖最后由 010203400 于 2013-7-27 08:53 编辑

如下代碼,因為是不同的人要用這個宏,所以每個人的存放路徑會不一樣,但都是存在舊面上,
系統也有可能不一樣,有的是XP的,有的是WIN 7的,反正都是WINDOWS的。

另外,存放的文件名要用當天的日期(mm.dd的格式)加上Sheet的名字及固定的字符,例:
07.27 2021abcdefgh
以上,07.27是當天的日期,并且中間是有點的;2021是Sheet的名字;abcdefgh是固定的字符。

EXCEL是保存為 .xls 格式的,保存后有一個提示信息,如:MSGBOX"檔案已經保存在舊面,文件名為:07.27 2021abcdefgh。"

以上,請好人幫忙修改,感謝!
  1. Sub SaverExcel()

  2.     ChDir "C:\Users\greendong\Desktop"
  3.     ActiveWorkbook.SaveAs Filename:="C:\Users\greendong\Desktop\sony - 狡籹 (20).xls", _
  4.     FileFormat:=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
  5.    
  6. End Sub
复制代码
最佳答案
2013-7-28 01:32
010203400 发表于 2013-7-27 11:25
如下備注,問題有點多,請幫忙確認可如何克服,感謝!

Sub SaverExcel()

"舊面"是指"桌面"吗?要存在不同机器的桌面,可以用:CreateObject("WScript.Shell").SpecialFolders("Desktop")

另外我估计你是想要工作表(Sheet)的名字,而不是工作簿的(Workbook)的名字吧,整个代码可如下:
  1. Sub SaveExcel()
  2.     Dim DTadd As String, sDate As String, sName As String
  3.     DTadd = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator
  4.     sDate = Format(Date, "mm.dd")
  5.     sName = DTadd & sDate & " " & ActiveSheet.Name & " abcdefgh.xls"
  6.     Application.DisplayAlerts = False
  7.     ActiveWorkbook.SaveAs sName
  8.     MsgBox "檔案已經保存在舊面,文件名為: " & sName
  9. End Sub
复制代码
所以,你的问题二和三也回答了: ThisWorkbook.Name 是代表代码所在的工作簿的名字, 而工作簿中的当前活动工作表的名称即为: ActiveSheet.Name. 没有ThisWorkbookSheet.Name这个东西.

如果你想要的是工作簿名而不是工作表名,可以将以上代码中的这一句:
    sName = DTadd & sDate & " " & ActiveSheet.Name & " abcdefgh.xls"
替换成:
    sName = DTadd & sDate & " " & ThisWorkbook.Name & " abcdefgh.xls"

看看效果你就明白了.
发表于 2013-7-27 09:19 | 显示全部楼层

不知你那个sheet是不是工作簿,如果不是的话还要改

本帖最后由 殿堂之上 于 2013-7-27 09:22 编辑
  1. Sub SaverExcel()

  2.    ChDir "C:\Users\greendong\Desktop"
  3.     ActiveWorkbook.SaveAs Filename:=" C:\Users\greendong\Desktop" & Format(Date, "mm.dd") & ThisWorkbook.Name & "abcdefgh.xls", FileFormat:= _
  4.     xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
  5.     MsgBox "檔案已經保存在舊面,文件名為:" & Chr(10) & Format(today, "mm.dd") & ThisWorkbook.Name & "abcdefgh.xls"
  6. End Sub
复制代码
回复

使用道具 举报

发表于 2013-7-27 13:55 | 显示全部楼层
ChDir 语句 语法:ChDir path 
功能:改变当前的目录或文件夹。  说明:ChDir 语句改变缺省目录位置,但不会改变缺省驱动器位置。缺省驱动器一般是C。
Chr(10) 这个是换行符,相当于回国
回复

使用道具 举报

发表于 2013-7-28 01:32 | 显示全部楼层    本楼为最佳答案   
010203400 发表于 2013-7-27 11:25
如下備注,問題有點多,請幫忙確認可如何克服,感謝!

Sub SaverExcel()

"舊面"是指"桌面"吗?要存在不同机器的桌面,可以用:CreateObject("WScript.Shell").SpecialFolders("Desktop")

另外我估计你是想要工作表(Sheet)的名字,而不是工作簿的(Workbook)的名字吧,整个代码可如下:
  1. Sub SaveExcel()
  2.     Dim DTadd As String, sDate As String, sName As String
  3.     DTadd = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator
  4.     sDate = Format(Date, "mm.dd")
  5.     sName = DTadd & sDate & " " & ActiveSheet.Name & " abcdefgh.xls"
  6.     Application.DisplayAlerts = False
  7.     ActiveWorkbook.SaveAs sName
  8.     MsgBox "檔案已經保存在舊面,文件名為: " & sName
  9. End Sub
复制代码
所以,你的问题二和三也回答了: ThisWorkbook.Name 是代表代码所在的工作簿的名字, 而工作簿中的当前活动工作表的名称即为: ActiveSheet.Name. 没有ThisWorkbookSheet.Name这个东西.

如果你想要的是工作簿名而不是工作表名,可以将以上代码中的这一句:
    sName = DTadd & sDate & " " & ActiveSheet.Name & " abcdefgh.xls"
替换成:
    sName = DTadd & sDate & " " & ThisWorkbook.Name & " abcdefgh.xls"

看看效果你就明白了.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 00:28 , Processed in 0.394006 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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