在Excel 2003中,曾经有一个命令,我添加到我的工具栏中,称为地址(如果我没记错),它将显示我打开的文件的完全限定的网络路径.例如:\\ads\IT-DEPT-DFS\data\Users\someguy\somefile.xls
这样,当您想要与同事共享文件时,可以轻松获取此字符串并将其弹出到电子邮件中.我在Excel 2010中没有看到此选项,但现在发现自己需要发送/接收Excel文件.同事会模糊地提及"它在共享驱动器上"或将文件作为附件发送电子邮件(呃!).
任何人都知道Excel 2010中是否存在可比较的内容?
更新:我发现了Excel 2003到2007命令的这种映射. http://office.microsoft.com/en-us/excel-help/redir/AM010186429.aspx?CTT=5&origin=HA010086048
Web>地址就是我正在使用的 - 看起来像是在2007年成为"文档位置".但他们在2010年再次删除/混淆了这一点.我试图在2007年到2010年找到这样的映射.
在vba中是否有内置的数值更新控件,还是我们需要创建这样的控件?
如果有这样的控制,那么我们可以使用什么事件.
请建议.
我已将问题减少到以下测试用例:
创建一个新的工作簿;
输入一个恒定值,例如,123成Sheet1!A1;
定义一个名称,例如foo,指代公式=CHOOSE(!$A$1, Sheet1!$A$1);
输入常数值1成Sheet2!A1;
将公式输入=foo到其他一些单元格中Sheet2,例如Sheet2!B1:观察到,如预期的那样,结果是Sheet1!A1上面步骤2中输入的值;
然后创建一个包含以下代码的VBA过程:
Sheets("Sheet1").Outline.ShowLevels 1
Run Code Online (Sandbox Code Playgroud)您会注意到步骤5中的单元格现在包含#VALUE!错误.
此外,简单的工作表重新计算(无论是使用F9密钥还是Application.Calculate方法)都无法解决问题:必须改为从VBA 执行完全重新计算(使用Application.CalculateFull方法),或者从交互式UI 执行完全重建(使用CTRL+ ALT+ SHIFT+ F9组合键).
通过反复试验,我确定了出现这种情况:
所述CHOOSE()索引参数必须涉及的相对表单元格引用(未常量或绝对表的参考文献);
CHOOSE()被索引的value参数必须包含对另一个工作表的引用;
显示的大纲级别的更改必须来自VBA 过程(而不是来自交互式UI或VBA立即窗口中的大纲控件); 和
所述ShowLevels方法调用(其参数是不相关的)必须被施加到被之中任何值的引用的片(虽然不是索引)参数CHOOSE().
这是怎么回事?
我非常希望将我在值参数中引用的工作表折叠CHOOSE()到其最高大纲级别而不触发此错误,因为从UX的角度来看,完全重新计算我的实际工作簿(仍然只有几秒钟)是不可取的.
对于变通方法的建议(虽然仍然使用包含该CHOOSE()函数的定义名称以及相对表索引参数)将是最受欢迎的!
我的平台:Windows 7 Home Premium(SP1,64位)上的Excel …
有人可以帮我理解MS Excel中的共享字符串吗?我试图理解使用一些博客,但无法完全了解.每个人都在解释如何使用Open XML访问共享字符串以及存储共享字符串的位置(作为sharedstrings.xml).使用API访问很好.但,
我试过跟随.
我正在构建一个python脚本,允许我打开Excel 2010工作表并将其打印出来.
我得到了大部分的方式
import win32com.client
office = win32com.client.Dispatch("Excel.Application")
wb = office.Workbooks.Open(r"path\to\excel\file\to\print.xlsm")
count = wb.Sheets.Count
for i in range(count):
ws = wb.Worksheets[i]
pivotCount = ws.PivotTables().Count
for j in range(1, pivotCount+1):
#TODO code to refresh each pivot table
ws.PrintOut()
print "Worksheet: %s - has been sent to the printer" % (ws.Name)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我仍然缺少工作表中数据透视表的刷新.
用于刷新的VBA代码是:
ActiveSheet.PivotTables(1).PivotCache.Refresh
Run Code Online (Sandbox Code Playgroud)
我似乎无法将代码分解为python win32com语法.我得到的最接近的是:
wb.WorkSheets(5).PivotTables(1).PivotCache.Refresh
Run Code Online (Sandbox Code Playgroud)
这给了<bound method CDispatch.Refresh of <COMObject PivotCache>>但没有结果在工作表中.
任何帮助将非常感谢!
我自己最终找到了解决方案,但是要保留帖子,以便它可以帮助所有类似问题的程序员.
import win32com.client
office = win32com.client.Dispatch("Excel.Application")
wb = office.Workbooks.Open(r"path\to\excel\file\to\print.xlsm")
count = wb.Sheets.Count
for i in …Run Code Online (Sandbox Code Playgroud) 解决了!请参阅下面的解决方案
我在Excel 2010中通过数据透视表数据连接从Excel 连接到多个独立的 Access 2010数据库.
刷新所有连接会导致最终刷新失败.顺序没关系,我手动刷新了不同的顺序,同样的错误.
但是,如果我在刷新几个后保存并关闭,然后返回并刷新最后一个,则完全没有问题.
让我相信我正在点击某种内存上限,当我保存并关闭时它会被重置.
我是否可以通过VBA重新创建该效果而无需实际保存/关闭?这个问题有更好的解决方案吗?
错误消息 - 这三个按此顺序弹出:
现行守则
Private Sub CommandButton1_Click()
On Error GoTo ErrHndlr
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.StatusBar = "Refreshing Data - Please Be Patient"
ActiveWorkbook.Connections("Connection_1").Refresh
ActiveWorkbook.Connections("Connection_2").Refresh
ActiveWorkbook.Connections("Connection_3").Refresh
Application.Calculation = xlCalculationAutomatic
Application.StatusBar = "Ready"
[LastUpdated].Value = FormatDateTime(Now, vbGeneralDate)
Application.ScreenUpdating = True
Exit Sub
ErrHndlr:
Application.StatusBar = "Ready"
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
[LastUpdated].Value = "Update Error"
Exit Sub
End Sub
Run Code Online (Sandbox Code Playgroud)
连接字符串
Provider=Microsoft.ACE.OLEDB.12.0
;User …Run Code Online (Sandbox Code Playgroud) 我负责一个非常大的Excel 2010电子表格,其中包含各种外部数据源的链接,包括Bloomberg,带有vba模块的65个工作表以及对其他vba加载项的引用.
我注意到VBA项目已经获得了多个工作簿对象.
有标准的ThisWorkbook.但是,许多工作表也已由Excel转换为Workbook对象,将原始工作表保留为前一个工作表的副本,减去代码.
这似乎不是任何人的行为的结果.实际上,我认为不可能拥有多个Workbook对象!
例如,我有一个名为wksInputs的工作表,现在已经变成了一个Workbook对象,原来的wksInputs现在称为wksInputs1.

