Solved

VB6 to Visual studio 2010 issue

Posted on 2011-09-04
29
861 Views
Last Modified: 2012-05-12
Hello all

I would like to know how i can modify this code so that i can use it in Microsoft Visual Studio 2010?

Thanks again for your help.


Dim OLApp As Outlook.Application
Dim OLNameSpace As Outlook.Namespace
Dim OLRecipient As Outlook.Recipient
Dim OLAppt As Outlook.AppointmentItem

Set OLApp = New Outlook.Application
Set OLNameSpace = OLApp.GetNamespace("MAPI")
OLNameSpace.Logoff
OLNameSpace.Logon "Logon Name", "Password", False, True

Set OLRecipient = OLNameSpace.CreateRecipient("Art@Bell.ca")
Set OLAppt = OLNameSpace.GetSharedDefaultFolder(OLRecipient, olFolderCalendar).Items.Add
OLAppt.Location = "Location"
OLAppt.Subject = "Subject"
OLAppt.Body = "Testing for calendar add"
OLAppt.Start = CDate("12/31/00 01:00 AM")
OLAppt.End = CDate("12/31/00 01:01 AM")
OLAppt.save

Set OLAppt = Nothing
OLNameSpace.Logoff
Set OLApp = Nothing
Set OLNameSpace = Nothing
Set OLRecipient = Nothing

Open in new window

0
Comment
Question by:Wilder1626
  • 18
  • 10
29 Comments
 
LVL 40
ID: 36481462
This is standard code that does nothing special. I do not see why it should not work as in VB.NET once the references to Outlook will be set, just as you did in VB6.
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36481569
Hello James

Is there a change that since i'm in Microsoft outlook 2010, that would be the reason why it is not working?
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36481593
It looks like i have an issue with these part of the code:

Dim OLApp As Outlook.Application

Dim OLAppt As Outlook.AppointmentItem

OLApp = New Outlook.Application

OLNameSpace.Logon("Logon Name", "Password", False, True)

OLRecipient = OLNameSpace.CreateRecipient("Art@Bell.ca")

OLAppt = OLNameSpace.GetSharedDefaultFolder(OLRecipient, olFolderCalendar).Items.Add

It says that Type Outlook.Application is not defined,

Outlook.AppointmentItem is not defined

Logon is not a member


0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36481798
This is where i have all the error.
(See full code bellow).

I have also put this:
Option Explicit On
Public Class Form2

    Public olNameSpace As Outlook.NameSpace
    Public olRecipient As Outlook.Recipient



Namespace Outlook
    Public Class [NameSpace]

        Sub Logoff()
            Throw New NotImplementedException
        End Sub

    End Class
End Namespace


Namespace Outlook
    Public Class Recipient

    End Class
End Namespace


But still does not work.
calendar.jpg
0
 
LVL 40
ID: 36481979
Did you add a reference to Outlook in the project's references:

Project... Add Reference... COM... Microsoft Outlook xx.xx Object Library
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36481990
yes i did.


Sans-titre.jpg
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36481995
These are all the errors.

I just found this:

error.jpg
0
 
LVL 40
ID: 36482767
Did you define the namespace in an Import somewhere? In .NET, you need to specify the namespace (akind to a path for a file) to access a class.

The complete path for the Outlook classes would be:
Dim olApp As Microsoft.Office.Interop.Outlook.Application

Open in new window

Since it could be a pain to use everywhere, you could define an Imports at the top of your code, just after your Option Explicit:
Option Explicit On
Imports Microsoft.Office.Interop

Open in new window

That way you do not have to repeat the path each time you reference an object (akind to the PATH environment variable for files, if you know about that stuff), and the code I was from would probably compile.
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36483818
Oh, this is a very good step forward.

Now, only one other issue.


OldFolderCalendar.jpg
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36484740
Hello again,

