我使用VS 2008和VSTO开发了一个新的Office 2007插件.之后我去Office-> Excel选项 - > AddIns-> COM AddIns和GO ...如果我选择我创建的.dll我得到错误
'<path>' is not a valid Office Add In.
Run Code Online (Sandbox Code Playgroud)
如果我在我的开发机器上使用Visual Studio 2008运行它,它工作正常,我看到加载项.
我搜索了很多帖子,但没有得到解决方案.
有谁知道如何使用Excel VBA检查Excel文档中是否存在某些工作表?
我有一个应该如此简单的问题,但我并没有理解它.我为商店打印了价格表,今年他们将零件编号分成5个工作表而不是一个.
当用户想要打印出一个pricetag时,她输入=进入C10,点击工作表"Pricelist"并导航到她需要的部件号.
得到的C10公式为:= Pricelist!B40
E10必须包含有关零件编号的更多信息,因此E10公式为:= VLOOKUP(C10,Pricelist!B:N,2,FALSE)
但是,现在使用新的工作表,她可能会选择工作表"New_Items",在这种情况下,C10的结果公式为:= New_Items!B40
如何编写E10的公式,以便它引用与C10相同的工作表.
我需要E10 = VLOOKUP(C10,Pricelist!B:N,2,FALSE)
自动变为*= VLOOKUP(C10,New_Items!B:N,2,FALSE)*
有道理?是否可以让Excel根据另一个单元格的引用修改工作表引用?
TIA!
我在具有Bloomberg许可证的PC上的空白Excel 2007工作簿中运行宏.宏将Bloomberg函数插入到sheet1中,以获取收益率曲线数据.一些附加功能的结果取决于完成和正确显示Bberg数据的第一个功能.当我单步执行程序时,它只显示'#N/A请求数据..".而不是查询的结果,无论我走得多慢.由于某些函数依赖于填充的字符串和数字字段结果,因此程序会在该代码处遇到运行时错误.当我停止调试 - 完全结束运行程序 - 然后出现应该填充的所有Bberg值.我希望在程序仍在运行时显示这些值.
我尝试使用DoEvents和Application.OnTime()的组合将控制权返回给操作系统,并使程序等待很长时间进行数据更新,但都没有工作.任何想法都会有所帮助.我的代码如下. wb是一个全局级工作簿,ws1是一个全局级工作表.
Public Sub Run_Me()
Public Sub Run_Me()
'Application.DisplayAlerts = False
'Application.ScreenUpdating = False
Call Populate_Me
Call Format_Me
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)
结束子
Private Sub Populate_Me()
Private Sub Populate_Me()
Dim lRow_PM As Integer
Dim xlCalc As XlCalculation
Set wb = ThisWorkbook
Set ws1 = wb.Sheets(1)
'clear out any values from previous day
If wb.Sheets(ws1.Name).Range("A1").Value <> "" Then
wb.Sheets(ws1.Name).Select
Selection.ClearContents
End If
xlCalc = Application.Calculation
Application.Calculation = xlCalculationAutomatic …Run Code Online (Sandbox Code Playgroud) 我试图写一个值到"A1"单元格,但我收到以下错误:
应用程序定义或对象定义的错误'1004'
我在网上尝试过很多解决方案,但都没有.我使用的是excel 2007,文件扩展名是.xlsm.
我的代码如下:
Sub varchanger()
On Error GoTo Whoa
Dim TxtRng As Range
Worksheets("Game").Activate
ActiveSheet.Unprotect
Set TxtRng = ActiveWorkbook.Sheets("Game").Cells(1, 1)
TxtRng.Value = "SubTotal"
'Worksheets("Game").Range("A1") = "Asdf"
LetsContinue:
Exit Sub
Whoa:
MsgBox Err.number
Resume LetsContinue
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑:如果我点击警告图标后出现错误,然后选择显示计算步骤,它的工作正常
我试图运行一个宏来执行多个工作表上的功能.假设我在工作表4上分配了宏按钮.我已经列出了我希望它逐步执行的功能:
1)选择工作表4中的某些单元格并复制到工作表4中的相邻单元格
.2)删除工作表
3中的单元格范围.3)工作表2中的CUT单元格范围然后将此范围的单元格粘贴到工作表3中
.4)取范围从单独的工作簿中复制单元格并复制到工作表2.(我知道这是一个完全不同的问题,因为工作簿会自动发布,我将不得不找到一种方法来链接这两个.)
5)更新位于工作表4中的数据透视表和工作表3.
我很乐意帮助解决这个问题的前3个功能.我已粘贴下面的当前代码.
Sub START()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim sh4 As Worksheet
Set sh1 = ActiveWorkbook.Sheets("Brand")
Set sh2 = ActiveWorkbook.Sheets("CurrentWeek")
Set sh3 = ActiveWorkbook.Sheets("PriorWeek")
Set sh4 = ActiveWorkbook.Sheets("Pivot")
sh4.Range("B29:B30").Select
Selection.Copy
sh4.Range("C29").Select
ActiveSheet.Paste
sh3.Range("A4:AC1000").Select
Selection.Delete
sh2.Range("A4:AC1000").Select
Selection.Copy
sh3.Range("A4").Select
ActiveSheet.Paste
End Sub
Run Code Online (Sandbox Code Playgroud)
它可以工作......但只有当我在正确的工作表中才能执行特定的功能时它才有效.
有没有机会在C#中读取.xlsx文件而不在客户端上安装Excel,并且没有OLEDB连接可用?
该应用程序是一个用VS2005 C#.NET Framework 2.0编写的Winforms项目.
我想在用户单击Excel工作表中的单元格后显示一个对话框.像这样的东西:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "a cell was clicked!", vbOKOnly, "a click"
End Sub
Run Code Online (Sandbox Code Playgroud)
它工作得很好.问题是,在双击编辑模式打开后,预计会输入公式.如何禁用此行为?
我想实现纯粹的功能:〜用户单击一个单元格〜出现一个对话框〜用户关闭对话框〜单元格不进入编辑模式,工作表看起来与双击事件之前完全一样.
如何判断Excel 2007电子表格是否已打开且WHO是否已使用VBScript打开它?
我试图弄清楚Excel工作簿当前是否由另一个用户打开并返回该用户在我的脚本中的用户.
我已经找出了确定工作簿目前是否开放的人.这是一种解决方法,但我基本上打开工作簿并检查它是否是只读的.这很完美; 我测试了它.
我知道这是可能的,因为如果您通过浏览器打开文件,Excel会为您提供打开文件的用户.
这是我的代码(isWorkbookOpen.vbs):
Set objExcelTestWorkbook = CreateObject("Excel.Application")
objExcelTestWorkbook.DisplayAlerts = False 'doesn't display overwrite alert
testWorkbookFile = "I:\test_workbook.xlsx"
Set objBook = objExcelTestWorkbook.Workbooks.open(testWorkbookFile)
If objBook.ReadOnly Then
Wscript.echo "The file is read only"
Call EndScript
Else
Wscript.echo "The file is available"
Call EndScript
End If
Function EndScript
objExcelTestWorkbook.Workbooks.close
objExcelTestWorkbook.Quit
WScript.Echo "Closed " & testWorkbookFile
WScript.Quit
End Function
Run Code Online (Sandbox Code Playgroud)
另外,我从命令行运行它:
cscript isWorkbookOpen.vbs
Run Code Online (Sandbox Code Playgroud) 我将几千行数据导入Excel,而一个项目代表一行,我必须修改每个项目,以便11行代表相同的项目ID.
例如:-
原版的
63 --->data
64 --->data
65 --->data
Run Code Online (Sandbox Code Playgroud)
当前
63 --->data
63 --->data
63 --->data
63 --->data
63 --->data
63 --->data
63 --->data
63 --->data
63 --->data
63 --->data
63 --->data
64 --->data
64 --->data
64 --->data
64 --->data
64 --->data
64 --->data
64 --->data
64 --->data
64 --->data
64 --->data
64 --->data
Run Code Online (Sandbox Code Playgroud)
(你明白了)......
但是,由于我已经习惯于每个项目填充额外的10行,我在A列中留下与公式所基于的所有行相同的ID.
我正在寻找一个公式,它将自动递增单元格值,但只有每11行,这样我就可以单击并向下拖动列A,它将填充11行的相同ID,然后自动递增(+1并填写接下来的11行.
我尝试过多种变体都无济于事.谢谢.
以下是我目前拥有并希望简化的示例: -
A B C D E F
79 <--already correct id
79 <--already correct id
79 <--already correct id
79 …Run Code Online (Sandbox Code Playgroud)