I am very new Visual Studio (just downloaded version 2010 Professional), but I believe this is the right way to do web services in excel.
Have created a Excel 2007 Add-In called TestAPI within Visual Studio containing just one class ThisAddIn, the 2 default StartUp and Shutdown procedures and 2 functions I have written myself, say f1 and f2.
When I start Excel 2007 and check Excel Options i can see it as a COM add in, but how can I see these 2 functions within VBA? Any references to either ThisAddIn or TestAPI or f1 or f2 all fail, yet if I put something into the StartUp functions this will automatically be executed whenever I start Excel, which I do find quite annoying. It seems that COM Add-ins are switched on/off at Excel level whereas I cant seem to find the TestAPI anywhere on my list on References (where I could check or uncheck it as required depending on Excel sheet).
I am probably missing an (or multiple) point(s).
Paul Stubbs has some information on calling VSTO UDFs from VBA on his blog.
Alternatively, you could try building a more vanilla COM add-in for Excel, as described by Eric Carter.
My personal preference for creating user defined functions is to use ExcelDna.
Have you declared F1 and F2 Public? In the class ThisAddin
Public Shared Function F1(x as Object) as Object
Return x*2
End Function
(I'm not sure if Shared is required in VSTO, I use Addin Express, VSTO is such a pain)
Related
Can I create an extension for Visual Studio that runs in the background as soon as the user opens the Visual Studio IDE? For example, I am building an extension that gets the current active file address in Visual Studio (with C#), but I would like this extension to always run in the background without having to be activated by the user clicking a button or pressing some key combination.
Is this possible, and if so, what is the best way of doing it?
Any help would be greatly appreciated! Regards, Erfan
Since you tagged your question with visual-studio-2010 I assume you are working on an "Add-in" rather than a "VSPackage Extensions".
In this case, you can use the OnConnection event handler.
If you are working on a VSPackage Extensions, you can use the attribute ProvideAutoLoad.
Just search for these, you will find sufficient information. Both ways are also described shortly here under "How can I run my add-in code in a VSPackage?"
For Extension add following attribute to Package class, this will load the extension when a solution is not open in visual studio. I have tested this with VS 2015 and 2017.
[ProvideAutoLoad(UIContextGuids80.NoSolution)]
For VS 2010 and higher the recommended extensibility approach is a package (VS 2015 won't allow add-ins).
To get the package loaded when Visual Studio is loaded see HOWTO: Autoload a Visual Studio package.
Once loaded, your package may be interested in two different kind of selection change events:
To get notified when the selection in the Solution Explorer changes, get the IVsMonitorSelection interface and call the AdviseSelectionEvents/UnadviseSelectionEvents and provide a class that implements the IVsSelectionEvents interface.
To get notified when the active window changes (which can be a document window or a toolwindow), implement the IVsWindowFrameNotify interface.
I was trying to create lists, content type and site columns through Visual Studio 2010. There were options of adding content type and list instance but not of content type. So, I could not figure out how to add site column? What item do I need to add for this and what kind of coding is to be done for the same?
this resources may help you:
Walkthrough: Create a Site Column, Content Type, and List for SharePoint => http://msdn.microsoft.com/en-us/library/ee231593.aspx
You may also try SharePoint Designer 2010 instead of Visual Studio 2010
You can use CAML but I wouldn't recommend it. The better way is using object model and feature event receiver. An complete example is quite long, here is the link http://zhouyupublic.blogspot.co.uk/2012/11/create-site-column-and-content-type.html.My
My recent favorite way to do the same is using PowerShell. But since you ask about how to do it with VS, it is outside the topic here.
I'm working on a Classic ASP (with VB Script) project where I'm instantiating an object from an ActiveX control like so:
Dim objHelper
Set objHelper = Server.CreateObject("HelperLib.HelperObj")
Visual Studio 2005 provides intellisense for the first "layer" of properties and methods, but it can't seem to see properties and methods that are members of the main objects. For example:
objHelper. 'Properties and methods show up after the period '
objHelper.FirstProperty. 'No properties and methods are shown after the period'
Is there a way to "help" Visual Studio in some way to see these object types so that I can work in a more strongly-typed environment?
Unfortunately, 2005 does not do this. 2008 does a very good job of it, however. Once you install sp1, that is.
Can someone give me a quick explanation of when I would use Visual Studio 2008 Outlook 2007 Ad-In project type? and how would that compare to developing a bunch of outlook macros directly in outlook?
Basically, I want to have some sort of application read email (with attachments) from a pop3 email box, do some filtering/editing/validation of the subject/sender/content and then if certain conditions are met, save the attachments to a local file, and then add an entry into an SQL server database table (i.e. date/sender/subject/message).
Seems there are at least 10 different ways to do this....so between an outlook macro and a VS Office Project, how do I pick?
I am not clear, if I create this solution as a Visual Studio outlook add-in, where does it run? Is it loaded into outlook, does it run as a separate process and communicates back and forth with outlook? if outlook is not running, does it start it?
An Outlook Add-on is a compiled component that uses the Outlook API to perform the tasks you need. A macro/VB script is an interpreted script that actually uses the same API. The add-on approach is better if you want to deploy your functionality.
When you work on an Outlook add-on in Visual Studio, you'll be creating a .NET component, which integrates into the Outlook application, which is written in C++ so uses COM. You'll have to be careful about managed/unmanaged types and releasing objects you retrieve from Outlook.
I have recently completed just such a tool, but I chose to use Add-in Express (http://www.add-in-express.com/). These guys provide a layer of abstraction over the [challenging] Outlook API and also provide some excellent support if you're stuck.
In my case, with Add-in Express, I "run" by setting Outlook as the application command to run, in the Project properties. Add-in Express sorts out the installation of the add-on within Outlook. So when I press "Run", Outlook starts and my add-in is displayed, which may be debugged in the normal fashion. I'm not sure how VSTO (Visual Studio Tools for Office) works in this respect - or at least, I can't remember.
This is an example of an outlook add-in..
Personally, I don't see macros distributable.
This is the question that has been posted to MSDN forums some time ago, and stayed unanswered to this day:
http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/676b13d4-acfc-4252-b102-5fc0553e4b81/
The property I'm interested in is ProjOutputReferences, stored in the Visual Studio solution (.sln) file.
In Visual Studio, this property is accessible through Property Pages dialog of a Silverlight WebSite project (requires that you have Silverlight Tools for VS2008 installed). There, there is a page called "Silverlight Applications" on which the content of the above mentioned property can be edited.
I need to access it programmatically inside my add-in, through VS automation or low-level interface(s).
In the latest released version of the Silverlight Tools for VS 2008 SP1, the list is persisted in the SilverlightApplicationList property in the referring project file.
For example, I have SilverlightApplication2 and SilverlightApplication2.Web in my solution (the latter references the former). I have the following node in my SilverlightApplication2.Web.csproj file:
<SilverlightApplicationList>{BBA7B148-42AE-477E-BB5E-0BA5AEC0A467}|..\SilverlightApplication2\SilverlightApplication2.csproj|ClientBin|False</SilverlightApplicationList>
There really isn’t a way to access this property via purely DTE, but you can use the Visual Studio SDK / VSIP interfaces to do so (specifically, you want to get the IVsBuildPropertyStorage interface for access to MSBuild properties). Here is a code snippet (runs in a menu command handler in a VSPackage):
IVsSolution solution = GetService(typeof(SVsSolution)) as IVsSolution;
IVsHierarchy hierarchy;
solution.GetProjectOfUniqueName(#"SilverlightApplication2.Web\SilverlightApplication2.Web.csproj", out hierarchy);
IVsBuildPropertyStorage buildPropertyStorage = hierarchy as IVsBuildPropertyStorage;
if (buildPropertyStorage != null)
{
string silverlightAppListValue;
buildPropertyStorage.GetPropertyValue("SilverlightApplicationList", "Debug", (uint)_PersistStorageType.PST_PROJECT_FILE, out silverlightAppListValue);
MessageBox.Show(silverlightAppListValue);
}
If you still want to try doing this from an Addin, you’ll have to get follow the approach that Craig mentions to cast the DTE object to an IServiceProvider (so you can call GetService).
-Aaron Marten
Since .sln files are just text files, try editing your .sln file using Notepad. You should be able to find the property you are looking for listed there. Assuming the information is in an understandable format, you should then be able to use a simple text parser to extract the info from the .sln programmatically.