Questions tagged «vba»

Visual Basic应用程序;所有Microsoft Office应用程序中使用的Visual Basic的子集。考虑将该标签与该特定应用程序的标签一起使用。关于VBA的好问题通常包含一些代码,并要求解决特定问题。要求完整解决方案的问题(请给我代码/如何使用VBA做到这一点)不在主题之内,将因为过于广泛而封闭。

1
延迟Outlook 2010中的会议邀请 - vba
我正在尝试编写一个代码来安排会议邀请,并在以后的日期/时间自动延迟发送给参与者,即延迟发送会议邀请 下面是代码,但是我想在30分钟后发送邀请时发出错误。 错误行: Application.Wait(Now + TimeValue(“06:30:00”)) 真的很感谢这方面的帮助。非常感谢 Sub Book_meeting_room() Dim olApp As Outlook.Application Dim olApt As AppointmentItem Set olApp = Outlook.Application 'Creating Outlook Session Set olApt = olApp.CreateItem(olAppointmentItem) 'Creating an Appointment With olApt .MeetingStatus = olMeeting 'olAppointmentItem with Meeting status olMeeting 'becomes a OL Meeting Item. .Subject = "Room 1" …

1
Outlook-VBA用于打开所选任务列表项的包含文件夹
在Outlook 2013中,我使用“任务列表”侧栏: 从“ 邮件”屏幕中,选择“ 查看”功能区选项卡。 在“ 布局”功能区组中,单击“ 待办事项栏”下拉列表,然后选择“ 任务”。 我“标记”的邮件项目在此列表中可见。 如果有人可以提供VBA代码来打开所选任务项的包含文件夹,我将不胜感激。 我已经尝试了以下代码(源代码),但遗憾的是它有一个错误。 Public Sub GetItemsFolderPath() Dim obj As Object Dim F As Outlook.MAPIFolder Dim Msg$ Set obj = Application.ActiveWindow If TypeOf obj Is Outlook.Inspector Then Set obj = obj.CurrentItem Else Set obj = obj.Selection(1) End If Set F = obj.Parent …

1
将Outlook Exchange文件夹导出到Windows文件系统
目前使用VB宏将电子邮件文件夹拉到Windows文件系统,但它无法提取存储在交换服务器上的文件夹,这是否可能?使用下面的VB脚本 ' SET STARTING FOLDER IN FODLER CHOOSER AS USERS [P DRIVE] Const STARTING_FOLDER = "P:" Dim objFSO As Object ' [COPY] THE OUTLOOK FOLDER Sub CopyOutlookFolderToFileSystem() ExportController "Copy" End Sub ' [MOVE] THE OUTLOOK FOLDER Sub MoveOutlookFolderToFileSystem() ExportController "Move" End Sub ' [USER] SELECTION OF FOLDER TO SAVE MESSAGES …

2
跨3K行,9列删除重复项
我有3,800+的Excel 2010表。我想在6列中标识重复项,其中许多都带有文本,有些带有IP地址和主机名,以便反映出准确的数据。我尝试了旧的删除重复项,条件格式,使用VBA宏突出显示具有不同颜色的多行,合并列然后执行COUNTIFS和IF。不用说,对于数据类型,我没有一个能完全起作用。使用这组数据,目标是将列表减少1900个左右,因为我知道很多重复项(因为我故意将旧数据集和新数据集组合在一起,以便可以看到旧注释)。但是,最新方法仅减少了100 我想识别它们,然后能够将它们与原始图像一起过滤,然后能够通过突出显示并按Delete键轻松地从那里删除重复项。 有人做过这样的事吗?尽管我有技术背景,但我还是Excel初学者,请对新手友好地进行任何说明。如果有人有什么想法可以解决这种情况? 点击此处查看示例 想象一下,再加上3,000行。这些是我拥有的确切列数,数据类型相似。 我想根据A2&B2&E2&J2&L2减少重复项 谢谢, KMG 想象一下,再加上3,000行。这些是我拥有的确切列数,数据类型相似。 我想根据A2&B2&E2&J2&L2减少重复项

