###前提・実現したいこと
コレクションに入っている文字列に対してそれぞれ同じ接頭辞をつけた新しいコレクションを2つ作成したいです。
<イメージ>
コレクションの中身
顧客ID、顧客番号、パスワード...
Aコレクションの中身
A.顧客ID、A.顧客番号、A.パスワード
Bコレクションの中身
B.顧客ID、B.顧客番号、B.パスワード
###該当のソースコード
SQLを作成するのに現在はcolumnNamesコレクションに文字列が入っています。
VBA Option Explicit ' 定数宣言 Const テーブル一覧シート名 As String = "テーブル一覧" Const カラム一覧シート名 As String = "カラム一覧" Const テーブル一覧シート_テーブル列 As Long = 2 Const カラム一覧シート_テーブル列 As Long = 2 Const カラム一覧シート_カラム列 As Long = 6 Const IS_HEADER As Boolean = True ' IS_HEADERは、各シートの1行目がヘッダ情報である場合(=SQL文の生成が不要な場合)に True ' SQL文を生成 Public Sub CreateSql() ' 変数宣言 Dim tableSheet As Worksheet Dim columnSheet As Worksheet Dim rng As Range Dim r As Long Dim r2 As Long Dim tableName As String Dim columnNames As Collection Dim columnName As Variant Dim sql As String ' テーブル一覧シート と カラム一覧シートを取得 With ThisWorkbook Set tableSheet = .Worksheets(テーブル一覧シート名) Set columnSheet = .Worksheets(カラム一覧シート名) End With ' 全テーブル走査 Set rng = tableSheet.Columns(テーブル一覧シート_テーブル列) For r = IIf(IS_HEADER, 3, 1) To rng.Cells(rng.Cells.Count).End(xlUp).Row ' テーブル名取得 tableName = tableSheet.Cells(r, テーブル一覧シート_テーブル列).Text ' 全カラム取得 Set rng = columnSheet.Columns(カラム一覧シート_テーブル列) Set columnNames = New Collection For r2 = IIf(IS_HEADER, 3, 1) To rng.Cells(rng.Cells.Count).End(xlUp).Row If columnSheet.Cells(r2, カラム一覧シート_テーブル列).Text = tableName Then columnNames.Add columnSheet.Cells(r2, カラム一覧シート_カラム列).Text End If Next 'コレクションに入っているカラム名の前にA.とB.をそれぞれ追加(select対象部分の作成) ' SQL文生成 sql = "" sql = "SELECT" For Each columnName In columnNames sql = sql & IIf(sql = "SELECT", " ", ",") & CStr(columnName) Next sql = sql & " FROM " & tableName & ";" '文字列連結してsql作成 ' 結果出力 Debug.Print sql Next End Sub
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/12 08:46