পদ্ধতি ১: ওয়েবসাইট থেকে নির্দিষ্ট ডেটা এক্সেল VBA MsgBox-এ ইমপোর্ট করা
ধাপসমূহ:
- রিবন থেকে Developer ট্যাবে যান।
- Code ক্যাটাগরিতে থেকে Visual Basic-এ ক্লিক করে Visual Basic Editor খুলুন। অথবা ALT+F11 চাপুন।

- Visual Basic Editor প্রদর্শিত হবে।
- Tools মেনুতে যান এবং References-এ ক্লিক করুন।

- References – VBAProject ডায়ালগ বক্স দেখাবে।
- নিচে স্ক্রোল করে দুটি Microsoft Library সক্ষম করুন: Microsoft HTML Object Library এবং Microsoft Internet Controls-এ চেকмар্ক দিন।
- OK-এ ক্লিক করুন।

- মেনু বার থেকে Insert ড্রপ-ডাউন থেকে Module-এ ক্লিক করুন।

- এটি আপনার ওয়ার্কবুকে একটি Module তৈরি করবে।
- নিচের VBA কোড কপি করে পেস্ট করুন।
VBA কোড:
Sub Import_SpecificData()
Dim request As Object
Dim response As String
Dim html As New HTMLDocument
Dim website As String
Dim total As Variant
website = "https://en.wikipedia.org/wiki/2022_FIFA_World_Cup"
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "GET", website, False
request.setRequestHeader "If-Modified-Since", "Mon, 14 Nov 2022 00:00:00 GMT"
request.send
response = StrConv(request.responseBody, vbUnicode)
html.body.innerHTML = response
total = html.getElementsByClassName("wikitable")(0).innerText
MsgBox total
End Sub
- RunSub বাটনে ক্লিক করে বা কীবোর্ড শর্টকাট F5 চাপে কোডটি রান করুন।

- এটি ওয়েবসাইট থেকে ডেটা ফেচ করে সেগুলো MsgBox-এ দেখাবে।

VBA কোড ব্যাখ্যা:
Sub Import_SpecificData()
Sub কোডের একটি অংশ যা কোডের কাজ হ্যান্ডেল করে কিন্তু কোনো মান রিটার্ন করে না। এটাকে সাবপ্রসিডিউরও বলা হয়। আমাদের প্রসিডিউরটির নাম Import_SpecificData()।
Dim request As Object
Dim response As String
Dim html As New HTMLDocument
Dim website As String
Dim total As Variant
VBA-তে DIM স্টেটমেন্টটি "declare" বোঝায়, যা ভেরিয়েবল ডিক্লেয়ার করতে বাধ্যতামূলক।
website = "https://en.wikipedia.org/wiki/2022_FIFA_World_Cup"
Set request = CreateObject("MSXML2.XMLHTTP")
এটি একটি অবজেক্ট তৈরি করবে যা ওয়েবপেজ রিকোয়েস্ট করবে।
request.Open "GET", website, False
এই ব্লক থেকে আমরা জানব কোথায় যেতে হবে এবং কীভাবে যেতে হবে। অন্য ওয়েবসাইট থেকে ডেটা ইমপোর্ট করার সময় এই লাইনটি সরাসরি কপি করে ব্যবহার করা যায়।
request.setRequestHeader "If-Modified-Since", "Mon, 14 Nov 2022 00:00:00 GMT"
ওয়েবসাইট থেকে তাজা ডেটা পাওয়া যাবে।
request.send
এই লাইনটি ওয়েবপেজে রিকোয়েস্ট পাঠাবে।
response = StrConv(request.responseBody, vbUnicode)
ওয়েবপেজের রেসপন্স ডেটা ভেরিয়েবলে সংরক্ষিত হবে।
html.body.innerHTML = response
কোডের এই লাইনটি ওয়েবপেজকে একটি HTML অবজেক্টে রূপান্তর করে ডেটা রেফারেন্স সহজ করে তোলে।
total = html.getElementsByClassName("wikitable")(0).innerText
এই লাইনটি ওয়েবপেজের নির্দিষ্ট এলিমেন্টের টোটাল পাবে। ক্লাস নেম পেতে হবে। সেই নির্দিষ্ট এলিমেন্টের ক্লাস নেম পেতে নিচের সহজ নির্দেশনা অনুসরণ করুন।
- ওয়েবসাইটে যান এবং সেই নির্দিষ্ট ব্লকের ওপর রাইট-ক্লিক করুন।
- তারপর Inspect-এ ক্লিক করুন।

- এটি ওয়েবসাইটের HTML এবং CSS এলিমেন্টগুলো দেখাবে। আপনার দরকারি ক্লাসে ক্লিক করুন এবং সেটিকে html.getElementsByClassName("wikitable")-এ বসিয়ে দিন।

MsgBox total
এটি মাইক্রোসফট উইন্ডোতে টোটাল দেখাবে।
End Sub
এটি প্রসিডিউরটি শেষ করবে।
পদ্ধতি ২: ওয়েবসাইট থেকে ডেটা স্ক্র্যাপ করে এক্সেলে আনা
ধাপসমূহ:
- ছোট্ট আইকনে ক্লিক করুন যা Record Macro।

- Record Macro ডায়ালগ প্রদর্শিত হবে।
- ম্যাক্রোর একটি নাম দিন। আমরা ম্যাক্রোর নাম Get_Data দিয়েছি।
- OK-এ ক্লিক করুন।

- রিবন থেকে Data ট্যাবে যান।
- Get & Transform Data অধীনে From Web-এ ক্লিক করুন।

- From Web উইন্ডো দেখাবে।
- Basic সিলেক্ট করে URL এরিয়ায় CTRL+V চাপে URL পেস্ট করুন।
- OK বাটনে ক্লিক করুন।

