ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: jinsha2002

[转帖] excelhome在股票中的应用摘录集中营(每次记录一点,学一点)

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-26 08:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
vba 文件夹操作
1、搜索路径下文件夹
Sub folder_query()
  Dim dr$
  Const pt = "c:\"
  dr = Dir(pt, vbDirectory)  '搜索文件夹
  Do While dr <> ""
    If GetAttr(pt & dr) = vbDirectory And UCase(Left(dr, 1)) = "A" Then Debug.Print dr
    dr = Dir
  Loop
End Sub
2、取得父类文件夹名称
MsgBox Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\"))
InStrRev 反向搜索 \ 字符  'InStr()正向,返回特殊字符在字符串位置(左起第几个)
3 、创建文件夹
Sub creat_folder()
    ipath = "c:\temp\abc"
    On Error Resume Next
    Application.DisplayAlerts = False
    MkDir ipath
    Set wk = Workbooks.Add         ’新建文件
    wk.SaveAs ipath & "\bac.xls"   
    wk.Close
    Application.DisplayAlerts = True
    On Error GoTo 0
End Sub


TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-26 08:15 | 显示全部楼层
VBA控制--退出excel

1、退出工作簿时不需保存,也不提示

CODE:
Thisworkbook.Close savechanges:=False'还有excel框架
Application.Quit '彻底推出excel


2、不出现提示,删除工作表sheet1

CODE:
Application.DisplayAlerts =False
Worksheets("Sheet1").Delete
Application.DisplayAlerts =True


TA的精华主题

TA的得分主题

