我正在创build一个电子表格来训练我的数值技能。 现在,一旦当前的问题得到正确解决,我就使用VBAmacros来产生新的问题。 要做到这一点,我仍然需要按下工作表中的一个button,这会花费时间和烦人的。 有一种方法可以在满足特定条件时执行macros吗? 例如: if A1 = "correct!" then <run macro> else <do nothing> 另外,如果您对电子表格感兴趣,请告诉我,我很乐意与您分享。 最好的,彼得
我有一个在Excel中的起源和目的地很长的名单,使用webquery我可以填写城市和邮政编码给一个webquery,如: http://maps.googleapis.com/maps/api/directions/xml?origin=Scoresby&destination=Melborne&sensor=false 这给我一个长的XML文件,但我所需要的只是距离。 有没有办法只提取距离值? 或者我应该只是运行一个macros脚本来逐一提取距离? (由于每次我询问服务器时格式都大致相同)
我有一个Excel VBAmacros输出到一个文本文件。 文本文件底部总是有一个空行,我无法摆脱它。 任何有用的build议将不胜感激! 谢谢 Sub testExport() Dim fPath As String, exportTxt As String fPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Sample_" & Format(Now(), "HHNNSS") & ".txt" exportTxt = "Project: Sample Output" & vbCrLf exportTxt = exportTxt & "Model Version: 1 " Open fPath For Append As #1 'write the new file Print #1, exportTxt Close #1 结束小组
我有一个用户偶尔更新的工作表,用于制作一个加载项(.XLAM)。 加载项位于networking共享上,并且用户链接到它。 我正在寻找使用户能够轻松更新此加载项(确保它被标记为只读) 我已经在这里看到了Ken Puls的关于部署Excel加载项的文章,但他使用的.SaveCopyAs方法似乎不能接受文件types。 .SaveAs方法,但是当这个尝试了,我得到一个消息说,文件格式或扩展名是无效的,我已经尝试.XLAM和.XLA如下。 DeployPath = "C:\Menu.xlam" .SaveAs Filename:=DeployPath, ReadOnlyRecommended:=True, FileFormat:=xlOpenXMLAddIn 任何在这方面的帮助将不胜感激。
Sub Macro1() Dim URL As String Dim Path As String Dim i As Integer For i = 2 To 50 If Range("Prices!E" & i).Value <> 1 Then URL = Range("Prices!D" & i).Text Path = Range("Prices!F" & i).Text End If Sheet19.Activate With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & URL _ , Destination:=ActiveSheet.Range("$A$1")) .Name = _ "" & Path […]
我试图对一些excel工作簿(超过20)进行大的修改。 每个工作簿包含大约16个单独的工作表,我想写一个脚本,将循环通过每个工作簿,工作表包含里面,并编写/修改我需要的单元格。 我需要保持所有的stringvalidation,macros和格式。 所有的工作簿都是2007年的格式。 我已经看过python excel库和PHPexcel,但是macros,button,公式,stringvalidation和格式化,并且在写入新的工作簿时不会保留。 有没有一个简单的方法来做到这一点,或者我将不得不单独打开每个工作簿并提交更改。 我试图避免在VBscript中创build一个macros,并不得不单独打开每个工作簿来提交我需要的更改。
我在Excel中创build了我的第一个无模式UserForm ,并在其上放置了一个ActiveX标签。 如何设置标签的标题,以便它显示Sheet1.Range("A1") ,并在单元格A1中的值更改时自行更新? 基本上,我希望Userform's标签总是在Excel单元格中的第二项更新中更新。 谢谢!
我有一个非常大的数据,我正在写一个范围。 但是,有时候只有数组元素会发生变化。 我相信,因为我正在将整个数组写入范围,所有的单元格都在重新计算。 有没有什么办法可以有效地编写一个元素的子集 – 特别是那些已经改变了的元素? 更新:我基本上遵循这个方法来节省写入时间: Writing To A Range Using VBA 特别是,我有一个属性集合,我填充所有的对象(他们是细胞)与我需要的数据。 然后,我遍历所有的属性,并将值写入数组,索引数组,使其与要写入的范围的维度相匹配。 最后,用TheRange.Value = TempArray将数组中的数据写入到表单中。 最后一步覆盖整个范围,我相信即使在实际值没有改变的单元中也会导致重新计算。
在Excel中使用Application.Quit VBA应该启动默认的退出过程,其中包括提示用户保存当前在应用程序中打开的任何未保存的文档。 在跨越多个系统(Excel 2010 32位,Windows 7 64位)的testing中,我发现某些系统会提示用户保存,而有些系统则不会。 我们检查了整个系统的设置(包括启用所有的macros和禁用受保护的视图)无济于事。 即使在不同系统上使用相同的设置,也不会强制一个系统在Excelclosures之前提示用户保存工作。 就好像Application.DisplayAlerts已被设置为False,但它没有。 我们甚至尝试了以下几行代码: Application.DisplayAlerts = True Application.Quit 在某些系统上,即使这样也不会提示用户保存未保存的文档。 Excel只是突然closures。 任何帮助解决这个不胜感激。 谢谢! 更新回应评论: 我再次检查了Workbooks.Saved属性的所有打开和未保存的工作簿,它只是在Application.Quit之前是错误的,所以一定不是问题。 我也只是跑了一个简单的testing。 我打开了一个工作簿,编辑它并在VBA的立即窗口中执行Application.Quit。 Excel退出时不提示保存未保存的文件。 这告诉我,这是关于我的Excel设置,并与我的应用程序无关。
一切顺利。 我正在尝试使用Excel和vba创build一个批量文件夹创build器。 这是我第一次使用VBA,因为我通常专注于基于Web的语言,所以原谅我缺乏知识。 我已经有一些代码,只是把我正在努力的收尾。 目前,用户在给定的单元格中指定一个目录,并在另一个单元格中指定父文件的名称。 单击一个button后,macros将使用父文件单元中的目录和名称创build父文件夹。 然后使用应答者在运行macros时select的任何单元格的值创build子文件夹。 我目前正在为子文件夹内创build子文件夹(我将其称为孙子孙女)的下一个阶段苦苦挣扎。 如果所有子文件夹都有相同的孙子,这将是容易的,但事实并非如此。 我想要做的是获取每个单元格右侧的3个值定义子文件夹的名称,并使用它们来创build孙子,但是我目前正在使用我正在使用的代码的“无效限定符”消息(见下文)。 BasePath = Range("folder_path") 'Check if the project folder already exists and if so raise and error and exit If Dir(BasePath, vbDirectory) <> "" Then MsgBox BasePath & " already exists", , "Error" Else 'Create the project folder MkDir BasePath MsgBox "Parent folder creation complete" 'Loop […]