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を使用するなど)を検討してください。