我知道我可以在VBA中使用条件编译来区分64位和32位版本(使用#If VBA7 Then ...).
是否还有一个类似的常量构建,Application.Version以便我可以在编译时区分Excel 2013/2010/2007/...等?
此外,是否有可用的现有编译器常量列表?到目前为止,我发现VBA7和Win64(例如,从这个文章) -但是否还有其他的吗?
从云中的Azure VM上运行的Analysis Services(SSAS)表格实例创建Excel 2013 Power View工作表时,我收到一个奇怪的错误.这是错误:
抱歉,加载项目或数据源'xxxxxx.cloudapp.net表格模型'的模型时出错了.验证连接信息是否正确以及您是否有权访问数据源.
奇怪的是,我可以从中成功创建正常连接的数据透视表; 我在尝试制作Power View工作表时只收到错误.这会让我相信我正在连接到多维SSAS数据库,但我不是.以下是我已经尝试过的一些事情:
以下是我的设置的一些细节:
更新( 2013年12月2日):我在服务器上安装了Excel 2013,可以成功创建连接到Tabular数据库的Power View工作表.这意味着我的表格SSAS实例设置得很好,但在尝试通过互联网创建工作表时仍然存在问题.
更新(2013年2月15日):我使用Windows Update将Excel更新为15.0.4454.1503无效.我让一位同事成功连接了一个稍微旧版本的Excel 2013.我完全难过了.我还尝试在我更新到v 15.0.4454.1503的VM上安装Excel的新副本,它给了我同样的错误.
更新(2013年2月20日):我在Windows Server 2012,SQL Server 2012和SSAS Tabular compat 1103上安装了一个全新的本地VM.I STILL无法从该服务器成功生成Power View报告.我坚信 Excel 2013客户端存在某种错误.
我有一个从用户表单激活工作表的问题,相同的代码在Excel 2003到Excel 2010中工作正常,不适用于Excel 2013.
这是如何简单地重现问题:
有一个包含2个工作表的工作簿,在其中调用,Sheet1并且可以Sheet2说是Sheet12个按钮:
单击Button1激活Sheet2工作表时,使用Macro11行:
ThisWorkbook.Sheets("Sheet2").Select
Run Code Online (Sandbox Code Playgroud)
我可以很好地编辑数据.
上点击Button2一个UserForm1弹出,就点击CommandButton1呼叫同宏1所示:
Unload Me
Macro1
Run Code Online (Sandbox Code Playgroud)
该Sheet2工作表被激活,排序的,但如果我是编辑的数据,它实际上更新在Sheet1相应的单元格,如果我点击Sheet1我可以看到在那里输入的数据!
单击返回Sheet2工作Sheet2表可以正确激活工作表.
有没有人见过这样的行为?如果是,是否有任何编码解决方法可以正确激活Sheet2?
我在PC上的Excel 2010中创建了一个程序,该程序依赖于Excel的内置解算器.我确保它适用于Excel 2010和Excel 2013 for PC.然后我尝试在Excel 2011上使用相同的程序,并遇到了一个问题.
当我尝试编译项目时,它会显示"编译错误:无法找到项目或库".
我记得在启用解算器之前在PC端发生了这种情况,所以我进入了工具 - >插件,然后启用了Solver.Xlam.

但是,我得到了同样的错误.
我进入了开发人员端,然后转到Tools - > Reference,发现Solver.Xlam丢失了.

我意识到它认为解算器所在的地址是解算器在我的PC上的位置,而不是它在OSX上的位置.当我在OSX上搜索时,我发现求解器在/Applications/Microsoft Office 2011/Office/Add-Ins.
所以我点击底部的"浏览"并选择Solver.Xlam.

我选择了Solver.Xlam.

但现在我得到了一个不同的错误.

弹出此错误后,它正在寻找Solver.Xlam的位置重置为先前的位置.
这是什么问题?我该如何解决这个问题?
我正在excel VSTO加载项中显示一个自定义任务窗格,正在构建它并显示为:
var ctrl = new CellTaskPane();
var pane = CustomTaskPanes.Add(ctrl, "Custom Sheet");
pane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight;
pane.DockPositionRestrict = Office.MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoChange;
pane.Visible = true;
Run Code Online (Sandbox Code Playgroud)
这是在ThisAddin.cs文件中完成的,并且在Debug会话下以及通过单击一次安装程序安装的加载项下,都可以在我的计算机上正常运行。
但是,将加载项安装到同事的机器上被证明很麻烦。
加载项正在运行,并且上下文菜单/功能区运行正常,但是窗格只是拒绝显示。
我在功能区上有一个切换按钮,可以切换Visible窗格上的属性,甚至单击也不会强制窗格显示。
任何帮助都将不胜感激,谷歌对此毫无用处。
谢谢。
我应该提一下,这CellTaskPane只是UserControlMSDN上的文档所规定的:http : //msdn.microsoft.com/en-us/library/aa942846.aspx
我有将工作表格式化为所需的设置和布局的代码(横向一页高,横向)。当我运行代码(长宏的一部分)时,它会正确设置pagesetup的格式。
如果我手动导出并将其另存为pdf,则它将使用正确的页面设置,从而生成横向的一页PDF。但是,VBA所做的相同导出将产生几页长的纵向PDF。
我不知道为什么要这么做。我已经尝试了各种解决方案,例如在导出工作表之前选择了工作表,但都无济于事。
任何帮助表示赞赏。
代码如下:
Sub SaveAsPDF()
Sheets(ReportWsName).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
[SaveFolderPath] & "\" & ReportWsName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub
Run Code Online (Sandbox Code Playgroud)
更新:
用于格式化pagesetup的代码(因为时间太长,我只添加了该子项的相关部分)
Private Sub CreateNewReport(ProvisionCode As String, TimeFrom As Date, TimeTo As Date)
... other code here...
'Format report to create the desired layout
With Worksheets(ReportWsName)
'Delete unnecessary data and format the rest
.Range("A:B,D:D,F:G,J:M,O:O,Q:S").Delete Shift:=xlToLeft
.Range("A:F").EntireColumn.AutoFit
.Range("C:C, E:F").ColumnWidth = 30
With .Range("G:G")
.ColumnWidth = 100
.WrapText = True
End With
'Insert standard formating header …Run Code Online (Sandbox Code Playgroud) 我是VBA的新手(并且只接受过一些java培训),但是在这里的其他帖子的帮助下组装了这段代码并且已经碰壁了.
我正在尝试编写循环遍历文件夹中每个文件的代码,测试每个文件是否符合某些条件.如果满足条件,则应编辑文件名,覆盖(或删除先前)任何具有相同名称的现有文件.然后,应将这些新重命名的文件的副本复制到其他文件夹.我相信我非常接近,但是我的代码在运行时拒绝循环访问所有文件和/或崩溃Excel.请帮忙?:-)
Sub RenameImages()
Const FILEPATH As String = _
"C:\\CurrentPath"
Const NEWPATH As String = _
"C:\\AditionalPath"
Dim strfile As String
Dim freplace As String
Dim fprefix As String
Dim fsuffix As String
Dim propfname As String
Dim FileExistsbol As Boolean
Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
strfile = Dir(FILEPATH)
Do While (strfile <> "")
Debug.Print strfile
If Mid$(strfile, 4, 1) = "_" Then
fprefix = Left$(strfile, 3)
fsuffix = Right$(strfile, 5)
freplace = "Page"
propfname = …Run Code Online (Sandbox Code Playgroud) 我想从Excel 2013订阅RabbitMQ消息队列。
最终目的是允许在Excel中处理MQ消息中包含的数据,并且还允许Excel通过RabbitMQ消息队列发送格式化的消息。
这可能吗?
沿着消息队列发送的消息由7个字段组成,每个字段用;分隔。符号-但是消息将作为一个字符串发送到消息队列中...
例如 "text;number;number;number;text,text,timestamp"
我希望能够将上述原始消息拆分为Excel 2013中的格式化单元格。
能做到吗?
我的编码经验有限,我想学习,所以如果这是一个“傻”问题,请原谅我。
任何指针将不胜感激,例如可以通过VBA代码或Excel插件来完成吗?
提前致谢...
背景
我的代码在范围内执行一些循环,但是,每个交互应该在不包括刚执行的单元格的范围内执行.我认为更简单的方法是从存储的范围中删除单元格.
问题
我无法找到从存储对象中删除单元格的方法
代码
问题是一般的但是,对于问题,它会像
Sub Sample()
Dim RangeToAnalyze As Range
Dim CounterRange As Long
Dim ExcludeCell As Range 'sample on what is desired to achieve
Set RangeToAnalyze = Selection 'this is based on some other criteria but, in order to reproduce it easier that's why selection
For CounterRange = 1 To 5
Set ExcludeCell = RangeToAnalyze.Find("text")
'now here I would like to find the next cell, but it should exclude the first one in order to go to …Run Code Online (Sandbox Code Playgroud) I am trying to utilize a UDF version of TextJoin since I am using Excel 2013 - but this function is not properly returning the accurate data.
My data-set in Excel looks like this
saleID Item
5 PRE2323
6 Pre2323223
6 OX12321
6 RI132
9 TN23
9 LSR12
Run Code Online (Sandbox Code Playgroud)
And my desired output is
saleID Items
5 Pre2323
6 Pre2323223, OX12321, RI132
9 TN23, LSR12
Run Code Online (Sandbox Code Playgroud)
And this is the UDF I Have that is not functioning as it should
Option Explicit …Run Code Online (Sandbox Code Playgroud) excel-2013 ×10
excel ×9
vba ×8
excel-vba ×5
excel-2010 ×2
compilation ×1
excel-2011 ×1
excel-addins ×1
powerview ×1
rabbitmq ×1
ssas ×1
tabular ×1
vsto ×1