What does this means:

 Error      1      Value of type 'Microsoft.Office.Interop.Outlook.CalendarModule' cannot be converted to 'Microsoft.Office.Interop.Outlook.OlDefaultFolders'.      C:\Users\Jean-Marc\Desktop\Le vignoble project 2010\Le vignoble\Le vignoble\Form2.vb      59      66      Le vignoble

Is this a good declaration: Dim olFolderCalendar As Microsoft.Office.Interop.Outlook.CalendarView
0
 
LVL 40
ID: 36484752
Slowly, but surely. That is typical of a copy from VB6 to VB.NET.

VB.NET is more strict than VB6, and requires to be more precise in what to tell it to do. This needs a little more work, but is greatly compensated by the fact that you usually end up with a lot less bugs when running the application.

I do not have the same error as you have, so it might be something else, or the fact that we are running different versions of Outlook. But I can make the line compile with the following corrections.

In .NET, when you use a constant from an enumeration, you need to specify the name of the enumeration. So olFolderCalendar should be OlDefaultFolders.olFolderCalendar.

There is another one you might have afterward, depending on settings in your environment. The Add method you call returns an Object (this can be anything) that you try to store in an AppointmentItem (this is a specific item). The compiler sees a potential problem there and what you to confirm by specifying a conversion:

olAppt = CType(olnamespace.GetSharedDefaultFolder(olrecipient, OlDefaultFolders.olFolderCalendar).Items.Add, Microsoft.Office.Interop.Outlook.AppointmentItem)

Hope this one gets it canned.
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36484810
Hummmm

I still have an operation issue, cannot find the object.

Ans i only have Microsoft Office Outlook 2010.


  Dim olApp As Microsoft.Office.Interop.Outlook.Application
        Dim OLNameSpace As Microsoft.Office.Interop.Outlook.NameSpace
        Dim OLRecipient As Microsoft.Office.Interop.Outlook.Recipient
        Dim olappt As Microsoft.Office.Interop.Outlook.AppointmentItem



        olApp = New Microsoft.Office.Interop.Outlook.Application
        OLNameSpace = OLApp.GetNamespace("MAPI")
        OLNameSpace.Logoff()
        OLNameSpace.Logon("Logon Name", "Password", False, True)

        olRecipient = OLNameSpace.CreateRecipient("jpoitra@videotron.ca")
        olappt = CType(OLNameSpace.GetSharedDefaultFolder(OLRecipient, Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar).Items.Add, Microsoft.Office.Interop.Outlook.AppointmentItem)
        OLAppt.Location = "Location"
        OLAppt.Subject = "Subject"
        OLAppt.Body = "Testing for calendar add"
        OLAppt.Start = CDate("12/31/00 01:00 AM")
        OLAppt.End = CDate("12/31/00 01:01 AM")
        OLAppt.save()

        OLAppt = Nothing
        OLNameSpace.Logoff()
        OLApp = Nothing
        OLNameSpace = Nothing
        OLRecipient = Nothing

Open in new window


This is so strange.
0
 
LVL 40
ID: 36484841
Je vais devoir y aller en théorie sur celui-là, je n'ai pas ces objets dans mes références à Outlook 2007 :-).

I suppose that you are in Office 2010 and that CalendarView and CalendarModule are new objects.

Same as in the previous post, you probably need to do a conversion. This can come tedious at some point.

One way to help is to add Options Strict Off in the header of your file, at the same point where you have Option Explicit. This is not something to do regularly, because it removes a lot of checking from the compiler, and you might end up with runtime bugs that can be a lot harder to debug than simple syntax corrections in the code. This also lowers the performance a bit.

But when you work with stuff that was not made in .NET, such as Outlook, it might help you when you write your code, because the conversions will then be intrinsect, they will be done at runtime without your intervention.
0
 
LVL 40
ID: 36484864
Which line receives the Cannot find the object ?
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 11

Author Comment

by:Wilder1626
ID: 36484871
Bonjour :)

Tu parles français.

Exact, i'M with Office 2010 and that CalendarView and CalendarModule are new objects.