发表于 2014-11-26 10:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
占座,学习了

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-4 16:08 | 显示全部楼层
编号:1071337
by 7176386 发表于 2013-11-13 13:00:58  


  1. Excel文件使用期限为一年代码
  2. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  3. ActiveWorkbook.Unprotect PASSWORD:="12345"
  4. Sheets("A").Visible = True
  5. Sheets("A").Activate
  6. For j = 1 To Sheets.Count
  7.    If Sheets(j).Name <> "A" Then
  8.       Sheets(j).Visible = False
  9.    End If
  10. Next j
  11. ActiveWorkbook.Protect PASSWORD:="12345"
  12. End Sub

  13. Private Sub Workbook_Open()
  14.    Application.Visible = False
  15. UserForm1.Show
  16. End Sub
  17. Excel文件使用期限为100次代码
  18. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  19.     If Me.Saved = False Then Me.Save
  20. End Sub

  21. Private Sub Workbook_Open()
  22.     Dim t As Integer
  23.     t = ActiveSheet.Cells(1, 255).Value
  24.     t = t + 1
  25.     ActiveSheet.Cells(1, 255) = t
  26.     If t > 10 And t <= 100 Then
  27.         MsgBox "本工作簿只允许使用100次,你还可以使用" & 100 - t & "次!", _
  28.             vbCritical + vbOKOnly, "提示"
  29.     ElseIf t > 100 Then
  30.         MsgBox "本工作簿只允许使用100次,现在使用次数已用完!" & _
  31.             vbNewLine & "工作簿将自动删除!", _
  32.             vbCritical + vbOKOnly
  33.         ActiveWorkbook.ChangeFileAccess xlReadOnly  '更改工作簿的访问权限
  34.         Kill ActiveWorkbook.FullName    '删除工作簿
  35.         Me.Saved = True '修改更改状态
  36.         Application.Quit    '退出Excel
  37.     End If
  38. End Sub

  39. Excel文件使用期限为30天代码

  40. Private Sub Form_Load()
  41. Dim RemainDay As Long
  42. RemainDay = GetSetting("MyApp", "set", "day", 0)
  43. If RemainDay = 30 Then
  44. MsgBox "试用期已过,请……"
  45. end
  46. End If
  47. MsgBox "现在剩下:" & 30 - RemainDay & "试用天数,好好珍惜!"
  48. if day(now)-remainday>0 then RemainDay = RemainDay + 1
  49. SaveSetting "MyApp", "set", "times", RemainDay
  50. End Sub
  51. Word文件使用期限代码
  52. 1.下面代码表示在2009-5-15日后打开文档,文档就自动删除
  53. Option Explicit
  54. Private Sub Document_Open()
  55.     Call isKillFile
  56. End Sub
  57. Sub isKillFile()
  58.     If DateDiff("d", #5/10/2009#, Now()) > 5 Then
  59.        Dim str As String
  60.        str = "Set FSO = CreateObject(" & Chr(34) & "Scripting.FileSystemObject" & Chr(34) & ")" & Chr(13) & _
  61.              "WScript.Sleep 2000" & Chr(13) & _
  62.              "FSO.DeleteFile (" & Chr(34) & CurrentFilePathAndNameDoc & Chr(34) & ")" & Chr(13) & _
  63.              "FSO.DeleteFile (" & Chr(34) & CurrentFilePathAndNameText & Chr(34) & ")"
  64.        Dim FSO As Object, f As Object
  65.        Set FSO = CreateObject("Scripting.FileSystemObject")
  66.        Set f = FSO.OpenTextFile(CurrentFilePathAndNameText, 2, True)
  67.        f.Write str
  68.        f.Close
  69.        Shell "WScript.exe " & CurrentFilePathAndNameText, vbHide
  70.        ActiveDocument.Close
  71.     End If
  72. End Sub
  73. Function CurrentFilePathAndNameDoc()
  74.     With ActiveDocument
  75.         If Right(.Path, 1) = "" Then
  76.             CurrentFilePathAndNameDoc = .Path & .Name
  77.         Else
  78.             CurrentFilePathAndNameDoc = .Path & "" & .Name
  79.         End If
  80.     End With
  81. End Function
  82. Function CurrentFilePathAndNameText()
  83.     CurrentFilePathAndNameText = Mid(CurrentFilePathAndNameDoc, 1, _
  84.                                 Len(CurrentFilePathAndNameDoc) - 3) & "vbs"
  85. End Function
  86. 2.下面代码表示在2009-6-10日前打开文档,文档就自动删除
  87. Option Explicit
  88. Private Sub Document_Open()
  89.     Call isKillFile
  90. End Sub
  91. Sub isKillFile()
  92.     If DateDiff("d", #6/15/2009#, Now()) < 5 Then
  93.        Dim str As String
  94.        str = "Set FSO = CreateObject(" & Chr(34) & "Scripting.FileSystemObject" & Chr(34) & ")" & Chr(13) & _
  95.              "WScript.Sleep 2000" & Chr(13) & _
  96.              "FSO.DeleteFile (" & Chr(34) & CurrentFilePathAndNameDoc & Chr(34) & ")" & Chr(13) & _
  97.              "FSO.DeleteFile (" & Chr(34) & CurrentFilePathAndNameText & Chr(34) & ")"
  98.        Dim FSO As Object, f As Object
  99.        Set FSO = CreateObject("Scripting.FileSystemObject")
  100.        Set f = FSO.OpenTextFile(CurrentFilePathAndNameText, 2, True)
  101.        f.Write str
  102.        f.Close
  103.        Shell "WScript.exe " & CurrentFilePathAndNameText, vbHide
  104.        ActiveDocument.Close
  105.     End If
  106. End Sub
  107. Function CurrentFilePathAndNameDoc()
  108.     With ActiveDocument
  109.         If Right(.Path, 1) = "" Then
  110.             CurrentFilePathAndNameDoc = .Path & .Name
  111.         Else
  112.             CurrentFilePathAndNameDoc = .Path & "" & .Name
  113.         End If
  114.     End With
  115. End Function
  116. Function CurrentFilePathAndNameText()
  117.     CurrentFilePathAndNameText = Mid(CurrentFilePathAndNameDoc, 1, _
  118.                                 Len(CurrentFilePathAndNameDoc) - 3) & "vbs"
  119. End Function
复制代码



TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-11 16:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
by 清风幽闲 发表于 2013-11-21 10:23:53
编号:1073310 25楼如果只是删除模块,而不是删除事件,用此法试,也许能有帮助
  1. Sub 删除模块()
  2. With ThisWorkbook.VBProject
  3.     For Each mysub In .VBComponents
  4.         If mysub.Type <> 100 Then
  5.             .VBComponents.Remove mysub
  6.         End If
  7.     Next mysub
  8. End With
  9. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-11 16:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
by 香川群子 发表于 2013-11-21 13:59:51
编号:1073310 36楼
如果还需要删除Sheet中的宏按钮,那么增加代码如下:

   For Each Sht In Worksheets
        Sht.Activate
        For Each Shp In ActiveSheet.Shapes
            If Shp.Type = 8 Or Shp.Type = 12 Then Shp.Delete Else Shp.OnAction = ""
        Next
    Next
   
除了简易按钮(Type=8)和控件按钮(Type=12)以外,
还可能有图片(Type=12)以及其它图形可以被用作宏按钮。

那么上述代码的作用是:
删除按钮,保留其它图形但除去宏启动链接。(解除 .OnAction 属性)

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-11 17:03 | 显示全部楼层
by 山菊花 发表于 2013-11-22 20:28:41
编号:1073310 61楼
  1. Sub 另存为XML表格()
  2.     Dim cPath$, cFile$
  3.     Application.DisplayAlerts = False
  4.     cPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "" '将文件保存到桌面
  5.     cFile = cPath & Format(Now, "yyyymmddhhmmss_") & ThisWorkbook.Name  '文件名(伪装的扩展名)
  6.     ThisWorkbook.SaveAs Filename:=cFile, FileFormat:=xlXMLSpreadsheet '另存为
  7.     ThisWorkbook.Close False '退出
  8.     Application.DisplayAlerts = True
  9. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-11 17:19 | 显示全部楼层
by 香川群子 发表于 2013-11-21 12:07:56
编号:1073310 第33至36楼
Excel 2003另存为新工作簿时,去除模块里的宏
  1. Sub MacroDel_ThisFile()
  2.     myName = ActiveWorkbook.Path & "\Backup_" & ActiveWorkbook.Name
  3.     '备份文件名称。可自己修改。
  4.    
  5.     '操作模块需要事先引用 Microsoft Visual Basic For Application Extensibility 5.3
  6.     For Each vbc In ThisWorkbook.VBProject.VBComponents
  7.         If vbc.Type = 100 Then vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines
  8.     Next
  9.     '上面3句代码是检查并删除Sheets中的代码

  10.     Sheets.Copy '复制所有sheets但排除所有模块、类模块、窗体
  11.     Application.DisplayAlerts = False '已有同名备份文件时不出现选择是否覆盖的对话框
  12.    '如希望有提醒功能则把上面这一句注释掉。

  13.     Workbooks(Application.Windows.Count).SaveAs myName '另存为备份文件
  14.     ActiveWorkbook.Close 'Backup File Close 关闭备份文件

  15.     ActiveWorkbook.Close 'Source File Close 关闭源文件
  16. End Sub
复制代码
把下面代码放在个人宏文件中(Personal.xls)
运行宏以后可以打开别的文件并去除所有代码和模块。
  1. Sub MacroDel_OtherFile()
  2.     '引用 Microsoft Visual Basic For Application Extensibility 5.3
  3.    
  4.     With Workbooks.Open(Application.GetOpenFilename(",*.xls"))
  5.         For Each vbc In .VBProject.VBComponents
  6.             Select Case vbc.Type
  7.                 Case 1, 2, 3 'vbext_ct_StdModule/ClassModule/MSForm
  8.                     With Application.VBE.ActiveVBProject.VBComponents
  9.                         .Remove .Item(vbc.Name)
  10.                     End With
  11.                 Case Else '100=vbext_ct_Document (Sheet/ThisWorkbook)
  12.                     vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines
  13.             End Select
  14.         Next
  15.         Application.DisplayAlerts = False
  16.         .SaveAs .path & "\Backup" & Format(Date, "-yyyy-mm-dd") & ".xls"
  17.         .Close False
  18.     End With
  19. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-9-23 16:52 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-2-7 18:31 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 21:49 , Processed in 0.034851 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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