
VBA programming embeds Zalo application in Excel so that you can work and chat with Zalo conveniently, or "someone" can't see you are opening Zalo, just Excel. In this example, I just want to talk about the technique of using BSTaskPane to create a Task Pane window in Excel, for example embedding an external application in this window. Please follow this video step by step. The source code is sent in this article, or you can download the BSAC installer.
Detailed step-by-step video instructions:
The content in the video tutorial includes:
Embed the BSAC.ocx library in the VBAProject.
+ In the VBA window, select the VBAProject - the file you want to embed BSAC



Source code:
Go to menu "Insert" - > Module and paste the code below into the right window.
Option Explicit
'Author: Nguyen Duy Tuan - http://bluesofts.net
'Facebook: https://www.facebook.com/groups/hocexcel
#If VBA7 Then
Public Declare PtrSafe Function CountFileInProcess Lib "BSAC.ocx" (ByVal FileName As Variant) As Long
#Else
Public Declare Function CountFileInProcess Lib "BSAC.ocx" (ByVal FileName As Variant) As Long
#End If
Dim TP As BSTaskPane
Sub CreateTpZalo()
Dim TPs As New BSTaskPanes 'Task Pane list
Dim MustCreate As Boolean
Dim Title As String: Title = "Task Pane: Zalo" 'It is the same in sub DestroyTpZalo()
'SinkControl:
' + Userform
' + Handle to window
' + ClassName:Title (if only find class name then "ClassName:"
' + Title
'In this demo, "Zalo" is title of Zalo App
'Class and Title of appilcation use "Spy++ tool" or other to find
If CountFileInProcess("Zalo.exe") = 0 Then
MsgBoxW "Please run Zalo app.", vbCritical, "Zalo not running"
Exit Sub
End If
If Not TP Is Nothing Then
MustCreate = TP.Client.SinkControl = 0 'Not success
If Not MustCreate Then 'Exists, check is it Zalo?
If TP.Caption Title Then
If MsgBoxW("Do you want to remove TP and recreate it?", VbMsgBoxStyle.vbQuestion + vbYesNo, "Create Zalo") = vbYes Then
TP.Remove
Set TP = Nothing
MustCreate = True
End If
End If
End If
Else
MustCreate = True
End If
If MustCreate Then
Set TP = TPs.Add(Title, "Zalo", False, dpLeft)
TP.AllowHide = False 'Prevent user from clicking on "X" of Task Pane
Else
TP.Visible = True
End If
'Ok!
Set TPs = Nothing
End Sub
Sub DestroyTpZalo()
Dim TPs As New BSTaskPanes
'TPs.Clear 'Clear all task panes
Dim Title As String: Title = "Task Pane: Zalo"
Dim Idx As Long
If TPs.Count > 0 And TP Is Nothing Then 'try to get instance of Task pane if it is lost
'Variable "TP" may be lost when you have a bug anywhere
Idx = TPs.IndexOf(Title) 'Find TP with Title in TaskPane list (BSTaskPanes)
If Idx >= 0 Then
Set TP = TPs(Title)
End If
End If
If Not TP Is Nothing Then 'Only Zalo app
TP.Remove
Set TP = Nothing
End If
Set TPs = Nothing
End Sub
|
Explain more

In the above code, the command creates a new Task Pane and embeds the application, the command Set TP = TPs.Add(...) you pay attention to the parameter "SinkControl". This parameter can be the following values:
+ Userform
+ "Title of Window" - Title/Caption, in the above example the window title is "Zalo"
+ Is the class name and title of the window, structure "Class:Caption". "Class" is the class name of the Window, "Caption" is the title of the application window.
How to run macros in VBA
Before running the code on Zalo you must be open!
According to the above example we have 2 macros: CreateTpZalo(), DestroyTpZalo()
Method 1: place the cursor in the code block of a macro you want to run (for example inside CreateTpZalo), press F5.
Method 2: In the spreadsheet user environment, press F8, select the macro and then "Run"
Method 3: assign a macro to the command button: Go to the "Developer" tab -> Insert -> CommandButton and then assign the macro.
BSAC is an activex control with only one file that needs to be installed on the computer "BSAC.ocx". If you install Add-in A-Tools, BSAC is automatically installed. If you only want BSAC in your computer, read the detailed instructions on how to install it in the BSAC installer.
Download BSAC
Author: Nguyen Duy Tuan