When you are saying to do a conversion, are you saying to go back to 2007?


Still have the same error after adding the Option strict off:

Option Explicit On
Option Strict Off
Imports Microsoft.Office.Interop


0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36484879
The cannot find the object is with this line:
olappt = CType(OLNameSpace.GetSharedDefaultFolder(OLRecipient, Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar).Items.Add, Microsoft.Office.Interop.Outlook.AppointmentItem)

Open in new window

0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36484894
Let me try something here. I have just upgrade to Office 2010 for business purpose.

I can can still install the 2007 licence again.

Let me try this.
 
0
 
LVL 40
ID: 36484932
Oui je parle français, et on n'est pas loin quand je vois videotron.ca. Jacques Bourgeois (James Burger) à Longueuil. Formateur Visual Basic chez Technologia. Qui travaille un peu, même si c'est congé aujourd'hui.

When I talk about conversion, I talk about converting an object type into another one.

You might have used functions such as CInt or CStr in VB6. .NET being more strict on types has extended the concept to all the system. You often have to make a conversion from one object to another. For the basic types you can still use the old VB6 functions. For some other types, there is a method to convert it into another one. For more general things, you use a CType (as in one of my previous posts) or DirectCast which as the same syntax.

For the Cannot find object, it is a runtime error, isn't it? I won't be able to help you with that one. It's been a few years since I last worked with Outlook, so memory is bad on that subject. And since we are in different environments, tests I could make here would have no relevance to what you live.

I can help you with compilers errors, but not with runtime errors.
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36484967
Ça me fait plaisir de te connaitre.

Jean-Marc Poitras de St-Basile-Le-Grand. System annaliste en Transport. Passionné du VB6 et maintenant VS 2010.

Ok, so i will start to reinstall Office 2007, and change all references.

Once done, i will try to run it again, to see if this will work.

I will let you know.

Thanks again for your help. really appreciate.
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36485454
Ok, now back on track with Outlook 2007.

Now, i have an error with: Impossible d'effectuer un cast d'un objet COM de type 'Microsoft.Office.Interop.Outlook.ApplicationClass' en type d'interface 'Microsoft.Office.Interop.Outlook._Application'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{00063001-0000-0000-C000-000000000046}' a échoué en raison de l'erreur suivante : Erreur lors du chargement de la bibliothèque/DLL du type.

on this code:
OLNameSpace = olApp.GetNamespace("MAPI")

Open in new window



Here is my full code now:
Option Explicit On
Imports Microsoft.Office.Interop
Public Class Form2

    Public olNameSpace As Outlook.NameSpace
    Public olRecipient As Outlook.Recipient




  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim olApp As Microsoft.Office.Interop.Outlook.Application
        Dim OLNameSpace As Microsoft.Office.Interop.Outlook.NameSpace
        Dim OLRecipient As Microsoft.Office.Interop.Outlook.Recipient
        Dim olappt As Microsoft.Office.Interop.Outlook.AppointmentItem




        olApp = New Microsoft.Office.Interop.Outlook.Application
        OLNameSpace = olApp.GetNamespace("MAPI")
        OLNameSpace.Logoff()
        OLNameSpace.Logon("Logon Name", "Password", False, True)

        OLRecipient = OLNameSpace.CreateRecipient("jpoitra@videotron.ca")
        olappt = CType(OLNameSpace.GetSharedDefaultFolder(OLRecipient, Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar).Items.Add, Microsoft.Office.Interop.Outlook.AppointmentItem)
        OLAppt.Location = "Location"
        OLAppt.Subject = "Subject"
        OLAppt.Body = "Testing for calendar add"
        OLAppt.Start = CDate("12/31/00 01:00 AM")
        OLAppt.End = CDate("12/31/00 01:01 AM")
        OLAppt.save()

        OLAppt = Nothing
        OLNameSpace.Logoff()
        olApp = Nothing
        OLNameSpace = Nothing
        OLRecipient = Nothing

    End Sub

Open in new window

refrences.jpg
0
 
