Excelを使用すると、ワークシートにあらゆる種類のグラフィックオブジェクトを配置できます。グラフィックオブジェクトの1つのタイプには、実際にはテキスト(テキストボックス)が含まれています。

ワークシートにかなりの数のテキストボックスがある場合、各テキストボックスからテキストを抽出してワークシート自体に配置する方法があるかどうか疑問に思われるかもしれません。

これを行うコマンドはありません。代わりにマクロを使用する必要があります。次のマクロは、ワークシートの各テキストボックスをステップスルーし、目的の抽出を行います。

Sub ExtractText()

Dim shp As Shape     Dim sLoc As String

For Each shp In ActiveSheet.Shapes         With shp             If Left(.Name, 8) = "Text Box" Then                 sLoc = .TopLeftCell.Address                 Do Until Range(sLoc) = ""

sLoc = Range(sLoc).Offset(1, 0).Address                 Loop                 Range(sLoc) =.TextFrame.Characters.Text                 .Delete             End If         End With     Next End Sub

ExcelはすべてのグラフィックシェイプをShapesコレクションに保存するため、コレクションをステップ実行して、操作するシェイプを決定できます。この場合、シェイプの名前の最初の8文字がチェックされます。名前が「テキストボックス」で始まる場合にのみ、マクロは形状をテキストを抽出できるテキストボックスと見なします。

マクロは、名前の「テキストボックス」の文言をチェックするのではなく、考慮されている形状のタイプをチェックすることもできます。これを行う場合は、テスト行(左の場合…​)を次のテスト行に置き換えるだけです。

If shp.Type = msoTextBox Then

sLoc変数は、.TopLeftCellプロパティに含まれているテキストボックスの場所を格納するために使用されます。次に、Doループを使用して、アドレスが指すセルが空であることを確認します。 (これにより、セルの既存の内容が上書きされるのを防ぎます。)空でない場合、アドレスは列の次のセルに「インクリメント」されます。

空のセルのアドレスが決定されると、テキストボックスのテキストがセルに保存されます。次に、.Deleteメソッドを使用して、実際のテキストボックスを削除します。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11631)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。