1
如何在Excel UDF中的RegEx排除组中包括双引号
借助于此,是否存在一个Excel公式来标识单元格中的特殊字符?VBA代码和excel UDF,我正在检查csv文件中的特殊字符。使用此公式: =RegExCheck([@ItemTitle],"[^\s,'.()!&%A-Za-z0-9é–_/©™®°¼½¾⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞•-]") 我可以添加我想在此部分中排除的任何字符 [^\s,'.()!&%A-Za-z0-9é–_/©™®°¼½¾⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞•-] 但是,它不接受"任何顺序的双引号。如何添加"在这 [^\s,'.()!&%A-Za-z0-9é–_/©™®°¼½¾⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞•-] Excel UDF中的排除组。 [^\s"A-Za-z0-9é_/©™®°¼½¾⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞•-]带有双引号的双引号在https://regexr.com/中的起始位置工作正常,但在excel 2019 (365)任何地方都无法正常工作。

1
工作表变更
我正在尝试将一个宏放在一个时间戳中。 我有2张纸input,dashboard 当单元格A2 input更改时,我希望现在在单元格M8上使用该函数dashboard 我在工作input表上按alt + F11调出vba编辑器并使用: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then Sheets("Dashboard").Select Range("M8").Select ActiveCell.FormulaR1C1 = "=NOW()" Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End If End Sub 它在以下行失败: Range("M8").Select 代码有什么问题?

1
MS Project根据状态字段更改行中的文本颜色
我希望根据“状态”字段中指示的内容更改整个行的文本颜色。 我搜索了其他论坛并找到了接近的解决方案,但是没有任何事情可以真正满足我的需求。我知道突出显示功能和条件格式,但是我无法让他们做我需要的事情。我大约在5年前编写了一些VB代码来完成此操作,但是我是一个新手,我花了大约5天的时间编写了非常基本的代码,但是当我离开上一份工作时,我丢失了它。:-( 因此,我希望仅使用一些VBA即可完成以下任务: 如果Status =“ Late”,则将行中的文本颜色设置为“ RED” 如果状态=“按计划”,则将行中的文本上色为“绿色” 如果Status =“ Future Task”,则将行中的文本涂成“ BLACK” 如果Status =“ Complete”,则将行中的文本上色为“ GRAY” 我很想获得进步,并具有以下类似内容:如果Status =“ On Schedule”,并且%完成度是<85%,并且“ Finish Date”是<5天以后,然后为“ ORANGE”行中的文本上色“

1
VBA从模板复制图表工作表
我有一个工作表图表,我想用作宏中的模板。我正在尝试复制工作表并将其分配给图表类型的对象,但无法使其正常工作。 代码下面是两行工作代码,用于创建或复制图表。 问题出在代码的最后一行。它会复制工作表,但是在进入下一行之前会出错(需要错误424对象)。 谁能解释为什么会这样,以及将工作表分配到一行的解决方案。 现在,我的解决方案是复制模板,然后将WS_chart3设置为活动表,如果可以避免的话,我只是不喜欢对活动表的引用。 Sub test() Dim WS_chart2 As Chart Dim WS_chart3 As Chart 'adds chart sheet but doesn't use a template Set WS_chart2 = Charts.Add(After:=Sheets(Sheets.Count)) 'adds sheet but doesn't asign in to variable WS_chart2 Sheets("template").Copy After:=Sheets(Sheets.Count) 'adds chart sheet but then errors out Set WS_chart3 = Sheets("template").Copy(After:=Sheets(Sheets.Count)) End …


1
如何使用宏对Excel列中的值进行分组和平均?
我是新来的,我一直在努力编写宏。我想知道是否有人可以帮助我制作/解释可以在我的数据集中使用的宏。 我有一个看起来像这样的Excel文件: 我基本上想要一个宏,它将通过“水果”列,认识到作为一个单独的水果,然后根据其“组”对水果的新鲜度求平均,然后在每个组的第一个单元格旁边声明平均值和组。 我觉得这是一个简单的宏,但我无法弄清楚。如何才能做到这一点? 谢谢!感激不尽!

0
如何知道何时关闭文件
我有一个脚本,可将一部分数据从一个文件复制到另一个文件。目标文件在用户之间共享。复制后,我保存并关闭目标文件,并发出“已更新”消息。 我的代码: ... Workbooks(CurrFile).Activate Worksheets(CurrHosp).Range("A1").Select Selection.PasteSpecial xlPasteValues TimeStamp = Now() ActiveSheet.Range("A5").Value = TimeStamp ActiveSheet.Range("A1").Select Workbooks(ModelFile).Close SaveChanges:=False Workbooks(CurrFile).Close SaveChanges:=True MsgBox ("Destination Updated") Else MsgBox ("No Source File Selected") End If Application.StatusBar = False Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub 今天,用户离开了她的办公桌,同时打开了“已更新”消息框。这使目标文件(Currfile)处于打开状态,从而阻止其他用户对其进行更新。 在发布Workbooks()。Close语句后,Excel实际上何时关闭文件?子例程完成后是吗?在发出“已更新”消息框之前,如何检测到它确实已关闭?

1
UDF中的Excel UDF产生#VALUE错误
首先,感谢nixda的哈希码! 我是VBA的新手。我正在尝试创建一个接受电子邮件地址并混淆用户名部分的函数,以便可以分发包含混淆后的电子邮件地址的报告。 我将以下内容放入VBA模块中: Private Function EncodeBase64(ByVal sTextToHash As String) Dim objXML As Object Dim objNode As Object Set objXML = CreateObject("MSXML2.DOMDocument") Set objNode = objXML.createElement("b64") objNode.DataType = "bin.base64" objNode.nodeTypedValue = arrData EncodeBase64 = objNode.Text Set objNode = Nothing Set objXML = Nothing End Function Public Function BASE64SHA1(ByVal sTextToHash As String) …

1
Excel VBA(2007)Range类的小计方法失败
当我尝试在Excel 2007中运行宏时,我得到Range类的小计方法失败错误。当我使用Excel 2003运行宏时,代码工作出色(无错误)。 这是一个片段... 'SubTotal Sheet Range("A1").Select Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 4, 5, 6, 7, _ 8, 9), Replace:=True, PageBreaks:=False, SummaryBelowData:=True 任何帮助,将不胜感激。

3
Excel-如何在大型文本中返回长度在7-10个字符之间的仅第一个数字字符串?(仅适用于公式)
我试图从每个都有大量文本的几个单元格中提取一些数字。 数字字符串在我尝试提取的数字字符串之前带有某些单词。 我曾尝试通过使用MID,LEFT,RIGHT,LEN,FIND和SEARCH之类的功能来解决问题,但最终结果还是错误的。 这是由于文本正文存在三个问题: 第一个问题是,每个单元格之前的单词都不相同。这将使公式变得非常复杂,并且需要IF,OR或AND函数。 第二个问题是我要提取的数字字符串的长度在7到10个数字之间变化 第三个问题是我要提取的仅数字字符串不是单元格正文中的唯一数字字符串 我目前的解决方案是在数字字符串少于10个数字的情况下添加数字以外的其他字符;例如空格,逗号和方括号。 因此,基本上我想知道是否有一种方法可以从文本正文中提取仅7至10个字符之间的仅第一个数字的字符串?最好仅使用公式,但VBA也是可能的。 想通了,因为我还没有收到回复,所以我将编辑带有数据示例的OP。 我要处理的数据示例可以在以下位置找到:https : //www.sendspace.com/file/f7kn6n 由于我有一段时间没有收到任何回复,因此我想用几天前上传的示例数据的屏幕快照进行更新。 示例数据

0
分开两行数据
我正在机器上进行数据测量(测量激光功率)它以10%的功率运行,然后是25%,50,75和100,两个单独的光学元件之间有冷却时间。每次跑步都不是恒定的长度,也不是冷却时间。所有数据都在一列中,数据范围非常一致。我试图在每个功率下获得每个光学元件的平均值。我把它们平均在一起,只需找到一种方法将数据基本上减少一半。 数据图 我在下面提供了我的代码: Sub test() Application.ScreenUpdating = False Range("D4", Range("D4").End(xlDown)) = "=ABS(RC[-1])" Range("e5", Range("e5").End(xlDown)) = "=R[1]C[-1]-RC[-1]" Range("f5", Range("f5").End(xlDown)) = "=IF(AND(ABS(R[0]C[-1])<2,R[1]C[-2]>12),INDEX(RC[-2]:R[19996]C[-2],R4C4),"""")" Range("G1") = WorksheetFunction.AverageIf(Range("f5", Range("f5").End(xlDown)), "<20") Range("H1") = WorksheetFunction.AverageIfs(Range("f5", Range("f5").End(xlDown)), Range("f5", Range("f5").End(xlDown)), "<100", Range("f5", Range("f5").End(xlDown)), ">60") Range("I1") = WorksheetFunction.AverageIfs(Range("f5", Range("f5").End(xlDown)), Range("f5", Range("f5").End(xlDown)), "<200", Range("f5", Range("f5").End(xlDown)), ">160") Range("J1") = WorksheetFunction.AverageIfs(Range("f5", Range("f5").End(xlDown)), Range("f5", …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.