LVL 40
ID: 36485649
Salut Jean-Marc.

The references seem good, 12.0 is the version # for Office 2007.

Now here is what I suspect. These things are driving a lot of people crazy.

VB.NET (and all .NET languages except C++) cannot talk directly to Outlook or any other COM application. To improve security and reliability, Microsoft removed the notion of pointers (working on an address in memory) from .NET. On the other side, COM is all pointers. There is also the problem of some data types that have completely changed. A Date in a COM application is a Double, while in .NET it is a Long.

So, in order for a .NET application to be able to talk to a COM application (which all Office is), it needs to use an intermediate, called an Interop, which is a dll written in C++ that acts as a bridge between you .NET application and COM. Being .NET, you can talk to it, being in C++ it can talk to COM, and being knowledgeable of the differences between the 2 environments, it can make the necessary conversions between types that have changed formats.

Your .NET application thus calls the Interop, which calls Outlook, which answers to the Interop, which translates anythin that needs to be and finally sends you back the result. This works once it is properly set up. But these things are so dependant on the version, that they can cause headaches.

What I suspect, but only on intuition by the kind of errors I see about the interfaces being wrong, the problem could very well be something else, is that you might be stuck with Outlook 2007, but that the old Interop is lying somewhere. There is always a risk to take when reverting to an older version of something such as Office.

There is an install option when you install Office, that needs to be set individually for each applications, to install .NET Programmability Support. This is the Interop. Was this set for Outlook when you reinstalled Office 2007? You can launch the Add of Remove Features for Office 2007 in the Control Panel to check if it was installed, and install from there otherwise.

I would also try something else, just in case. It looks to me as if you have too many references. Do you really need a reference to DAO??? I have seen a few rare occasions where superfluous references misled the compiler.

In the upper right corner of the reference tab, you have a button to check for Unused references. Try it. It checks your code against your references and tells you of any reference that is not needed by your actual code. You can then remove them until you really need them.

A last possible solution, that I personnally dislike, but a lot of people prefer to work that way for different reasons. Personnally, I dislike it because you end up working with a lot of Object variables, losing IntelliSense and any possibility for the compiler to check on you to make sure that you use properties, methods and parameters that are right for the object. I never had to use it in .NET, but a lot of people tell that it solved "their" problem, whatever the problem is.

Use CreateObject instead of New when you initialize a variable. This is old stuff from the times of VB3, needed to be used sometimes in VB4, and is the only way to go in VBScript. New is a lot better to use. But if it could solve your problem, at least until you find a better solution...

From my side, that is all I can tell you. I have done a lot of work with Word, Excel and Access from .NET. As everybody trying to connect .NET with Office, I had a few little problems such as the ones you had up to now, but nothing that was very hard to correct. I never got something as hard to comprehend as your last one. Nothing with Outlook, which has its own peculiarities because in interacts with a few other components (MAPI (rings a bell?), Exchange and a few others).

You might want to search for 00063001-0000-0000-C000-000000000046. On Bing, it gives me 8 pages of hits. Seems to be a frequent error. You might find a better answer than mine there.

I will keep following the thread in case I see something that can trigger an idea, but I have a whole week of training this week, I won't be at my computer as was the case today.

Bonne chance.

0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36488250
Bonjour,

Thank you so much for all these information.

Really appreciate you help on this.

Actually, i'm learning also with all these information.

O will follow your instructions and i will let you know what happen.

I have also removed all extra references but i still have the same issue.

I will start looking also in Google friend for :00063001-0000-0000-C000-000000000046.

If i also find something, i will let you know for sure.

Thanks again for your help, also on a holiday day. :)
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36489392
Hello again,

Is there a chance that this would be the issue?

This:
Option Explicit On
Imports Microsoft.Office.Interop

Open in new window


Should it be:
Option Explicit On
Imports Extensibility
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports Outlook = Microsoft.Office.Interop.Outlook
Imports Microsoft.Office.Core
Imports Microsoft.Win32

