Error using OCX “Class not registered” [VBA PowerPoint]

This page summarizes the projects mentioned and recommended in the original post on /r/vba

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • Socket.io

    Realtime application framework (Node.JS server)

    I guess that's my only option now. So I've taken a look at the link and imported all the code. I'm trying to connect to a server hosted in repl.it which runs in node.js and uses socket.io to receive the connection. I successfully managed to connect from another repl.it as a client to the server. However, I wasn't able to do it in VBA. I tried using the URL (https://TestServer.danielclmaco.repl.co) but that returned an error "Unknown Host". Then I took the IP from that URL and then it didn't return any error (I think) but the server didn't receive any connection.

  • upm

    ⠕ Universal Package Manager - Python, Node.js, Ruby, Emacs Lisp.

    I think the WinSock API should work, but we're using it the wrong way maybe? Because I tried connecting the socket created in repl.it using online websocket testing tools and none works. I was only able to connect from another repl. This either is because they are from the same domain or I'm doing something wrong, or both. There's still something I don't understand about connections, which is the host. In repl.it I can connect via the URL (https://TestServer.danielclmaco.repl.co), but when I test it in the websocket testing tools, it tells me to enter an IP address or an address that starts with ws. I think we're entering the wrong host.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • VbAsyncSocket

    Sockets with pure VB6 impl of TLS encryption

    Anyway, that link for VB6 looks poromising: https://github.com/wqweto/VbAsyncSocket - it is using calls to ws2_32,dll, so it is up to date. I'll dust off VB6 to see how it works in that version, before I try to use it with VBA. VBA is not quite the same as VB6, very similar language, but not all of the same features can be implemented.

  • webxcel

    🤔 A REST backend built with plain VBA Microsoft Excel macros. Yes. Macros.

    Option Explicit ' bits and pieces from: https://github.com/michaelneu/webxcel/blob/master/src/Modules/wsock32.bas ' and https://github.com/michaelneu/webxcel/blob/master/src/Classes/TcpClient.cls Public Const WSADESCRIPTION_LEN = 256 Public Const WSASYS_STATUS_LEN = 128 Public Const WSADESCRIPTION_LEN_ARRAY = WSADESCRIPTION_LEN + 1 Public Const WSASYS_STATUS_LEN_ARRAY = WSASYS_STATUS_LEN + 1 Public Type WSADATA wVersion As Integer wHighVersion As Integer szDescription As String * WSADESCRIPTION_LEN_ARRAY szSystemStatus As String * WSASYS_STATUS_LEN_ARRAY iMaxSockets As Integer iMaxUdpDg As Integer lpVendorInfo As String End Type Public Const AF_INET = 2 Public Const SOCK_STREAM = 1 Public Const INADDR_ANY = 0 Public Type IN_ADDR s_addr As Long End Type Public Type sockaddr_in sin_family As Integer sin_port As Integer sin_addr As IN_ADDR sin_zero As String * 8 End Type Public Const FD_SETSIZE = 64 Public Type fd_set fd_count As Integer fd_array(FD_SETSIZE) As Long End Type Public Type timeval tv_sec As Long tv_usec As Long End Type Public Type sockaddr sa_family As Integer sa_data As String * 14 End Type Public Const INVALID_SOCKET = -1 Public Const SOL_SOCKET = 65535 Public Const SO_RCVTIMEO = &H1006 Public Declare PtrSafe Function WSAStartup Lib "wsock32.dll" (ByVal versionRequired As Long, wsa As WSADATA) As Long Public Declare PtrSafe Function WSAGetLastError Lib "wsock32.dll" () As Long Public Declare PtrSafe Function WSACleanup Lib "wsock32.dll" () As Long Public Declare PtrSafe Function socket Lib "wsock32.dll" (ByVal addressFamily As Long, ByVal socketType As Long, ByVal protocol As Long) As Long Public Declare PtrSafe Function connect Lib "wsock32.dll" (ByVal s As Long, ByRef address As sockaddr_in, ByVal namelen As Long) As Long Public Declare PtrSafe Function htons Lib "wsock32.dll" (ByVal hostshort As Long) As Integer Public Declare PtrSafe Function bind Lib "wsock32.dll" (ByVal socket As Long, name As sockaddr_in, ByVal nameLength As Integer) As Long Public Declare PtrSafe Function listen Lib "wsock32.dll" (ByVal socket As Long, ByVal backlog As Integer) As Long Public Declare PtrSafe Function select_ Lib "wsock32.dll" Alias "select" (ByVal nfds As Integer, readfds As fd_set, writefds As fd_set, exceptfds As fd_set, timeout As timeval) As Integer Public Declare PtrSafe Function accept Lib "wsock32.dll" (ByVal socket As Long, clientAddress As sockaddr, clientAddressLength As Integer) As Long Public Declare PtrSafe Function setsockopt Lib "wsock32.dll" (ByVal socket As Long, ByVal level As Long, ByVal optname As Long, ByRef optval As Long, ByVal optlen As Integer) As Long Public Declare PtrSafe Function send Lib "wsock32.dll" (ByVal socket As Long, buffer As String, ByVal bufferLength As Long, ByVal flags As Long) As Long Public Declare PtrSafe Function recv Lib "wsock32.dll" (ByVal socket As Long, ByVal buffer As String, ByVal bufferLength As Long, ByVal flags As Long) As Long Public Declare PtrSafe Function inet_addr Lib "wsock32.dll" (ByVal hostname As String) As Long Public Declare PtrSafe Function closesocket Lib "wsock32.dll" (ByVal s As Long) As Long Sub Client() ' initialize winsock (WSAStartup) Dim wVersionRequested As Long wVersionRequested = &H202 ' try for version 2.2 Dim WinsockData As WSADATA, WinsockResult As Long WinsockResult = WSAStartup(&H101, WinsockData) If WinsockResult <> 0 Then ' error MsgBox "WSAStartup Error: " & WinsockResult Exit Sub End If Dim host As String, port As Long, m_clientSocket As Long host = "192.168.1.1" ' local router, commonly port = 80 Dim IPaddress As sockaddr_in IPaddress.sin_addr.s_addr = inet_addr(host) IPaddress.sin_family = AF_INET IPaddress.sin_port = htons(port) m_clientSocket = socket(AF_INET, SOCK_STREAM, 0) Dim connectResult As Long connectResult = connect(m_clientSocket, IPaddress, 16) If connectResult = -1 Then ' error MsgBox "Connect Error" WinsockResult = WSACleanup() Exit Sub End If Dim message As String message = "GET / HTTP/1.1" WinsockResult = send(m_clientSocket, ByVal message, Len(message), 0) Dim buffer As String, x As Long message = "" Do buffer = Trim(ReceiveBytes(m_clientSocket, 1024)) If Len(buffer) > 0 Then message = message & buffer End If Loop While Len(buffer) > 0 MsgBox "Reply: " & Trim(message) ' clean up WinsockResult = WSACleanup() If WinsockResult <> 0 Then ' error MsgBox "Cleanup Error: " & WinsockResult End If End Sub Public Function ReceiveBytes(ByVal a_clientSocket As Long, ByVal bytes As Long) As String Dim buffer As String, i As Long buffer = "" For i = 0 To bytes - 1 buffer = buffer & Chr(0) Next Dim readBytes As Long readBytes = recv(a_clientSocket, buffer, bytes, 0) If readBytes <> -1 Then ReceiveBytes = Left(buffer, readBytes) End If End Function

  • Windows-classic-samples

    This repo contains samples that demonstrate the API used in Windows classic desktop applications.

    I found some example code to clear up my confusion at: https://github.com/microsoft/Windows-classic-samples/blob/master/Samples/WinhttpWebsocket/cpp/WinhttpWebsocket.cpp

  • WebSocket-Node

    A WebSocket Implementation for Node.JS (Draft -08 through the final RFC 6455)

    Also, I should have specified, uses package from: https://github.com/theturtle32/WebSocket-Node

  • vba-websocket

    VBA Websocket Sample (Echo Server Client)

    2- I put the complete example file up at: https://github.com/EagleAglow/vba-websocket

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts