Questions tagged «vba»

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


1
如何在excel中获取文件大小?
我在一个单元格中有大量数据,下一个单元格中有文档的URL。我想获取文档的大小。在Excel中有可能吗? 例如: -------------------------------------------- | Cell A | Cell B | |------------------------------------------| | http://m---.com/myfile.txt | 4kbs | |------------------------------------------| | http://m---.com/myfile.txt | 10kbs | |------------------------------------------| | http://m---.com/myfile.doc | 104kbs | |------------------------------------------| | http://m---.com/myfile.jpg | 102kbs | |------------------------------------------| 我只在列中有URL列表A,我希望列中的文件大小B。 我为此尝试了VBA代码,但它不起作用。还有一件事,我刚从互联网上获取此代码,而不是我的代码,但它没有用。这是代码: print file path Cells(i + 1, 1) = objFile.Path 'print size Cells(i + …

2
在excel中向右或向左移动选定的单元格数据,而不使用剪切+粘贴或复制和粘贴。使用箭头键移动数据会很棒
嗨我想知道如何运行VBA或宏(或任何其他更简单的方法)来移动任何当前选择的值(从一行中的一个单元格到多个单元格和跨行,列的选择)从excel到正确的一列或左一列。 简而言之,我正在准备一份建筑实践的预测表。它的工作方式与Microsoft项目的工作方式相同,其中时间轴行显示在多个月份列中。当项目时间表发生变化时,我需要能够选择一行数据,单个或多个单元格,并仅将所选数据移动一列。从前一个单元格位置删除数据也很棒(仅从本质上剪切和粘贴数据) 我不能使用复制和粘贴复制数据 选择并拖动边界框的边缘,四星光标采用公式,连接和格式 见附图 - 想象4月19日和5月19日的两个50%的分配需要在7月开始推出。简单地说,我想选择那些单元格并仅移动数据 - 就像使用右箭头键(或左箭头键)一样移动数据,就像俄罗斯方块一样。 请转发以听取您的建议

1
偏移辅助轴的刻度线
我想在excel中偏移辅助轴的标记而不改变最小值。这是一个非常复杂的VBA类,显然解决了这个问题,但我想要一个不需要我在VBA中构建整个图表的解决方案。 这是我的意思的一个例子(我删除了图表内部所以它看起来很有趣,但实际上只有轴对这个问题很重要): 我很满意左边的主轴。辅轴只是主轴加7.96%,因此辅轴HAS TO最小为0.0796。但是我希望我的标记是更好的圆形数字,所以我想将辅助轴'标记的起点偏移到仅从8%开始。 有谁知道实现这一目标的方法?为了清楚VBA,我很高兴使用VBA解决方案,但我没有时间在VBA中实际构建图表。使用VBA获取图表上的句柄并进行调整将是完美的。

1
提取数据透视表中的数据标签
当我将鼠标指针移动到数据透视表中的数据时,它会显示行和列标签(数据透视表项的名称)。 我如何提取它们以便以后可以在代码中使用它们(当我想要引用特定值时)。 还有什么可以得到数据的列和行号? 上午

0
在计算机之间传输.XLSB文件时出错(Excel宏)
我最近复制并粘贴了几个.xlsb个人文件从旧计算机到新计算机(都运行Windows 7),但每次我尝试打开它时都会收到错误消息: "Sorry, we couldn't find C:\PATH\PERSONAL.xlsb. Is it possible it was moved, renamed, or deleted?" 为了传输Excel宏,我还需要从旧计算机获得其他东西吗?

0
从Excel自动化Outlook导致不同计算机上的不同行高
一位同事正在使用Ron de Bruin的代码自动从MS Excel 2013在MS Outlook 2013中创建电子邮件报告。 代码忽略了图表,所以我们所做的是合并图表所在的电子表格后面的所有单元格,然后一旦我们在Outlook中收到电子邮件(我们使用该.display属性而不是.send我们可以在发送之前检查和编辑邮件)我们可以定期将图表复制并粘贴到这些合并的单元格块中,一切看起来都很棒。 但是,当我们在另一台计算机上使用完全相同的电子表格(它在网络驱动器上)时,Outlook中的邮件具有不同的行高。这意味着合并的单元格块现在更高,当我们粘贴图表时,它们不再填充空间。 有谁知道可能导致此问题的Windows / Outlook / Excel设置?我们正在运行Windows 8和Office 2013 Home and Business。 以下是来自两台计算机的示例的屏幕截图: 因此,第二台计算机上的行高较大,这会导致图表下方的空白区域(粘贴到大面积的合并单元格中)。 我们还查看了每台计算机上的HTML,确实存在差异。以下是每个小样本: <body> <!--[if !excel]>  <![endif]--> <!--The following information was generated by Microsoft Excel's Publish as Web Page wizard.--> <!--If the same item is republished from Excel, all information between the …

0
用宏而不是IE打开谷歌浏览器
我有一个关于VB宏的问题,它在IE 11中自动打开一个文件。问题是我无法让下载提示消失(相信我,我已经尝试了从IE中的工具,到regedit,到gpedit.msc的所有内容) 。是否有可能让这个宏做同样的事情,而不是从IE保存/打开以保存谷歌Chrome(可以摆脱下载提示)。我所熟悉的代码是: 选项明确 Public Sub Press_Button() Dim objIE As SHDocVw.InternetExplorer 'microsoft internet controls (shdocvw.dll) Dim htmlDoc As MSHTML.HTMLDocument 'Microsoft HTML Object Library Dim htmlInput As MSHTML.HTMLInputElement Dim htmlColl As MSHTML.IHTMLElementCollection Set objIE = New SHDocVw.InternetExplorer With objIE .Navigate "https://Somewebsite.com" ' Main page .Visible = 1 Do While .READYSTATE <> …