Open in new window


I will have to test that tonight.
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36492447
Hello all,

Just to let you know that i'm always facing the same issue on this part of the code:

 olappt = CType(OLNameSpace.GetSharedDefaultFolder(OLRecipient, Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar).Items.Add, Microsoft.Office.Interop.Outlook.AppointmentItem)
        olappt.Location = "Location"

Open in new window



System.Runtime.InteropServices.COMException was unhandled
  ErrorCode=-2147221233
  Message=Échec de l'opération. Impossible de trouver un objet.
  Source=Microsoft Office Outlook
  StackTrace:
       at Microsoft.Office.Interop.Outlook.NameSpaceClass.GetSharedDefaultFolder(Recipient Recipient, OlDefaultFolders FolderType)
       at Le_vignoble.Form2.Button2_Click(Object sender, EventArgs e) in C:\Users\Jean-Marc\Desktop\Le vignoble project 2010\Le vignoble\Le vignoble\Form2.vb:line 62
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(ApplicationContext context)
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       at Le_vignoble.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
       at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
       at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
       at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
       at System.Activator.CreateInstance(ActivationContext activationContext)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

Open in new window

0
 
LVL 40

Accepted Solution

by:
Jacques Bourgeois (James Burger) earned 500 total points
ID: 36492613
Salut Wilder.

The Imports has nothing to do with it. Imports are used when you are tired of having to define the namespace all the time.

Instead of writing Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar, if you have an Import on Microsoft.Office.Interop.Outlook, you can simply type OlDefaultFolders.olFolderCalendar in the code. They are akind to the Path environment variable for files if you know that concept.

When you use the alternative syntax: Imports Outlook = Microsoft.Office.Interop.Outlook you are simply defining an Alias. That means that the compiler sees a single Outlook. (with the dot), it will interpret it as Microsoft.Office.Interop.Outlook. Once again, thats a way to define a shortcut that might have more meaning to you: Outllook.OlDefaultFolders.olFolderCalendar will be the same as Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar for the compiler.

As for the error, sorry. The damn COMExceptions are so imprecise. Which of the objects was not found. These exceptions come from Outlook, not from .NET. .NET errors are usually more straigthforward. A COMException could be almost anything. I have learn not to always trust the message. You get something new in there however: ErrorCode=-2147221233. Something else to Google about (Have you tried www.bing.com instead of Google? Since it does not live in advertisement, it is often a lot more to the point. And since it is the Microsoft search Engine, it often puts things about Microsoft higher in the search result, which is ideal when you have problems with Microsoft products).

Once again, good luck.




0
 
LVL 11

Author Comment

by:Wilder1626
ID: 36497134
Oh! ok thanks.

I will have fun with that one.

If i found something, i will let you know for sure.

But i'm still searching.
0
 
LVL 11

Author Closing Comment

by:Wilder1626
ID: 36499993
Bonjour Jacques.

Thanks again for all your help. I have learned other things with you at the same.

But i was still not able for know to make it work.

I will keep on searching and if i found something, i will let you know.

Thanks again for your time in all of this.

Merci encore beaucoup,
0
 
LVL 40
ID: 36500122
Tient le coup. Keep going on.

.NET is a wonderful environment. A little strict for an amateur, but a wonderful tool for a professional.

The kind of problem you had is not typical. Making 2 technologies work together has always been tough, and Microsoft did quite a good job, taking into account the difficulty of making technologies that are 15 years apart work together (even when you are on Office 2010, COM is an old technology). Ask anybody who has a Mac if he can still run applications that are 15 years old, all alone? You won't even have to ask the second question. Having something from today work hand in hand with something from 15 years ago.

You just fell into one of the holes instead of rising with the pleasure of working in that environment. And I am not a Microsoft geek, far from it. My hobby is woodworking. I love tools that are well designed and help me do what I want to do. I also like great tools when I am working with a computer. Visual Studio and .NET are but a tool, but a pretty good one.

0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now