ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

快来参加 Excel VBA 秘笈接龙

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-2 11:31 | 显示全部楼层

为Application.FileSearch的LookIn与Filename属性指定多个条件

本帖已被收录到知识树中,索引项:数据类型和基本语句

Application.FileSearch的LookIn属性指定多个文件夹,其具体方法是在各文件夹名称之间使用分号;进行分隔,

Filename 属性的使用方法也与LookIn方法一样,也是使用分号;对之进行分隔

示例:
Sub Test()

With Application.FileSearch
    .NewSearch
    .LookIn = "D:\;D:\我的作品"
    .Filename = "*.xls;*.xla"
    If .Execute > 0 Then
        MsgBox "共找到 " & .FoundFiles.Count & " 个符合条件的文件.现在立即窗口中打印文件名."
        For i = 1 To .FoundFiles.Count
            Debug.Print .FoundFiles(i)
        Next i
    Else
        MsgBox "找不到符合条件的文件."
    End If
End With

End Sub
   

TA的精华主题

TA的得分主题

发表于 2006-8-2 12:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用fanjy在2006-8-1 13:42:40的发言:

VBA的帮助系统中,对PrintPreview方法的语法为expression.PrintPreview,显示打印预览,但并没有指出它可以带参数。在对象浏览器中,出现的PrintPreview方法带有可选的参数EnableChanges,但没其用法说明。其实EnableChanges参数可用于禁用显示在Excel的“打印预览”窗口中的“设置”和“页边距”按钮。

例如:ActiveSheet.PrintPreview Enablechanges:=False

     ActiveChart.PrintPreview Enablechanges:=False

Excel 物件模型參考 (Visual Studio Tools for Office) 
Worksheet.PrintPreview 方法 

參數

EnableChanges

http://msdn2.microsoft.com/zh-cn/library/microsoft.office.tools.excel.xmlmappedrange.printpreview.aspx

TA的精华主题

TA的得分主题

发表于 2006-8-2 14:53 | 显示全部楼层

关于Dialogs集合对象

VBA帮助系统中,对Dialogs对象集合的介绍为Dialog对象所能做的唯一有用的事情是将其与show方法共用,以显示相应的内置对话框,不是很详细,下面补充几点

1、在帮助文档中有一个示例为:

可用Dialogs(index)返回单个Dialog对象,其中index为用于标识对话框的内置常量。下例运行文件菜单中的内置打开对话框。

dlgAnswer = Application.Dialogs(xlDialogOpen).Show

变量dlgAnswer的值并不会包含所打开的文件名称,而只是返回True(若选择一个文件并按“确定”按钮打开)或者False(单击“取消”按钮)

2、通过VBA代码显示的Excel对话框不一定总是与使用Excel的菜单命令所显示的对话框的效果完全一样。例如,下面的代码显示“定位”对话框:

Application.Dialogs(xlDialogFormulaGoto).Show

但是所显示的“定位”对话框中,“定位条件”按钮是灰色的,不可以通过单击它显示“定位条件”对话框。如果您要显示“定位条件”对话框,可使用语句:

Application.Dialogs(xlDialogSelectSpecial).Show

3、使用VBA代码不能正确显示一些带有选项卡的对话框,一次只能显示其中一个选项卡对话框。例如,无法显示带选项卡的“单元格格式”对话框,一次只能显示其中一个选项卡,下面的语句显示“单元格格式”对话框中的“对齐”选项卡:

Application.Dialogs(xlDialogAlignment).Show

4、大部分内置对话框还接受参数,这些参数通常对应于对话框上的控件。例如,“单元格格式”保护对话框(可使用xlDialogCellProtection常量调出)接受两个参数:locked, hidden,如果要显示出两个选项都选中的该对话框,可使用下面的语句:

Application.Dialogs(xlDialogCellProtection).Show True, True

VBA帮助文档中的内置对话框参数列表显示了内置对话框的常量名和参数,但帮助文档中并没有解释这些参数的用法,因此,如果您要使用这些参数的话,需要结合Excel菜单命令所显示的对话框进行反复试验,直至正确。

TA的精华主题

TA的得分主题

发表于 2006-8-4 10:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

关于AdvancedFilter 方法

VBA的帮助文档中关于AdvancedFilter 方法的语法为:

expression.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)

其中,参数CriteriaRange的说明为:Variant 类型,可选。条件区域。如果省略本参数,则没有条件限制。其实,在Excel2003中这样说并不正确。如果没有指定条件区域,AdvancedFilter方法将从前面的AdvancedFilter方法中继承CriteriaRange,如果您不想这样的话,应当在代码中包含CriteriaRange:=” ”来清除前面的值。此外,在同一模块的不同子程序中,如果在前一子程序中已使用AdvancedFilter方法,而另一子程序中没有指定参数CriteriaRange,则该子程序也将从前一子程序的AdvancedFilter方法继承CriteriaRange参数。

例如,在单元格A1B9区域中输入源数据,在单元格D1D2区域中输入高级筛选条件,然后对参数CriteriaRange分三种情况进行筛选,分别将筛选结果至单元格F1H1J1中,第一种情况和第二种情况结果相同,表明参数CriteriaRange继承了前面的条件,而第三种方法由于代码中包含CriteriaRange:=” ”清除了前面的条件设置,因而得到不同结果。源代码如下,您可以输入数据进行测试。

Sub 筛选示例()

  Dim ORange As Range

  Dim TRange As Range

Dim NRange As Range

  Dim NRange1 As Range

  Dim NRange2 As Range

 

  Set ORange = Range("A1:B19")

  Set TRange = Range("D1:D2")

  Set NRange = Range("F1")

  Set NRange1 = Range("H1")

  Set NRange2 = Range("J1")

 

