ワークシートをXNUMX行ずつ読み取り、そこからデータを選択的に取得すると便利な場合があります。 以下の例は、これを行う方法を示しています。
この記事は、読者が開発者リボンを表示していて、VBAエディターに精通していることを前提としています。 そうでない場合は、Googleの「Excel開発者タブ」または「Excelコードウィンドウ」をご覧ください。
次の例では、電子メールアドレスの各行を調べ、それらをXNUMXつのアドレス行に連結することによってデータを操作します。 Excelには組み込みの転置関数がありますが、コードでは特定の宛先を除外し、区切り文字を追加する予定です。
私たちのアプリケーションは1枚だけ必要です。 以下の情報をセルAXNUMXにコピーします。
| メールアドレス |
| tcruise@paramount.com |
| julia.R@disney.com |
| Jules.dassin@gaumont.co.fr |
| EnricoFellini@cinecitta.co.it |
| marymontrary@bedlam.org.uk |
フォームにボタンを配置して、コードを開始します。
仮に、メールが5通ではなく数百通あるとしましょう。それぞれのメールに同じメッセージと脚本のコピーを送信したいとします。これにはいくつかの方法がありますが、最もよく知られているのは、VBAコードからOutlookなどのメール送信ツールを呼び出す方法です。ただし、この演習には2つの目的があります。
- ワークシートを簡単に循環する方法を示します。
- 各行を調べてそれに基づいて行動するExcelの機能を強調します。
VBAコード
VBAコードはすべてのアドレスを連結し、それぞれの後にセミコロンを挿入して、電子メールの宛先フィールドにXNUMX回で貼り付けることができるようにします。 コードから、行を調べた後、フランス語の行が除外されることに注意してください。
モジュールを挿入し、次のように入力します。
Option Explicit
Dim strEmail As String
Dim strAll As String
Sub Main()
strAll = ""
Range("C2") = strAll 'clear previous program results
Sheets("Sheet1").Select
Range("A2").Select
Do While ActiveCell > "" 'loop until row 7
strEmail = ActiveCell
If Right(strEmail, 2) <> "fr" Then 'exclude France
strAll = strAll & strEmail & ";"
End If
Range("A" & ActiveCell.Row + 1).Select 'move on a row in the SAME column
Loop
Range("C2") = strAll
End Sub
コードはアクティブセルを列Aに保持し、行のみが移動します。 行の他の場所で情報を参照するには、次を使用します。
Variable = Activecell.offset(offset rows, offset columns)
たとえば、アクティブな行の列Bから値を取得するには、コードは次のようになります。 Activecell.offset(0、1)。 私たちがA2にいるときにA3の値を取得するには、次のようになります。 Activecell.offset(-1、0)。
コードをテストするには、ボタンをマクロ「メイン」に割り当てます。
一部のインターネットサービスプロバイダーは、スパム対策として、一度に送信できる電子メールの数を制限している場合があります。 この方法を使用する場合は、一度に数百通の電子メールを送信する前に、彼らに確認するのがおそらく最善です。
Excelファイルの破損の処理

著者紹介:
フェリックスフッカーは、のデータ復旧の専門家です DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 修理 rar 腐敗 およびSQL回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com
