この記事では、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】