Excelマクロで入力とフィルタリング、クリップボードへのデータコピーを自動化する方法

Visual Basic

Excelのマクロを使用すると、手動で行う作業を効率化できます。例えば、ユーザー入力を受けてデータを抽出し、フィルタリングを行い、その結果を特定の形式でコピーする処理を自動化することができます。今回は、インプットボックスを使ってユーザーに数値を入力させ、その数値に基づいてフィルターをかけ、さらに抽出したデータをクリップボードにコピーする方法について解説します。

1. ユーザー入力を受け取るインプットボックスの作成

まず、ユーザーから入力を受け取るためのインプットボックスを作成します。VBAでは、InputBox関数を使用して簡単にユーザー入力を取得できます。以下のコード例では、ユーザーに数字を入力させ、その数字を変数に格納します。

Sub GetInputValue()
    Dim inputValue As String
    inputValue = InputBox("抽出したい数字を入力してください")
    MsgBox "入力された数字は " & inputValue
End Sub

このコードを実行すると、インプットボックスが表示され、ユーザーが入力した値がメッセージボックスで表示されます。

2. フィルタリング処理の実行

次に、ユーザーが入力した数字を基にフィルタリング処理を行います。Excelの「オートフィルタ」機能をVBAで使用することで、特定の列の値を条件にデータを抽出できます。

Sub FilterData(inputValue As String)
    ActiveSheet.Range("A1").AutoFilter Field:=1, Criteria1:=inputValue
End Sub

上記のコードでは、フィルターをかける対象となる列(ここでは列A)を指定し、インプットボックスで入力された値に一致するデータを抽出します。

3. 本日日付の取得とデータの整形

次に、本日日付を「yyyymmdd」形式で取得し、抽出したデータと一緒に整形します。これにより、結果をクリップボードにコピーする準備が整います。

Sub GetCurrentDate()
    Dim currentDate As String
    currentDate = Format(Now(), "yyyymmdd")
    MsgBox "本日日付: " & currentDate
End Sub

このコードでは、現在の日付を「yyyymmdd」の形式で取得し、その結果をメッセージボックスで表示します。

4. クリップボードにデータをコピーする

最後に、フィルタリングされたデータと本日日付を組み合わせて、「完了」という文字列を追加し、クリップボードにコピーします。VBAでクリップボードにデータをコピーするには、DataObjectオブジェクトを使用します。

Sub CopyToClipboard()
    Dim dataObj As Object
    Dim copiedData As String
    copiedData = currentDate & "_" & ActiveCell.Offset(0, 6).Value & "_完了"
    Set dataObj = CreateObject("MSForms.DataObject")
    dataObj.SetText copiedData
    dataObj.PutInClipboard
    MsgBox "データがクリップボードにコピーされました"
End Sub

このコードでは、フィルタリングされたセルの隣の列(G列)にある値と日付を結合し、それをクリップボードにコピーします。

5. まとめ

Excelでのマクロを使用することで、ユーザー入力を受け取り、データのフィルタリング、日付の取得、そしてクリップボードへのコピー処理を一度の操作で自動化できます。このように、VBAを活用することで、手動で行っていた作業を効率的に処理することができ、作業時間を大幅に短縮できます。ぜひ、実際の業務でも活用してみてください。

コメント

タイトルとURLをコピーしました