小编0m3*_*m3r的帖子

运行宏excel后,"撤消"历史按钮清除

我有一个宏在"Worksheet_SelectionChange"事件中触发.宏验证一列的数据,如果错误则更改单元格的背景颜色.

问题是在运行宏之后,它清除了所有文档的更改历史(Ctrl Z),甚至是我未验证的其他单元格的历史更改.

我怎么解决这个问题?

谢谢.

excel vba excel-vba undo-redo

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

我可以在Access中隐藏"点击添加"列吗?

在数据表视图中查看Microsoft Access表时,最右侧的列标题为"单击以添加",允许某人在不使用"设计视图"的情况下添加新列.是否可以隐藏此列?

ms-access ms-access-2010

9
推荐指数
2
解决办法
9129
查看次数

条件编译的自动化错误

尝试加载Excel工作簿时发现奇怪的行为.

我有一个Excel-AddIn,用.NET Interop编写.它主要用于创建我自己的Ribbon-Tab,从菜单中加载工作簿并进行一些项目管理.

当我尝试使用两种方式打开工作簿时,我会得到不同的结果:

首先,当我从Addin中加载工作簿(Excel 2003-版本)时,一切正常.从功能区的Button-Event中,openWorkbook调用application.workbooks.open(...)加载项的公共函数,用于加载Excel工作簿.

这样,工作簿打开时没有错误.

其次,当我尝试使用以下代码从VBA中调用Addin-Function时:

Set addIn = Application.COMAddIns("WMExcelAddin1")
Set automationObject = addIn.Object
automationObject.openWorkbook (filename)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

编译错误

自动化错误

并且IDE在其中一个工作簿模块中第一次出现条件编译时停止,如下所示:

#const ebind = 0
[...]
sub proc1()

     #if ebind = 1 then         ' IDE Stops here
          [...]
     #else
          [...]
     #end if

end sub
Run Code Online (Sandbox Code Playgroud)

我试图使用布尔数据类型而不是具有相同效果的数字.

我的智慧结束了.

excel vba conditional-compilation excel-vba

9
推荐指数
1
解决办法
1008
查看次数

压缩zip存档本身以外的文件夹中的所有文件

我使用此代码将文件夹中的所有文件压缩到新创建的.zip文件中:

Dim FileNameZip, FolderName
Dim filename As String, DefPath As String
Dim oApp As Object

(defining all paths needed)

'Create empty Zip File
NewZip (FileNameZip)

Set oApp = CreateObject("Shell.Application")
'Copy the files to the compressed folder
oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(FolderName).items

'Keep script waiting until Compressing is done
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).items.Count = oApp.Namespace(FolderName).items.Count
    Application.Wait (Now + TimeValue("0:00:01"))
Loop
Run Code Online (Sandbox Code Playgroud)

只要我的目标文件夹与我的文件所在的文件夹不同,这就没有问题.

但是当我尝试从文件夹中取出所有文件,将它们放入并在同一文件夹中生成存档时,我遇到了问题 - 它创建了存档,然后尝试将其放入自身,这当然失败了..zip

我正在寻找一种方法来压缩文件夹中的所有文件,除了这个新创建的文件. …

windows directory zip vba excel-vba

9
推荐指数
2
解决办法
1155
查看次数

循环Excel表格

我有以下代码,我希望它在25个其他工作簿中运行,而不是重复代码25次,因为每个工作表有没有办法让它循环?

有人可以帮忙吗?

Sub DeleteEmptyRows()
Dim ws As Worksheet
Dim strSearch As String
Dim lRow As Long

strSearch = "ressort"

Set ws = Sheets("01,02,03")

With ws
    lRow = .Range("A" & .Rows.Count).End(xlUp).Row




    With .Range("A1:A" & lRow)
      .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
      .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With

   ActiveSheet.Range("$A$1:$P$65536").AutoFilter Field:=1

End With
End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

8
推荐指数
1
解决办法
3万
查看次数

Excel用值替换公式

我有一个Excel工作簿(1),大约有9张工作簿,可以从第二个工作簿中提取和操作数据(2).

