Open sidebar
ExcelマクロでWebドメインを取得する
Model: GPT-4
是永和夫
エクセルのマクロで警備会社のwebドメインを取得するプログラムを作ってください
VBAを使用して、Excelマクロで警備会社のWebドメインを取得するプログラムを作成する方法を以下に示します。このコードは、WebサイトのURLを取得し、そのドメイン名を抽出します。まず、ExcelにてVBAエディタを開いてください(Alt + F11)。その後、「標準」モジュールを新規作成し、次のコードを貼り付けます。
vba
Copy code
Option Explicit
Function GetDomainName(url As String) As String
Dim startPos As Integer
Dim endPos As Integer
startPos = InStr(url, “://”) + 3
If startPos > 3 Then
endPos = InStr(startPos, url, “/”)
If endPos = 0 Then endPos = Len(url) + 1
GetDomainName = Mid(url, startPos, endPos – startPos)
Else
GetDomainName = “”
End If
End Function
Sub ExtractDomainNames()
Dim ws As Worksheet
Dim inputRange As Range
Dim cell As Range
Dim outputColumn As Integer
Dim domainName As String
Set ws = ThisWorkbook.Worksheets(“Sheet1”) ‘ シート名を適切なものに変更してください
Set inputRange = ws.Range(“A1:A10”) ‘ URLが入力されている範囲を指定してください
outputColumn = 2 ‘ ドメイン名を出力する列番号を指定してください(2はB列を意味します)
For Each cell In inputRange
domainName = GetDomainName(cell.Value)
If domainName <> “” Then
ws.Cells(cell.Row, outputColumn).Value = domainName
End If
Next cell
End Sub
このコードをVBAエディタに貼り付けた後、Excelシート内の適切なセルにWebサイトのURLを入力してください(上記のコードではA1からA10の範囲が指定されています)。その後、VBAエディタ内でExtractDomainNamesサブルーチンを実行するか、Excelシート上でAlt + F8キーを押して「ExtractDomainNames」を選択し、実行してください。指定された出力列にドメイン名が表示されます。
是永和夫
警備会社のみの抽出
警備会社のみのドメインを抽出するためには、フィルタリングを行う必要があります。検索条件に基づいて関連するドメイン名のみを取得するため、以下のコードにキーワードを追加して警備会社のドメイン名を抽出します。
vba
Copy code
Option Explicit
Function GetDomainName(url As String) As String
Dim startPos As Integer
Dim endPos As Integer
startPos = InStr(url, “://”) + 3
If startPos > 3 Then
endPos = InStr(startPos, url, “/”)
If endPos = 0 Then endPos = Len(url) + 1
GetDomainName = Mid(url, startPos, endPos – startPos)
Else
GetDomainName = “”
End If
End Function
Function IsSecurityCompany(domain As String) As Boolean
‘ ここに警備会社を特定するためのキーワードを追加
Dim keywords() As Variant
keywords = Array(“security”, “guard”, “保安”, “警備”)
Dim keyword As Variant
For Each keyword In keywords
If InStr(1, domain, keyword, vbTextCompare) > 0 Then
IsSecurityCompany = True
Exit Function
End If
Next keyword
IsSecurityCompany = False
End Function
Sub ExtractSecurityCompanyDomains()
Dim ws As Worksheet
Dim inputRange As Range
Dim cell As Range
Dim outputColumn As Integer
Dim domainName As String
Set ws = ThisWorkbook.Worksheets(“Sheet1”) ‘ シート名を適切なものに変更してください
Set inputRange = ws.Range(“A1:A10”) ‘ URLが入力されている範囲を指定してください
outputColumn = 2 ‘ ドメイン名を出力する列番号を指定してください(2はB列を意味します)
For Each cell In inputRange
domainName = GetDomainName(cell.Value)
If domainName <> “” And IsSecurityCompany(domainName) Then
ws.Cells(cell.Row, outputColumn).Value = domainName
End If
Next cell
End Sub
このコードは、IsSecurityCompanyという新しい関数を使ってドメイン名に特定のキーワードが含まれているかどうかをチェックします。警備会社を特定するためのキーワードをkeywords配列に追加してください。
このコードをVBAエディタに貼り付けた後、Excelシート内の適切なセルにWebサイトのURLを入力してください(上記のコードではA1からA10の範囲が指定されています)。その後、VBAエディタ内でExtractSecurityCompanyDomainsサブルーチンを実行するか、Excelシート上でAlt + F8キーを押して「ExtractSecurityCompanyDomains」を選択し、実行してください。指定された出力列に警備会社
是永和夫
途中で終わっています
すみません、文章が途中で切れてしまいました。続きを記載します。
上記のコードをVBAエディタに貼り付けた後、Excelシート内の適切なセルにWebサイトのURLを入力してください(上記のコードではA1からA10の範囲が指定されています)。その後、VBAエディタ内でExtractSecurityCompanyDomainsサブルーチンを実行するか、Excelシート上でAlt + F8キーを押して「ExtractSecurityCompanyDomains」を選択し、実行してください。指定された出力列に警備会社のドメイン名が表示されます。
ただし、この方法では検索キーワードに完全に依存しているため、すべての警備会社のドメイン名を正確に特定することは難しいことに注意してください。検索精度を向上させるには、キーワードリストを拡充するか、他の方法(ウェブスクレイピングやAPIを使用するなど)を検討してください。
是永和夫
c++で書いて下さい
C++を使って警備会社のドメイン名を抽出するプログラムを作成する場合、標準ライブラリや正規表現を使用して独自のフィルタリング関数を実装できます。以下は、C++での簡単な実装例です。
cpp
Copy code
#include <iostream>
#include <string>
#include <vector>
#include <regex>
std::string extract_domain(const std::string &url) {
std::regex re(“http[s]?://([^/]+)”);
std::smatch match;
if (std::regex_search(url, match, re) && match.size() > 1) {
return match.str(1);
} else {
return “”;
}
}
bool is_security_company(const std::string &domain) {
std::vector<std::string> keywords = {“security”, “guard”, “保安”, “警備”};
for (const auto &keyword : keywords) {
if (domain.find(keyword) != std::string::npos) {
return true;
}
}
return false;
}
int main() {
std::vector<std::string> urls = {
“https://www.example-security.com”,
“https://www.example-guard.com”,
“https://www.example.com”,
“https://www.security-example.com”,
};
for (const auto &url : urls) {
std::string domain = extract_domain(url);
if (!domain.empty() && is_security_company(domain)) {
std::cout << “Security company domain: ” << domain << std::endl;
}
}
return 0;
}
このコードでは、extract_domain関数がURLからドメイン名を抽出し、is_security_company関数がドメイン名に警備会社を示すキーワードが含まれているかどうかをチェックしています。main関数内では、URLのリストをループ処理し、警備会社のドメイン名が見つかった場合に出力します。
このC++プログラムを実行するには、適切なコンパイラ(例:GCC、Clang)を使用してコンパイルし、生成された実行ファイルを実行してください。ただし、この方法では検索キーワードに完全に依存しているため、すべての警備会社のドメイン名を正確に特定することは難しいことに注意してください。検索精度を向上させるには、キーワードリストを拡充するか、他の方法(ウェブスクレイピングやAPIを使用するなど)を検討してください。