Some Notes in support of this main forum post:
https://eileenslounge.com/viewtopic....326247#p326247
For some later pondering
Some Notes in support of this main forum post:
https://eileenslounge.com/viewtopic....326247#p326247
For some later pondering
Last edited by DocAElstein; 03-31-2025 at 11:30 PM.
In support of this main forum post
https://eileenslounge.com/viewtopic....326389#p326389 , https://eileenslounge.com/viewtopic....326431#p326431
It’s in way of a correction and update to this post
https://eileenslounge.com/viewtopic....326377#p326377
Here is the 12 in total that I missed.
As a punishment I will look at all those, to both correct if necessary my last conclusions and see if there is anything new to learnCode:{BED7F4EA-1A96-11D2-8F08-00A0C9A6186D} 1.a Common Language Runtime Library {A4D51C5D-F8BF-46CC-92CC-2B34D2D89714} e.0 LicLuaLib {54AF9343-1923-11D3-9CA4-00C04F72C514} 2.32 Microsoft Data Access Components Installed Version {4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28} c.0 Microsoft Office 14.0 Access Database Engine Object Library {A5EDEDF4-2BBC-45F3-822B-E60C278A1A79} b.0 Microsoft Office Document Imaging 11.0 Type Library {91493440-5A91-11CF-8700-00AA0060263B} 2.a Microsoft PowerPoint 14.0 Object Library {AAB9C2AA-6036-4AE1-A41C-A40AB7F39520} a.0 Microsoft Visual Studio Tools for Office Execution Engine Type Library {FB1B729D-440F-4E42-87F8-5ABF7068E5D4} 14.00 OneNote COM Elevation Type Library {BEE4BFEC-6683-3E67-9167-3C0CBC68F40A} 1.a System.dll {D37E2A3E-8545-3A39-9F4F-31827C9124AB} 1.a System.Drawing.dll {215D64D2-031C-33C7-96E3-61794CD1EE61} 1.a System.Windows.Forms.dll {4FB2D46F-EFC8-4643-BCD0-6E5BFA6A174C} 1.a System_EnterpriseServices
{BED7F4EA-1A96-11D2-8F08-00A0C9A6186D} 1.a Common Language Runtime Library
I got previously 1 Common Language Runtime Library already, so correcting the situation means I have 2 in the list, but as only 1 is showing in the little reference checking window. So I need a correction to my last results, to highlight one of them in yellow to indicate an extra version in the list that does not appear in the reference checking window. (Note in passing for now that the path to the "thing" ends up at a mscorlib.tlb
But we are not finished with this one. In fact there are 3 versions in the registry.
https://i.postimg.cc/MGJL38PZ/Common...ibrary-1-0.jpg
https://i.postimg.cc/dVyX909S/Common...ibrary-1-a.jpg
https://i.postimg.cc/HsKR5Mby/Common...corlib-dll.jpg
Weird? – Where's the third in the list then?. I can half explain that. Take a look at the "human readable description" / "TypeLib human readable name" / name in that little reference checking window .
https://i.postimg.cc/HsKR5Mby/Common...corlib-dll.jpg
It is different for the third Common Language Runtime Library version (version 2.0 ) , - it looks like a file name, which happens sometimes, by design or accident I am not sure. In this case the file name is mscorlib.dll
So scroll down and Bingo, there it is. https://i.postimg.cc/6Q9Fqf5R/Scroll...here-it-is.jpg
https://i.postimg.cc/HsKR5Mby/Common...corlib-dll.jpg
So this third one does not effect my results as it was always in the list, but a bit hidden as it did not have the "human readable description" / "TypeLib human readable name" / name in that little reference checking window name that I expected.
Note a last little weirdness here…. The the "human readable description" / "TypeLib human readable name" / name in that little reference checking window name is mscorlib.dll, but the path*** ends up at mscorlib.tlb like the others.
(*** A little tip I learnt from this is when I look in the little reference window to see if a reference is there, then if I tick it temporarily , then the little box at the bottom gives me the path to the .dll or similar file. (Sometimes unfortunately the path is a bit long for the box, and you can't scroll or expand anything so you miss the last bit. It would not surprise me if we could gat a list of those as well with a Winny or maybe even API coding?)
_.__________________
The following do not effect any of my conclusions and there is nothing new to learn from them. I just missed them, because of there less typical version number, that's all
_.______________________Code:{A4D51C5D-F8BF-46CC-92CC-2B34D2D89714} e.0 LicLuaLib {54AF9343-1923-11D3-9CA4-00C04F72C514} 2.32 Microsoft Data Access Components Installed Version {4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28} c.0 Microsoft Office 14.0 Access Database Engine Object Library {A5EDEDF4-2BBC-45F3-822B-E60C278A1A79} b.0 Microsoft Office Document Imaging 11.0 Type Library {91493440-5A91-11CF-8700-00AA0060263B} 2.a Microsoft PowerPoint 14.0 Object Library {AAB9C2AA-6036-4AE1-A41C-A40AB7F39520} a.0 Microsoft Visual Studio Tools for Office Execution Engine Type Library {FB1B729D-440F-4E42-87F8-5ABF7068E5D4} 14.00 OneNote COM Elevation Type Library
This next one
{BEE4BFEC-6683-3E67-9167-3C0CBC68F40A} 1.a System.dll
,has a story that is a bit of a variation on the first ( {BED7F4EA-1A96-11D2-8F08-00A0C9A6186D} 1.a Common Language Runtime Library ) story, but with a bit of a twisting quirk:
There are three versions. They all end up in a file, system.tlb but for some strange reason the "human readable description" / "TypeLib human readable name" / name in that little reference checking window names for the three versions are not all the same. The first two are, and are of the file form, but the third looks like the .dll fell off
System.dll https://i.postimg.cc/3x59YFgn/System-dll-1-0.jpg
System.dll https://i.postimg.cc/Pf72FjNG/System-dll-1-a.jpg
System https://i.postimg.cc/L5GDqzG4/System-2-0.jpg
How weird and mixed up is that?
(Only 1 System.dll is in the "human readable description" / "TypeLib human readable name" / name in that little reference checking window , so appropriately I modify my previous results to give another yellow background to indicate an extra version in the Winnie list that does not appear in the reference checking window )
_________________________
{D37E2A3E-8545-3A39-9F4F-31827C9124AB} 1.a System.Drawing.dll
I had missed one of these, meaning that there are 3 versions, and as only 2 are in the reference checking window , I need to add a yellow background to indicate an extra version in the Winnie list that does not appear in the reference checking window
https://i.postimg.cc/WzdSb9Wf/System...ng-dll-1-0.jpg
https://i.postimg.cc/d1H4FMBy/System...ng-dll-1-a.jpg
https://i.postimg.cc/MTxhH8V3/System...ng-dll-2-0.jpg
_._____________________________________
{215D64D2-031C-33C7-96E3-61794CD1EE61} 1.a System.Windows.Forms.dll
The same story here as the very fist story. I missed one of 3 in the registry, and with the same twist in the tale of the first two ( version 1.0 and version 1.a ), having the same "TypeLib human readable name" , and that name is different to the last version "TypeLib human readable name" (version 2.0)
https://i.postimg.cc/CK4cvnnJ/System...ms-dll-1-0.jpg
https://i.postimg.cc/VNw7BWvd/System...ms-dll-1-a.jpg
https://i.postimg.cc/jdG3Cbr6/System...ms-dll-2-0.jpg
As before, only one of the first name appears in the little reference checking window, so I need to add a yellow background to indicate an extra version in the Winnie list that does not appear in the reference checking window
The third name, System_Windows_Forms , appears and always did in Winnie lists and so effects nothing
_.________________________________________________ _________________-
{4FB2D46F-EFC8-4643-BCD0-6E5BFA6A174C} 1.a System_EnterpriseServices
I missed one in my Winnie list, making 3 in total, and 3 are also seen in the registry, but only two in the little reference checking window so time to add another yellow background to indicate an extra version in the Winnie list that does not appear in the reference checking window
_._____________________________________-
As far as my previous conclusions are concerned not much error was caused in my general conclusions:
I had to add a few yellow backgrounds to indicate when a version did not appear in the "human readable description" / "TypeLib human readable name" / name in that little reference checking window ;
But none of the files I missed are those with the light blue background, which means there is no change in the conclusion that some things in the Winnie got lists are not at all in any version in the "human readable description" / "TypeLib human readable name" / name in that little reference checking window . Investigating that, and probably a few other things, will need a lot more time a lot later.
Here is the final corrected stats
472 from Winnie
472
- 33 lightblue (not anywhere in the reference checking window)
- 17 yellow ( extra versions not anywhere in the reference checking window )
= 424 in reference checking window
Alan
Last edited by DocAElstein; 04-06-2025 at 01:33 PM.
This is posts https://www.excelfox.com/forum/showt...age3#post25028
https://www.excelfox.com/forum/showt...age2#post25032
Some extra notes to go with these main forum post
https://eileenslounge.com/viewtopic....326446#p326446
I am catching up here and responding to some of the interesting info in this post
I might also be responding to the second half of this one , bit I still have not quite figured out what was being said there. ( I wasn't confused by the AidFromGuid metjhopd , - I know that's the SiP syndrone (Smartphone In Pub) :smile: )
Or maybe I am just pondering, a not uncommon occurrence
So… Update so far, and introduction to current stand
Going back a year and / or 4, we have tangled with "Clsid registry lists" before, and the digressions here forced me to revise them again, from and around here , or there abouts.
I had back then a bad Winniemidgetgismo coding, and Mike did it better, (a not un common state of affairs in recent years….)
It ended up like this
https://i.postimg.cc/Y9Q7rPYQ/Old-Clsid-Lists.jpg
The coding that got the lists…
What I tried was I Initially got just the Clsid list and then, a while later, I tried to stick them pseudo in a
Obj = CreateObject("New:" & MeClisid & "")
, see what happened. It did not damage or break too much on my computers, at last not all of them always, but I was not too sure what was going on. If an attempt did not error or break something, then I did a
TypeName(Obj)
, on the resulting object. I am not sure why I did that, I expect I just thought at the time that somebody perhaps should. I had no idea what the results were telling me.
You ( You= Mike ) in your coding equivalent got both the Clsid list and a ProgID. (And as I understand a bit better the winygismo codings I know now where that came from). Your code never errored or broke things like mine did, and there were sometimes similarities with your ProgID results and my TypeName(Obj), for the same Clisid
https://www.excelfox.com/forum/showt...ll=1#post25010
https://www.excelfox.com/forum/showt...ll=1#post25012
CLSDsUndClassNames.xls - https://app.box.com/s/nkjwti5yym9j0v634hrxerz4x7n1o90w
But I was still none the wiser on what it all meant..
But I am getting there now…
So lets look at your current example : https://i.postimg.cc/NMvg1Dw0/Little...ng-Runtime.jpg https://i.postimg.cc/7hD0QSSH/Micros...e-adding-a.jpg This is whre we might fist come across it, when "checking a reference for Early Binding"
We have learnt now that the relevant word to use there is the "human readable description" or "TypeLib human readable name", aka the name to look for in the little window for checking a reference
, - and here it is in "the Clsids" file of mine from s few years back
https://i.postimg.cc/05f8w7X8/Clsid-...ng-Runtime.jpg ,
{0D43FE01-F093-11CF-8940-00A0C9054228} Tried FileSystemObject {0D43FE01-F093-11CF-8940-00A0C9054228} Scripting.FileSystemObject
Here we can see it again in the little reference checking VB Editor window, https://i.postimg.cc/NMvg1Dw0/Little...ng-Runtime.jpg, but that is perhaps not coming from directly from there, well maybe it is sort of,….
This is something new we picked up, Here it is (a different Guid number note), in the Registry Hive HKEY_CLASSES_ROOT , at the path TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}\1.0
https://i.postimg.cc/J01MFh0V/Reg-Ty...ng-Runtime.jpg
And we got some more recent Winnie codings to get that TypeLib info
{420B2830-E718-11CF-893D-00A0C9054228} 1.0 Microsoft Scripting Runtime
So that is a refresh on the Clsid stuff, and a bit extra about the TypeLib Guid
( This is also the Guid used in the .AddFroGuid – We do not use the Clsid Guid there! )
Now we will move on in the next post
Last edited by DocAElstein; 04-09-2025 at 07:10 PM.
This is posts https://www.excelfox.com/forum/showt...ll=1#post25033
https://www.excelfox.com/forum/showt...ll=1#post25033
https://www.excelfox.com/forum/showt...age2#post25033
https://www.excelfox.com/forum/showt...ll=1#post25034
https://www.excelfox.com/forum/showt...ll=1#post25034
https://www.excelfox.com/forum/showt...age3#post25034
I am slightly upset at this point that the two different Guids in the last post
_ { the Clsid Guid }
and
_ { the other Guid ( related to "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external library reference from the VB Editor , and the one to use in the .AddFromGuid ) }
are not more similar. Here they are again,
{0D43FE01-F093-11CF-8940-00A0C9054228} ' Clsid Guid FileSystemObject Scripting.FileSystemObject
{420B2830-E718-11CF-893D-00A0C9054228} ' TypeLib Guid 1.0 Microsoft Scripting Runtime
( But they are a bit similar. Maybe part of them would always be the same?? )
However, all is not lost., or maybe not always. Take a look at the other info that is sometimes there for a Clsid:
https://i.postimg.cc/HW543w1J/Micros...c-Server32.jpg
https://i.postimg.cc/90GdMhYP/Micros...me-Prog-ID.jpg
https://i.postimg.cc/XqMK4Jd7/Micros...e-Type-Lib.jpg
https://i.postimg.cc/Bv6BCRJs/Micros...me-Version.jpg
Microsoft Scripting Runtime InprocServer32.JPGMicrosoft Scripting Runtime ProgID.JPGMicrosoft Scripting Runtime Version.JPGMicrosoft Scripting Runtime TypeLib.JPG
In particular this: https://i.postimg.cc/nc3B0jrx/Micros...e-Type-Lib.jpg
So we can see that the info to the TypeLib ( related to "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external library reference from the VB Editor, which is also the one to use in the .AddFromGuid ) is also there.
What next, getting a bit confused with different Guids and different registry issues.
I think at this stage, I want to extend the investigation into the Guids on the XP machine that I recently I did the extensive Guid lists on ( https://eileenslounge.com/viewtopic....326377#p326377
https://eileenslounge.com/viewtopic....326431#p326431 ) , just to check out the full Clsid/ Guid situation before and perhaps after the TLBINF.dll registration
Last edited by DocAElstein; 04-09-2025 at 09:08 PM.
Clsid and other Guid lists reviewWe have
_ (i) some newer "TypeLib"codings, ( including a API one!! from Mike ) which look at the Guid ( "TypeLib Guid" )related to "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external library reference from the VB Editor which is also the one to use in the .AddFromGuid . The full list of these Guids is at the registry path Computer HKEY_CLASSES_ROOT TypeLib
and
_(ii) an older "Clsid Guid" getting set of codings from me and Mike, reviewed again recently from about here: https://www.excelfox.com/forum/showt...ll=1#post25008
In this post I would like to update again the latter earlier Clsid Guid codings, or rather make a new single one, to include, or at least investigate, the possibility of getting the TypeLib Guid as well from it, and some other information, following the discussions of the last posts, which showed that sometimes we may have that TypeLib Guid and/ or other information "at the Clisid" list, as it were.
This post discusses the coding. The over next posts discusses the results
Rem 1 The first thing it does is get the full Clsid list at the registry Computer\HKEY_CLASSES_ROOT\CLSID using the Winnie way.
There are 4972 Clsids for the XP Notebook that I have recently been using in these recent discussions ( My name for that notebook is Keks, or KeksXP or similar ). (The returned array has 4973 elements, the first one, indicia 0, has a text in it CLSID )
This code next line puts the full CLSID list from here , https://i.postimg.cc/Tw8Th8bH/Comput...ROOT-CLSID.jpg , https://i.postimg.cc/L4DhQXL9/HKEY-C...ROOT-CLSID.jpg , into the Array Clsids(),
RegInfoPro.EnumKey RegHive, "CLSID", Clsids()
In each of the , ====== main loopings, each Clsid is listed in one column, and then that same Clsid is further used to get other column outputs, (if they are available, "at the Clsid") :
Rem 3 InprocServer32 ' This seems to be the .dll or similar file
Rem 4 ProgID - see Mike here https://eileenslounge.com/viewtopic....326247#p326247 - ProgID is [Library].[Object]
Rem 5 Version number held "at the Clsid"
Rem 6 TypeLib Guid if there is one held "at the Clsid"
Rem 7 Try to make an object type with Obj = CreateObject("New:" & { The Clsid } & "") , then, if successful try to do a TypeName(LateBndObj) on that object
( In the previous codings from a year or 4 ago, we did just the
ProgID from Mike
, and the
Try to make an object type with Obj = CreateObject("New:" & { The Clsid } & "") , then, if successful try to do a TypeName(LateBndObj) on that object from me
The results were similar. )
So far the coding discussed is a slightly more detailed info getting version of the previous Clsid codings.
But there is one further important new part of this coding:
'6b - we investigate the specific TypeLib Guid , (if there was one at the Clsid) , at the place where the full TypeLib Guid list is. We expect that the TypeLib Guid will mostly be there but we investigate if there are other more than one version, as well as comparing the actual version numbers there with that of Rem 5 Version number held "at the Clsid"
Last edited by DocAElstein; 04-10-2025 at 01:56 AM.
Coding discussed in last post.
Results and conclusions in next posts
Code:Option Explicit Sub BonnieBonnieBoundsOfCLSIDs() ' https://www.excelfox.com/forum/showthread.php/2997-Testies-external-shared-Libraries-regedit-registry?p=25037&viewfull=1#post25037 ' KeksXP() Rem 0 On Error GoTo OtherError Dim Ws As Worksheet: Set Ws = Me Let Ws.Range("A1:I1") = Array("Ind Rw", "TypeName(Obj)", "ProgID", "Clsid", "Version at Clsid", "TypeLib Guid", "Version at TypeLib", "Human readable name", "File") 'Me.Columns("A:I").Clear Dim StrCom As String: Let StrCom = "." Dim RegInfoPro As Object: Set RegInfoPro = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & StrCom & "\root\default:StdRegProv") Dim RegHive As Long: Let RegHive = -214748364.8 * 10 Rem 1 Clsids - for Clsid output, (but also to use for the other outputs) Dim Clsids() As Variant RegInfoPro.EnumKey RegHive, "CLSID", Clsids() ' Computer\HKEY_CLASSES_ROOT , CLSID , here comes the big array of all ya Clsids Dim ClsInfCnt As Long, Rw As Long: Let Rw = 1 ' This keeps track of the rows - there will likely be more than there are Clsids as we need an extra row for versions at the TypeLib place For ClsInfCnt = LBound(Clsids()) To UBound(Clsids()) ' The main Clsid Loop ======================= Let Rw = Rw + 1 ' Every Clsid is on a new line Let Ws.Range("A" & Rw & "") = ClsInfCnt & " " & Rw ' The first is a 0 and in the array is "CSID" after that in the array you get the { Guid thingy } format https://i.postimg.cc/mrHxggQD/Computer-HKEY-CLASSES-ROOT-CLSID.jpg Let Ws.Range("D" & Rw & "") = Clsids(ClsInfCnt) ' The main { Clsid thingy } Rem 3 InprocServer32 ' This seems to be the .dll or similar file Dim IprcSvr32 As Variant RegInfoPro.getstringvalue RegHive, "CLSID\" & Clsids(ClsInfCnt) & "\InprocServer32", "", IprcSvr32 If IsNull(IprcSvr32) Then Let Ws.Range("I" & Rw & "") = " -" Else Let Ws.Range("I" & Rw & "") = IprcSvr32 End If Rem 4 ProgID (- see Mike here https://eileenslounge.com/viewtopic.php?p=326247#p326247 ) if there is one held "at the Clsid" Dim PrgID As Variant RegInfoPro.getstringvalue RegHive, "CLSID\" & Clsids(ClsInfCnt) & "\ProgID", "", PrgID If IsNull(IprcSvr32) Then Let Ws.Range("C" & Rw & "") = " -" Else Let Ws.Range("C" & Rw & "") = PrgID End If Rem 5 Version numnber if there is one held "at the Clsid" Dim CGVers As Variant RegInfoPro.getstringvalue RegHive, "CLSID\" & Clsids(ClsInfCnt) & "\Version", "", CGVers If IsNull(CGVers) Then Let Ws.Range("E" & Rw & "") = " -" Else Let Ws.Range("E" & Rw & "") = "'" & CGVers End If Rem 6 TypeLib Guid if there is one held "at the Clsid" Dim TypeLibGuid As Variant RegInfoPro.getstringvalue RegHive, "CLSID\" & Clsids(ClsInfCnt) & "\TypeLib", "", TypeLibGuid If IsNull(TypeLibGuid) Then Let Ws.Range("F" & Rw & "") = " -" Else ' Time to get the array of versions Let Ws.Range("F" & Rw & "") = TypeLibGuid ' The Guid related to "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external Library reference from the VB Editor , and the one to use in the .AddFromGuid Dim Vers As Variant, CntV As Long ' Vers can be ab array or Null '6b) RegInfoPro.EnumKey RegHive, "TypeLib\" & TypeLibGuid, Vers If IsNull(Vers) Then Let Ws.Range("G" & Rw & "") = "Null versions at Computer\HKEY_CLASSES_ROOT\TypeLib" Else For CntV = LBound(Vers) To UBound(Vers) Let Ws.Range("G" & Rw & "") = "'" & Vers(CntV) Dim Description As String ' Might think about having this Variant. This is the "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external Library reference from the VB Editor , and the one to use in the .AddFromGuid RegInfoPro.getstringvalue RegHive, "TypeLib\" & TypeLibGuid & "\" & Vers(CntV), "", Description Let Ws.Range("H" & Rw & "") = Description If CntV < UBound(Vers) Then Let Rw = Rw + 1 ' we need an extra line for the next version Next CntV End If End If Rem 7 Try to make an object type ' Do this last as it can crash and/ or set the Devil loose Dim LateBndObj As Object On Error GoTo BadObjType ' I expect the next line often to error when I try to use Set LateBndObj = CreateObject("New:" & Clsids(ClsInfCnt) & "") On Error GoTo OtherError Let Ws.Range("B" & Rw & "") = TypeName(LateBndObj) BonniBanksOfLochLomond: ' Next ClsInfCnt ' The main Clsid loop ============================================================= Exit Sub BadObjType: Let Ws.Range("B" & Rw & "") = "Err '" & Err.Number & "': " & Err.Description Let Ws.Range("B" & Rw & "").Font.Color = 12632256 On Error GoTo -1 On Error GoTo OtherError GoTo BonniBanksOfLochLomond ' https://eileenslounge.com/viewtopic.php?p=326446#p326446 OtherError: Stop Debug.Print "Err '" & Err.Number & "': " & Err.Description & " " & ClsInfCnt & " " & Rw Stop Resume Next End Sub
Last edited by DocAElstein; 04-10-2025 at 12:45 PM.
This and the next post discuses the use and results of the coding from the last post in general terms, and in particular the typical errors and crashes. The next post discusses the results and conclusions in more detail.
Coding is development aid, mainly for use in F8 step mode. ( Rem 7 section problems )
The coding is more of a development tool, and aid, but is of little use as a code to run outright. This is mainly because of section Rem 7, which frequently causes crashes and other awkward happenings, and can even cause permanent effects and even damage to a computer.
Often Excel recovers itself after a crash, and fortunately seems to often return to a state just before the crash, so this is why section Rem 7 is done towards the end of a loop, as then information obtained from the other sections is often preserved when Excel re opens after recovering itself after a crash.
Also it is much easier to see accurately where a problem occurs in F8 step mode, as a run may miss a problem occasionally or a few problems may sometimes occur in different places before the coding stops/ crashes
It is unlikely that you can do much useful with this coding in, less than a day or two. It is only of use if you are having a detailed look at the Guids.
Having said that, if you remove section Rem 7, then you may get an entire run without errors. The coding is still quite slow and inefficient, but that is much better for learning and experimenting and learning, since the less efficient spreadsheet interaction codings both allow you to see better what is going on as well as catching results before a crash/ unexpected code stop.
The problems and errors are discussed very approximately in order of most significance and highest number of occurrences.
There are 4972 Clsid entries in the registry on the old XP computer used
Main Crashes
This is both the most predominant and most consistent problem. The cause and effect is almost always the same. A crash occurs at Obj = CreateObject("New:" & [The Clsid under investigation] & ""), and usually Excel recovers itself completely and even has all data obtained up to the crash. So for example in the example screen shot, a crash occurred for the Clsid array element of indicia 168 and 183, so we have no information in cells A168 or A183, ( TypeName(Obj) ), but we have some information in the other columns for those 2 Clsid
https://i.postimg.cc/PqHtYYPd/Crash.jpg
Crash.JPG
Often in such a case we also have no information in the third column ( ProgID ), but occasional there is also information there as well
https://i.postimg.cc/C1PY32JK/Crash-2.jpg
Crash 2.JPG
When this crash occurs, (and I would typically be running in F8 step mode, so clearly I would see that the error occurs at section Rem 7 at that indicia/row number), then, on restart, I would change in the coding the lower bound in the loop to 1 above the indicia which caused the problem, ( and correspondingly change the value of the variable Rw )
For example, after the first crash shown, I would, (before running the coding in F8 step mode), change the coding to
Code:Dim ClsInfCnt As Long, Rw As Long: Let Rw = 194 ' This keeps track of the rows - there will likely be more than there are Clsids as we need an extra row for versions at the TypeLib place For ClsInfCnt = 169(Clsids()) To UBound(Clsids()) ' The main Clsid Loop ======================= Let Rw = Rw + 1 ' Every Clsid is on a new line Let Ws.Range("A" & Rw & "") = ClsInfCnt & " " & Rw ' The first is a 0 and in the array is "CSID" after that in the array you get the { Guid thingy } format https://i.postimg.cc/mrHxggQD/Computer-HKEY-CLASSES-ROOT-CLSID.jpg Let Ws.Range("D" & Rw & "") = Clsids(ClsInfCnt) ' The main { Clsid thingy }
Last edited by DocAElstein; 04-10-2025 at 12:59 PM.
Bookmarks