从工作簿(2)中提取数据后,我需要能够将工作簿(1)中的公式替换为公式生成的结果值,然后从此处将结果保存在工作簿(1)中.

有没有可以为我做这个的宏?

excel vba excel-vba

8
推荐指数
1
解决办法
2万
查看次数

使用Excel中的VBA打开Outlook Mail .msg文件

我正在尝试使用VBA从指定目录打开.msg文件,但我不断收到运行时错误.

我有的代码:

Sub bla()
    Dim objOL As Object
    Dim Msg As Object
    Set objOL = CreateObject("Outlook.Application")
    inPath = "C:\Users\SiliconPlus\Desktop\Si+ Contact Lists\Contact_Si+"
    thisFile = Dir(inPath & "\*.msg")
    Set Msg = objOL.CreateItemFromTemplate(thisFile)
    ' now use msg to get at the email parts
    MsgBox Msg.Subject
    Set objOL = Nothing
    Set Msg = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)

这是运行时错误:

运行时错误'-2147287038(80030002)':

无法打开文件:AUTO Andy Low Yong Cheng不在办公室(2014年9月22日返回).msg.

该文件可能不存在,您可能没有权限打开它,或者它可能在另一个程序中打开.右键单击包含该文件的文件夹,然后单击"属性"以检查该文件夹的权限.

excel outlook vba outlook-vba

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

FileSystemObject.CreateFolder用于创建目录和子目录

我想用以下代码创建一个目录和一个子目录:

Public fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
fso.CreateFolder ("C:\Users\<my_username>\DataEntry\logs")
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建嵌套目录.在这种情况下,该DataEntry目录将不存在,所以基本上我想创建2个目录,DataEntry\logsC:\Users\<username>

如果我输入命令提示符,我可以创建该目录而mkdir没有任何问题.但是,我根本无法让VBA创建该文件夹,我得到:

Run-time error '76':

Path not found                        
Run Code Online (Sandbox Code Playgroud)

我使用的是Excel VBA 2007/2010

excel vba excel-vba

8
推荐指数
2
解决办法
9464
查看次数

正则表达式 - 重复捕获组

我试图找出如何comma-separated在以下url字符串中的值上重复捕获组:

id=1,2;name=user1,user2,user3;city=Oakland,San Francisco,Seattle;zip=94553,94523;

我正在使用这RegExp是我想要的返回结果,除了值,因为它们是动态的,即.可能是url参数中的2,3,4等用户,并且想知道我是否可以为每个值而不是一个捕获组创建user1,user2,user3捕获组.

正则表达式: (^|;|:)(\w+)=([^;]+)*

这是使用RegExp在线的现场演示

示例输出:

  • 第1组 - (分号,冒号)
  • Group2 - (密钥即.id,名称,城市,邮编)
  • Group3 - (value1)
  • Group4 - (value2)*如果存在
  • Group5 - (value3)*如果存在
  • Group6 - (value4)*如果存在

等...基于我之前解释过的动态值.

问题:我的表达式错误我正在使用*循环来重复模式?

javascript regex capture-group

8
推荐指数
1
解决办法
5797
查看次数

读取额外行中的VBA TextStream对象结果

使用Ron de Bruin 的RangeToHTML函数,我将一个范围粘贴到Outlook电子邮件中.但是,似乎正在将一个额外的空白行粘贴到电子邮件中,如下所示:在此输入图像描述

我已经确认该Source:=TempWB.Sheets(1).UsedRange.Address行正确地只抓取数据本身而不是额外的行.我也确认输入范围RangetoHTML()也是正确的.我唯一的猜测是该.ReadAll方法以某种方式在文件中添加了一行,但我不知道如何调试它.这是RangetoHTML我正在使用的功能,以便于参考:

Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook

Application.ScreenUpdating = False
Application.EnableEvents = False

TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

'Copy the range and create a new workbook to past the data in
If rng Is Nothing Then GoTo Skip

rng.Copy
Set TempWB …
Run Code Online (Sandbox Code Playgroud)

excel outlook vba object excel-vba

8
推荐指数
1
解决办法
572
查看次数