Excel

VBAで別ワークブックのワークシートからのテキスト転記する

コード等のテキストを入力するとき、別のワークブックよりテキストを転記する方法です。

テキスト転記の例

入力するコード等の文字が長かったり、複雑な場合間違えないように、そして早く楽に入力したいときの例です。

転記機能がない場合

シート「取引」のC列にコードを入力すると、右隣のシート「取引先」のデータを参照しD列に取引先を表示する例です。D列にはVLOOKUP関数が入力されています。

シート「取引」

シート「取引先」からコードを検索してコードをコピーすると大変です。

シート「取引先」

転記機能のある例

シート「取引先」を別のワークブックで簡単に抽出できるワークシートを作り、抽出した結果のテキストを転記する方法です。「別のワークブックで簡単に抽出できるワークシート」というのが、以下の別記事であげている方法です。

別ブックにする理由は、転記するブックは複数あり、マクロ機能はないためです。

  • 青枠:マクロ機能なし、別ブック(赤枠)からコードを転記する。
  • 赤枠:別のワークブックのみにマクロ機能が有効なブックにします。

(1)ワークブック「sample.xlsx」のシート「取引」のセルC2をクリックし、Alt + F8でマクロを呼び出し実行します。もしくはショートカットキーを割り当てる方法もあり。

sample.xlsx

実行結果です。

ワークブック「取引先転記.xlsm」のシート「取引先」を表示し、セルA1に転記先のワークブック名、セルB1に転記先のアドレスが入力されます。

取引先転記.xlsm

(2)ワークブック「取引先転記.xlsm」のシート「取引先」でデータを抽出し、該当のコードのセルをクリック後、コマンドボタン「転記」をクリックします。

取引先転記.xlsm

結果です。

転記先の「sample.xlsm」を表示し、セルC2にコードを転記します。

sample.xlsx

VBAで転記するサンプル

VBAのコードは「取引先転記.xlsm」にあります。場所は2カ所です。

  • 転記先シートよりマクロを呼び出した時:標準モジュール
  • コマンドボタン「取引」をクリックした時:Sheet1(取引先)

転記先シートよりマクロを呼び出した時:標準モジュール

Sub tenkisaki()
    Dim aWb As String
    Dim aCell As String
    
    aWb = ActiveWorkbook.Name
    aCell = ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
    
        With Workbooks("取引先転記.xlsm").Sheets("取引先")
            .Range("A1") = aWb
            .Range("B1") = aCell
            .Activate
        End With
            ActiveWindow.WindowState = xlMaximized
    
End Sub

コマンドボタン「取引」をクリックした時:Sheet1(取引先)

Private Sub Cmd3_Click()
    Const tWs As String = "取引"
    
    Dim aCell As String
    Dim mWb As String, mWh As String, mCell As String
    
    mWb = Range("A1")
    mCell = Range("B1")
    
    If mWb = "" Or mCell = "" Then
        MsgBox "転記先の指定がありません", vbExclamation, Title:="転記先"
        Exit Sub
    End If
    
    aCell = ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
    
    Range("A1:B1").ClearContents
    
    With Workbooks(mWb).Sheets(tWs)
        .Range(mCell) = Range(aCell)
        .Activate
    End With
    
End Sub

説明については後日追記予定。

-Excel
-

© 2021 オフィスのQ&A