0
如何基于Word中的单独下拉列表自动填充内容控件?
我有一个包含多个字段的表单。其中三个字段取决于在表单顶部的下拉列表中选择的选择。 例如: 如果Location = New York City,则以下字段将填充为 CC = 0001,Approver = John Smith,Tel =(201)555-1234 如果Location = Miami,则 CC = 0005,Approver = Jane Brown,Tel =(305)555-9876 我的下拉列表有12个位置,其中包含填充三个字段的值(显示名称:迈阿密;值:0005 || Jane Brown ||(305)555-9876) 我对VBA的了解非常有限,所以我尝试查看演示文档中的代码,从Greg Maxey的“链接'条件内容'到列表选择”页面,但文档中的多个方法/条件让我感到困惑,所以我遇到了麻烦确定我需要的代码部分。

1
Excel VBA ActiveCell公式转换为值
我在单元格中有一个计算给定日期的公式。我想编写一个VBA宏,它将采用公式,将其转换为结果日期值并将该值复制到另一个/相邻单元格。 我试图使用“F2”和“F9”记录宏,但是VBA脚本返回,例如 ActiveCell.FormulaR1C1 = "12/31/2009". 我想编写宏来工作在未来几年日期单元格的公式可能是12/31/2012,2013等。我已经建立了公式来消除闰年的影响,所以我不能只添加365到明年派生。

1
Excel VBA错误 - 单元格(R,C).Paste [关闭]
我正在Workbook0.Worksheet1中编写代码,将Workbook1.WorkSheet1中的单元格复制到Workbook2.Worksheet1中的单元格 这是代码: Sub CopyInfo() Dim WSCopy As Worksheet Dim WSPaste As Worksheet Set WSCopy = Workbooks(Cells(3, 4).Value).Worksheets("Sheet1") Set WSPaste = Workbooks(Cells(4, 4).Value).Worksheets("Sheet1") RowCopy = Range(Cells(11, 3)).Row ColCopy = Range(Cells(11, 3)).Column RowPaste = Range(Cells(11, 4)).Row ColPaste = Range(Cells(11, 4)).Column Data = "Data" While Data <> "" Data = WSCopy.Cells(RowCopy, ColCopy) WSPaste.Cells(RowPaste, …

1
如何创建从MS Project 2013到Excel 2013的持久数据连接?
我正在尝试从MS Project文件中获取日期以找到一个单独的Excel文件,我用它来运行条件公式来处理项目状态矩阵。 问题是我需要在项目文件发生变化时更新这些日期,因此简单的导出/导入并不理想 - 我需要持久连接。 我试过了copy> paste-special> link> text方法。这对于初始数据转储到Excel非常有效,并且对仍然打开的项目文件的任何更新都会通过。但是,只要我关闭并重新打开excel或项目文件,链接似乎就会损坏(我没有更改文件名或位置)。 如果不自动更新,如何设置至少持久且健壮的连接?

0
加快复制/粘贴图片的代码的提示?
这是我使用VBA的第一个项目。我有一个代码(见下文),它会读取工作表上是否有数字。如果是,则代码将调用宏来从另一个工作表复制源图片,将其粘贴到新工作表上,并在单元格中重命名/调整大小/居中粘贴的图片。 问题是我已经知道这段代码运行缓慢了。我知道使用“.select”可以减慢代码速度,但我不知道是否有解决方法需要做什么。 这是我的工作(虽然很慢)代码。(滚动到底部以供参考pic) 这是第一个测试数字并调用宏的代码: Sub xGridA_Pic_Setup() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual If Evaluate(WorksheetFunction.CountIf(Worksheets("Rent Grid A").Range("D1:H1"), "1")) < 1 Then Else Call xGridA_Comp1 End If If Evaluate(WorksheetFunction.CountIf(Worksheets("Rent Grid A").Range("D1:H1"), "2")) < 1 Then Else Call xGridA_Comp2 End If If Evaluate(WorksheetFunction.CountIf(Worksheets("Rent Grid A").Range("D1:H1"), "3")) < 1 Then Else Call xGridA_Comp3 End …

1
Excel VBA:Rnd()方法不够随机
我正在使用Excel和VBA来模拟大量的骰子。 我遇到的问题是在一段时间后,滚动开始重复,我开始得到的结果不是随机的。 我正在使用INT = RND() * 6 +.5每个骰子。 有没有办法让它更随机几个数量级? 我Randomize事先使用,以防止每次都以相同的方式开始。

1
如何跳过复制宏中的数组中的项目从Excel到PowerPoint
我是新来的,有些事让我累了好几个星期。 我有一个宏,可以将excel范围从工作表复制到预先准备好的PowerPoint幻灯片,这是使用如下数组完成的: SlideArr = Array(1, 2, 3) RangeArr = Array(Output.Range("A1:B1"), Output.Range("A2:B2"), _ Output.Range("A3:B3")) For x = LBound(SlideArr) To UBound(SlideArr) RangeArr(x).Copy Set shp = MyPresentation.Slides(SlideArr(x)).Shapes.PasteSpecial(DataType:=2) 现在这样做是将3组范围复制粘贴到3个不同的幻灯片。我的问题是,是否可以编写跳过第二张幻灯片(数组2)的宏,因此它只会粘贴到幻灯片1和3上。

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.