- ফলস্বরূপ Navigator ডায়ালগ বক্স দেখাবে।
- Display Options মেনু থেকে আপনার প্রয়োজনমতো যেকোনো ডেটা টেবিল বেছে নিন।
- "Load To" বেছে নিন।

- Import Data ডায়ালগ দেখাবে।
- "Select how you want to view this data in your workbook." থেকে Table বেছে নিন এবং Existing worksheet-এ ক্লিক করুন।
- ডেটা ইমপোর্ট করার জন্য সেলটি বেছে নিন।
- OK-এ ক্লিক করুন।

- এটি ওয়েবসাইট থেকে ডেটা ইমপোর্ট করবে।

- পুরো ওয়ার্কশীট সিলেক্ট করে Delete বাটনে ক্লিক করুন, Microsoft Excel ডায়ালগ দেখাবে। নিশ্চিত করুন No-এ ক্লিক করেন।

- এটি সকল ডেটা Delete করবে।
- Data-এ যান এবং Queries & Connections অধীনে Refresh All-এ ক্লিক করুন।
- সকল ডেটা ওয়ার্কশীতে ফিরে আসবে।

- রিবন খুলুন এবং ড্রপ-ডাউন মেনু থেকে Developer বেছে নিন।
- Visual Basic সিলেক্ট করুন Visual Basic Editor খোলার জন্য। অথবা ALT+F11 চাপুন।
- Module-এ আপনি VBA Macros পাবেন।
VBA কোড:
Option Explicit
Sub Get_Data()
'
' Get_Data Macro
'
Sheets("Get Data").Select
Range("N11").Select
ActiveWorkbook.Queries.Add Name:="2022 FIFA bidding (majority 12 votes)", _
Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Web.Page(Web.Contents(""https://en.wikipedia.org/wiki/2022_FIFA_World_Cup""))," & Chr(13) _
& "" & Chr(10) & " Data1 = Source{1}[Data]," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes (Data1,{{""Bidders"", type text}, {""Votes Round 1"", type text}, {""Votes Round 2"", type text}, {""Votes Round 3"", type text}, {""Votes Round 4"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
Workbooks("Import Data from Website .xlsm").Connections.Add2 _
"Query - 2022 FIFA bidding (majority 12 votes)", _
"Connection to the '2022 FIFA bidding (majority 12 votes)' query in the workbook." _
, Array( _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""2022 FIFA bidding (majority 12 votes)"";Extended Properties=""""" _
, ""), "SELECT * FROM [2022 FIFA bidding (majority 12 votes)]", 2
Application.CommandBars("Queries and Connections").Visible = False
ActiveWorkbook.Queries.Add Name:="2022 FIFA bidding (majority 12 votes) (2)" _
, Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Web.Page(Web.Contents(""https://en.wikipedia.org/wiki/2022_FIFA_World_Cup""))," & Chr(13) _
& "" & Chr(10) & " Data1 = Source{1}[Data]," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes(Data1,{{""Bidders"", type text}, {""Votes Round 1"", type text}, {""Votes Round 2"", type text}, {""Votes Round 3"", type text}, {""Votes Round 4"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""2022 FIFA bidding (majority 12 votes) (2)"";Extended Propertie" _
, "s="""""), Destination:=Range("$B$2")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array( _
"SELECT * FROM [2022 FIFA bidding (majority 12 votes) (2)]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "_2022_FIFA_bidding__majority_12_votes___2"
.Refresh BackgroundQuery:=False
End With
Columns("A:A").ColumnWidth = 2.86
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Columns("G:G").ColumnWidth = 12
Range("M26").Select
Application.CommandBars("Queries and Connections").Visible = False
Cells.Select
Selection.ListObject.QueryTable.Delete
Selection.ClearContents
Range("B2:F9").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("B2").Select
End Sub

- এটি অটোমেটেড ম্যাক্রো কোড।
Data ট্যাব ব্যবহার করে ওয়েব ডেটা ইমপোর্ট করার পদ্ধতি
ধাপসমূহ:
- আমাদের ইমপোর্ট ডেটা ওয়ার্কশীটের সেল C4-এ URL রাখুন।
- CTRL+C চাপে URL কপি করুন।

- Data ট্যাবে যান।
- Get & Transform Data অধীনে From Web-এ ক্লিক করুন।

- From Web নামক একটি উইন্ডো দেখাবে।
- Basic সিলেক্ট করুন এবং URL ফিল্ডে CTRL+V চাপে URL পেস্ট করুন।
- OK বাটনে ক্লিক করুন।

- এটি Navigator ডায়ালগ বক্স প্রদর্শন করবে।
- Display Options-এ থেকে আপনার প্রয়োজন অনুযায়ী যেকোনো ডেটা টেবিল বেছে নিন।
- Load-এ ক্লিক করুন।

- এটি ওয়েবসাইট থেকে নির্বাচিত ডেটা ইমপোর্ট করে আপনার এক্সেল ফাইলে লোড করবে।

প্র্যাকটিস ওয়ার্কবুক ডাউনলোড করুন
ওয়ার্কবুকটি ডাউনলোড করে সেগুলোতে অভ্যাস করুন।
সম্পর্কিত আর্টিকেল
- Excel VBA: Chrome দিয়ে ওয়েব স্ক্র্যাপিং
- Excel VBA দিয়ে ওয়েবসাইট থেকে টেবিল স্ক্র্যাপ করা
- ব্রাউজার ছাড়া এক্সেল VBA দিয়ে ওয়েব স্ক্র্যাপিং করার পদ্ধতি
ফ্রি অ্যাডভান্সড এক্সেল এক্সারসাইজ সমাধানসহ পান!