第一种情况

  ORange.AdvancedFilter action:=xlFilterCopy, _

  criteriarange:=TRange, copytorange:=NRange, unique:=True

 

第二种情况

   ORange.AdvancedFilter action:=xlFilterCopy, _

  copytorange:=NRange1, unique:=True

 

   第三种情况

    ORange.AdvancedFilter action:=xlFilterCopy, _

  criteriarange:="", copytorange:=NRange2, unique:=True

 

End Sub

TA的精华主题

TA的得分主题

发表于 2006-8-9 23:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

[原创]检查工作表是否保护

里面介绍了三种方法来检查工作表是否保护

一种是利用属性,一种是宏表函数,另一种就是另类方法.哈哈,看了就知道了.希望能配得上这个帖的帖名!

引自通用网址:  http://yigepure.blog.excelhome.net/user1/yigepure/archives/2006/564.html

18Lk3VBt.rar (12.66 KB, 下载次数: 90)


[此贴子已经被作者于2006-8-9 23:32:06编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-10 00:11 | 显示全部楼层

[原创]

[原创]不打开工作薄取数据

有时我们需要的数据在其它的工作薄里,如何做到不打开工作薄取数据呢?

本附件内详细演示了如何利用Application.ExecuteExcel4Macro方法做到!

以前写的东西,好东西不少,陆续拿出来与大家分享!

v0SGmtqo.rar (14.15 KB, 下载次数: 338)

TA的精华主题

TA的得分主题

发表于 2006-8-10 10:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用yigepure在2006-8-9 23:30:38的发言:

[原创]检查工作表是否保护


如果确定要如何保护工作簿或工作表
 

http://support.microsoft.com/kb/161245/zh-cn

示例 1: 确定是否是保护工作簿

Dim X As Boolean

   Sub Test_Workbook_Protection()

       X = False

       If ActiveWorkbook.ProtectWindows Then X = True
       If ActiveWorkbook.ProtectStructure Then X = True

       If X = False Then
           MsgBox "The workbook is not protected."
       Else
           MsgBox "The workbook is protected."
       End If

   End Sub

例 2: 确定是否工作表被保护

Sub Test_Worksheet_Protection()

       X = False

       If ActiveSheet.ProtectContents Then X = True
       If ActiveSheet.ProtectDrawingObjects Then X = True
       If ActiveSheet.ProtectScenarios Then X = True

       If X = False Then
           MsgBox "The worksheet is not protected."
       Else
           MsgBox "The worksheet is protected."
       End If

   End Sub

[此贴子已经被作者于2006-8-10 17:50:40编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-10 10:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

俺喜欢36楼的不打开工作薄取数据贴。

嘿嘿,版主应该考虑加个精华。

TA的精华主题

TA的得分主题

发表于 2006-8-10 12:43 | 显示全部楼层
QUOTE:

[原创]不打开工作薄取数据

chijanzen 發表於:2005.03.13 06:39

H0035 從其他檔案匯入資料-ExecuteExcel4Macro

http://www.vba.com.tw/plog/post/1/169

Sub TestReadDataFromWorkbook()
    Dim r As Variant, s As String, n As Long
    '寫入標題列
    For j = 1 To 3
        Cells(3, j) = GetValue(ThisWorkbook.path, "test2.xls", "Sheet1", Cells(1, j).Address(0, 0))
    Next
    i = 2
    k = 3
    Do
        '取得日期欄
        r = GetValue(ThisWorkbook.path, "test2.xls", "Sheet1", Cells(i, 1).Address(0, 0))
        '取得品名欄
        s = GetValue(ThisWorkbook.path, "test2.xls", "Sheet1", Cells(i, 2).Address(0, 0))
        '取得數量欄
        n = GetValue(ThisWorkbook.path, "test2.xls", "Sheet1", Cells(i, 3).Address(0, 0))
        If r = 0 Then Exit Do  '最後一列跳出
        If Month(CDate(r)) = 10 Then  '篩選10月份資料
            k = k + 1
            Cells(k, 1) = CDate(r)
            Cells(k, 2) = s
            Cells(k, 3) = CLng(n)
        End If
        i = i + 1
    Loop
End Sub



Private Function GetValue(path, file, sheet, range_ref)
    Dim arg As String
    If Right(path, 1) <> "" Then path = path & ""
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
            Range(range_ref).Range("A1").Address(, , xlR1C1)
    GetValue = ExecuteExcel4Macro(arg)
End Function    



Private Function GetValue(path, file, sheet, range_ref)
    Dim arg As String
    If Right(path, 1) <> "" Then path = path & ""
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
            Range(range_ref).Range("A1").Address(, , xlR1C1)
    GetValue = ExecuteExcel4Macro(arg)
End Function    

TA的精华主题

TA的得分主题

发表于 2006-8-10 13:00 | 显示全部楼层
QUOTE:
以下是引用lotustower在2006-8-10 10:04:23的发言:

例 2: 确定是否工作表被保护

Sub Test_Worksheet_Protection()

       X = False

       If ActiveSheet.ProtectContents Then X = True
       If ActiveSheet.ProtectDrawingObjects Then X = True        '这个2003下不适应
       If ActiveSheet.ProtectScenarios Then X = True                 '这个2003下不适应

       If X = False Then
           MsgBox "The worksheet is not protected."
       Else
           MsgBox "The worksheet is protected."
       End If

   End Sub

另关于

chijanzen 發表於:2005.03.13 06:39

H0035 從其他檔案匯入資料-ExecuteExcel4Macro

http://www.vba.com.tw/plog/post/1/169

?晕菜,这可是我花了一个星期的时间才想到的方法[em06],看来知道搜索是一件多么重要的事情呀!看来以后发帖要小心了!

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

本版积分规则

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

GMT+8, 2024-4-28 12:59 , Processed in 0.039700 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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