#はじめに
テーブル(Salesforceで言えばオブジェクト)の項目値情報として、以下のようなExcelシートがあるとします。
SOQLを記述する時はSQLのようにselect文で*は使えないので、項目名をきちんと指定する必要があります。
Excelには項目名があるのですが、このままコピーしても横につながってくれません。
これが横につながって、各項目の間にカンマなんかつけてくれると非常に便利です。
そこで、Excel VBAを使って便利ツールを作ってみました。
#使い方はこんな感じです。
1.使いたい項目を選択して、リボンにある縦⇒カンマ区切変換をクリックします。
2.テキストエディターを開いて、マウスの右クリック、貼り付けを選択します。
3.縦方向の項目を横方向に並べて、間にカンマを挿入しています。
#ソース
ソースコードをみたら、2016年に作っていたんですね。古い。元々はAras InnovetorのAMLを作る時の便利ツール。
'-------------------------------------------------------------------
' AMLのselect句用に縦型のプロパティ一覧を横型のカンマ区切りにする
'
' 2016/10/03 K.Otsubo
'-------------------------------------------------------------------
Public Sub main_4(ByVal control As IRibbonControl)
Dim vTmp As Boolean
Dim wkString As String
Dim c As Range, i As Long
wkString = ""
For Each c In Selection
i = i + 1
wkString = wkString + "," + CStr(c.Value)
Next c
wkString = "id" & wkString
'CopyメソッドやPasteメソッドはセルが対象です。
'セルを使わずに、変数のデータをクリップボードに格納したり、
'クリップボードに格納されているデータを直接変数に入れるときには
'DataObjectオブジェクトを使います。
'
'DataObjectオブジェクトはMSFormsのメンバです。
'使用するには、Microsoft Forms 2.0 Object Libraryを参照設定します。
Dim buf As String
Dim buf2 As String
Dim CB As New DataObject
buf = wkString
With CB
.SetText buf ''変数のデータをDataObjectに格納する
.PutInClipboard ''DataObjectのデータをクリップボードに格納する
.GetFromClipboard ''クリップボードからDataObjectにデータを取得する
buf2 = .GetText ''DataObjectのデータを変数に取得する
End With
'MsgBox wkString
End Sub
簡単なルーツですがあれば便利です。
#他にも
ユニケージ開発用にはカンマ区切りでなくて、ブランク区切になるバージョンも準備しています。
また、ファイルレイアウトをクリックすると
ファイルレイアウトのコメント用に順番の数字を表示できるようにしています。
#01.AccountId 02.AssetId 03.BusinessHoursId 04.CaseNumber 05.ClosedDate
#06.Comments 07.ContactEmail 08.ContactFax 09.ContactId 10.ContactMobile
#11.ContactPhone 12.CreatedById 13.CreatedDate 14.Description 15.IsClosedOnCreate
#16.IsEscalated 17.LastModifiedById 18.Origin 19.OwnerId 20.ParentId
#21.Priority 22.Reason 23.SourceId 24.Status 25.Subject
#26.SuppliedCompany 27.SuppliedEmail 28.SuppliedName 29.SuppliedPhone 30.Type