Excel

【Excel】VBAマクロでテキストボックス内の値や文字列を取得(複数、シート内全て、ブック内等)する方法【FindControl, OpenTextFile, WriteLine】

当サイトでは記事内に広告を含みます。

この記事では、VBAマクロを使用してExcelシート内のテキストボックスから値や文字列を取得し、そのデータをCSVファイルに記録する方法について解説していきます。

ポイントとしては、`FindControl`、`OpenTextFile`、`WriteLine`といった関数を使用することです。

マクロ初心者でもわかりやすいように、変数名をaaaaa変数aaaaaといった名称にしています。そのため、実際にご活用の際には、適切な名称に変更してください。

それでは詳しく見ていきましょう!

 

VBAマクロでテキストボックス内の値や文字列を取得(シート内の全てで取得し、別のcsvに中身を順々に追記していく

それではまず、シート内の全てのテキストボックスから値を取得し、CSVに記録する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub aaaaExportTextValuesToCSVaaaa()
    Dim aaaaFsaaaa As Object
    Dim aaaaFileaaaa As Object
    Dim aaaaSheetaaaa As Worksheet
    Dim aaaaShapeaaaa As Shape
    Dim aaaaPathaaaa As String

    ' CSVファイルの保存パスを指定
    aaaaPathaaaa = "C:\yourpath\textvalues.csv"

    ' FileSystemObjectのインスタンスを作成
    Set aaaaFsaaaa = CreateObject("Scripting.FileSystemObject")
    ' CSVファイルを開く(なければ新規作成)
    Set aaaaFileaaaa = aaaaFsaaaa.OpenTextFile(aaaaPathaaaa, 8, True)

    ' アクティブシートにある全てのテキストボックスの値を取得
    Set aaaaSheetaaaa = ActiveSheet
    For Each aaaaShapeaaaa In aaaaSheetaaaa.Shapes
        If TypeName(aaaaShapeaaaa.OLEFormat.Object) = "TextBox" Then
            aaaaFileaaaa.WriteLine aaaaShapeaaaa.OLEFormat.Object.Text
        End If
    Next aaaaShapeaaaa

    ' ファイルを閉じる
    aaaaFileaaaa.Close
End Sub

コードのAlt+F8を押し、マクロ選択画面でaaaaExportTextValuesToCSVaaaa関数を実行します。

このコードでは、まず指定されたパスにCSVファイルを作成または開きます。

その後、アクティブシート内の全てのテキストボックスの中身を読み込みし、その値や文字列をこのCSVファイルに順に書き込んでいきます。

最後にファイルを閉じて処理を終了します。【CreateObject, OpenTextFile, WriteLine】

VBAマクロでテキストボックス内の値や文字列を取得(ブック内のすべてのシート内全てで取得し、別のcsvにシート名とともに、中身を順々に追記していく

続いては、ブック内のすべてのシートにあるテキストボックスの値を取得し、それぞれのシート名と共にCSVに記録していく方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub aaaaExportAllSheetTextValuesToCSVaaaa()
    Dim aaaaFsaaaa As Object
    Dim aaaa

Fileaaaa As Object
    Dim aaaaWorkbookaaaa As Workbook
    Dim aaaaSheetaaaa As Worksheet
    Dim aaaaShapeaaaa As Shape
    Dim aaaaPathaaaa As String

    ' CSVファイルの保存パスを指定
    aaaaPathaaaa = "C:\yourpath\alltextvalues.csv"

    ' FileSystemObjectのインスタンスを作成
    Set aaaaFsaaaa = CreateObject("Scripting.FileSystemObject")
    ' CSVファイルを開く(なければ新規作成)
    Set aaaaFileaaaa = aaaaFsaaaa.OpenTextFile(aaaaPathaaaa, 8, True)

    ' ブック内のすべてのシートを走査
    Set aaaaWorkbookaaaa = ThisWorkbook
    For Each aaaaSheetaaaa In aaaaWorkbookaaaa.Sheets
        ' シート内の全てのテキストボックスの値を取得
        For Each aaaaShapeaaaa In aaaaSheetaaaa.Shapes
            If TypeName(aaaaShapeaaaa.OLEFormat.Object) = "TextBox" Then
                ' シート名とテキストボックスの値をCSVに書き込み
                aaaaFileaaaa.WriteLine aaaaSheetaaaa.Name & "," & aaaaShapeaaaa.OLEFormat.Object.Text
            End If
        Next aaaaShapeaaaa
    Next aaaaSheetaaaa

    ' ファイルを閉じる
    aaaaFileaaaa.Close
End Sub

コードのAlt+F8を押し、マクロ選択画面でaaaaExportAllSheetTextValuesToCSVaaaa関数を実行します。

このスクリプトは、ブック内の全てのシートに対してテキストボックスを探します。

さらに、見つかった各テキストボックスの内容を、それが存在するシート名と共にCSVファイルに書き込みます【CreateObject, OpenTextFile, WriteLine】