标签: access-vba

是否需要在VBA函数中将对象设置为Nothing

我总是读到,一旦我完成它们,建议将对象设置为空.但我通常只在表单内的函数中使用它们.

在保留功能范围时,是否丢失了引用并释放了内存,而不管将对象设置为Nothing?

即是否真的有必要这样做:

Set db = Nothing
Set record_set = Nothing
Run Code Online (Sandbox Code Playgroud)

ms-access vba office-2003 access-vba

62
推荐指数
3
解决办法
6万
查看次数

确定对象是否是VBA中集合的成员

如何确定对象是否是VBA中集合的成员?

具体来说,我需要找出表定义是否是TableDefs集合的成员.

collections ms-access vba object access-vba

60
推荐指数
4
解决办法
12万
查看次数

是否与VBA中的Thread.Sleep()等效

Thread.Sleep()在Access VBA中是否有相同的功能?

vba sleep access-vba

43
推荐指数
4
解决办法
8万
查看次数

如何在Outlook中添加默认签名

我正在Access中编写一个VBA脚本,用于创建和自动填充几十封电子邮件.到目前为止,它一直是流畅的编码,但我是Outlook的新手.创建mailitem对象后,如何将默认签名添加到电子邮件中

  1. 这将是创建新电子邮件时自动添加的默认签名.

  2. 理想情况下,我想使用ObjMail.GetDefaultSignature,但我找不到类似的东西.

  3. 目前,我正在使用下面的功能(在互联网上的其他地方找到)并引用htm文件的确切路径和文件名.但是这将由几个人使用,他们的默认htm签名文件可能有不同的名称.所以这可行,但它并不理想:

    Function GetBoiler(ByVal sFile As String) As String
    'Dick Kusleika
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
    End Function
    
    Run Code Online (Sandbox Code Playgroud)

    (称为getboiler(SigString = "C:\Users\" & Environ("username") & "\AppData\Roaming\Microsoft\Signatures\Mysig.txt"))

编辑

感谢JP(参见评论),我意识到默认签名首先出现,但是当我使用HTMLBody向电子邮件添加表格时它会消失.所以我想我现在的问题是:如何显示默认签名并仍显示html表?

Sub X()
    Dim OlApp As Outlook.Application
    Dim ObjMail As Outlook.MailItem

    Set OlApp = Outlook.Application
    Set ObjMail = OlApp.CreateItem(olMailItem)

    ObjMail.BodyFormat = olFormatHTML
    ObjMail.Subject = "Subject goes here"
    ObjMail.Recipients.Add …
Run Code Online (Sandbox Code Playgroud)

outlook vba access-vba outlook-vba

43
推荐指数
6
解决办法
21万
查看次数

x = x + 1的简写?

Sub btn1_Click()
Static value As Integer
value = value + 1
MsgBox value
End Sub
Run Code Online (Sandbox Code Playgroud)

我发誓当我在大学学习VB.net课程时,有一种较短的方法可以告诉变量为自己添加''.也许x = + 1.我现在使用Access而不是visual studio.当我在VBE中尝试它时,它会删除+.我甚至Option Explicit没有改变就删除了

假设答案是否定的,那么就没有办法简单地说它并且它只是一个特殊的VBA

ms-access vba access-vba

41
推荐指数
2
解决办法
11万
查看次数

如何反编译和重新编译数据库应用程序?

我有一个Access数据库应用程序,我想知道反编译和重新编译它的正确方法.

ms-access maintenance access-vba decompiler

35
推荐指数
5
解决办法
7万
查看次数

如何在Access 2007 VBA中显示"打开文件"对话框?

如何在Access 2007 VBA中显示打开的文件(或文件选择)对话框?

我已尝试使用Application.GetOpenFileName,就像在Excel中一样,但Access中不存在此功能.

ms-access access-vba

34
推荐指数
2
解决办法
19万
查看次数

如何使用Access/VBA复制到剪贴板?

在Access2003/2007中使用VBA.

如何将字符串变量的内容复制到剪贴板?

此站点建议创建一个零长度的TextBox,将字符串复制到TextBox,然后运行DoCmd.RunCommand acCmdCopy.啊.我的意思是,我们可能会走这条路.但仍然.啊.

虽然MS知识库文章向我们展示了如何操作,但它涉及许多Windows API调用.育.

那是唯一的两种选择吗?

windows clipboard ms-access vba access-vba

34
推荐指数
3
解决办法
15万
查看次数

我怎么说在VBA中不是空的

嗨,我有以下表达式.我想说"如果第二个字段不是空的".你能帮我吗.

谢谢

=Iif((Fields!approved.Value = "N" & Fields!W_O_Count.Value IsNotNull), "Red", "Transparent")
Run Code Online (Sandbox Code Playgroud)

null ms-access vba access-vba

33
推荐指数
2
解决办法
19万
查看次数

VBA:两种声明新对象的方式有何不同?(试图理解为什么我的解决方案有效)

我在循环中创建了一个新对象,并将该对象添加到集合中; 但是当我读回之后,它总是被我添加的最后一个对象填满.我想出了两种解决方法,但我根本不明白为什么我的初始实现是错误的.

原版的:

Dim oItem As Variant
Dim sOutput As String
Dim i As Integer

Dim oCollection As New Collection
For i = 0 To 10
    Dim oMatch As New clsMatch
    oMatch.setLineNumber i
    oCollection.Add oMatch
Next
For Each oItem In oCollection
    sOutput = sOutput & "[" & oItem.lineNumber & "]"
Next
MsgBox sOutput
Run Code Online (Sandbox Code Playgroud)

这导致每行数为10; 我显然没有创建新对象,而是每次通过循环使用相同的对象,尽管声明在循环内部.

所以,我在行Set oMatch = Nothing之前立即添加Next,这解决了问题,它现在是0到10.所以如果旧对象被明确销毁,那么它是否愿意创建一个新对象?我原以为通过循环的下一次迭代会导致循环中声明的任何东西因范围而被破坏?

好奇,我尝试了另一种声明新对象的方法:Dim oMatch As clsMatch: Set oMatch = New clsMatch.这也导致0到10.

任何人都可以向我解释为什么第一次实施是错误的?

syntax vba access-vba

30
推荐指数
2
解决办法
3万
查看次数