我无法删除wksInputs Workbook对象.
请有人帮忙解释这里发生了什么,以及我如何能够解决问题......?
非常感谢.
我正在编写一个VBA代码,通过一系列单元格检查每个单元格是否有数据验证(下拉菜单),如果没有从另一个工作表的列表中分配一个单元格.
我目前在检查当前单元格是否已经有数据验证的行上有问题.我得到错误1004"没有找到细胞".
Sub datavalidation()
Dim nlp As Range
Dim lrds As Long
Dim wp As Double
Dim ddrange As Range
Sheets("DataSheet").Select
lrds = ActiveSheet.Range("A1").Offset(ActiveSheet.rows.Count - 1, 0).End(xlUp).Row
Set nlp = Range("I3:I" & lrds)
For Each cell In nlp
'error on following line
If cell.SpecialCells(xlCellTypeSameValidation).Cells.Count < 1 Then
wp = cell.Offset(0, -8).Value
Set ddrange = ddrangefunc(wp)
End If
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢
我一直试图将单元格值向上或向下舍入到最接近的千位,但无法使其工作.我试图根据从美元到VND的当前汇率计算我的小时费率但是如果结果总数大约是22,325那么它应该减少到22,000,同样如果数百是500或更多它应该会达到23,000

因此,当小时费率为527,325时,它应该减少到527,000.该单元格已包含一个公式,用于将当前汇率乘以美元.
我需要比较windows7中的两个csv文件.我该如何着手实现这一目标.我想看看两个文件的差异,比如我们可以在Linux中使用tkdiff.