-
Notifications
You must be signed in to change notification settings - Fork 5
1.8 PowerQueryのM言語組み立て
Power Querry M Language Builder For VBA
VBA で Powr Query の M言語 を組み立てるときに便利なクラス群
クラス | 説明 |
---|---|
MCsv | Csv の関数の入るクラス。 |
MFile | File の関数の入るクラス。 |
MTable | Table の関数の入るクラス。 |
MRecord | Record の組み立てクラス(Dictionaryラッパークラス)。 |
MList | List の組み立てクラス(Collectionラッパークラス)。 |
MCommand | 各クラスからM言語を作り出すクラス |
'------------------------------------------------
' MCommandをVBAで作成する場合のヘルパークラス
'------------------------------------------------
Sub Sample()
'-----------------------------------
' MCommandを代入せずに作成する場合
'-----------------------------------
Dim t1 As MTable
Dim t2 As MTable
Dim t3 As MTable
Set t1 = MCsv.Document(MFile.Contents("C:\Test.csv"), "[Delimiter="","", Columns=5, Encoding=65001, QuoteStyle=QuoteStyle.Csv]")
Set t2 = MTable.Skip(t1, 2)
Set t3 = MTable.PromoteHeaders(t2, "[PromoteAllScalars=true]")
Dim m1 As MCommand
Set m1 = New MCommand
m1.Append t3
Debug.Print m1.ToString
'結果
'let Source1 = Table.PromoteHeaders(Table.Skip(Csv.Document(File.Contents("C:\Test.csv"),
' [Delimiter=",", Columns=5, Encoding=65001, QuoteStyle=QuoteStyle.Csv]), 2), [PromoteAllScalars=true]) in Source1
'-----------------------------------
' MCommandに代入して作成する場合
'-----------------------------------
Dim m2 As MCommand
Set m2 = New MCommand
m2.Append MCsv.Document(MFile.Contents("C:\Test.csv"), "[Delimiter="","", Columns=5, Encoding=65001, QuoteStyle=QuoteStyle.Csv]")
m2.Append MTable.Skip(m2.Table, 2)
m2.Append MTable.PromoteHeaders(m2.Table, "[PromoteAllScalars=true]")
Debug.Print m2.ToString
'結果
'let Source1 = Csv.Document(File.Contents("C:\Test.csv"), [Delimiter=",", Columns=5, Encoding=65001, QuoteStyle=QuoteStyle.Csv]),
' Source2 = Table.Skip(Source1, 2),
' Source3 = Table.PromoteHeaders(Source2, [PromoteAllScalars=true]) in Source3
'-----------------------------------
' MRecord/MListを用いたサンプル
'-----------------------------------
Dim m3 As MCommand
'MRecord(M言語のRecord) は DictionaryをWrapしたもの。使用方法はDictionary同等。
Dim rec As MRecord
Set rec = New MRecord
rec.Add "Column1", """No."""
rec.Add "Column2", """NAME"""
rec.Add "Column3", """AGE"""
rec.Add "Column4", """ADDRESS"""
rec.Add "Column5", """TEL"""
'MList(M言語のList) は CollectionをWrapしたもの。使用方法はCollectionと同等。
Dim lst As MList
Set lst = New MList
lst.Add rec
Set m3 = New MCommand
m3.Append MCsv.Document(MFile.Contents("C:\Test.csv"), "[Delimiter="","", Columns=5, Encoding=65001, QuoteStyle=QuoteStyle.Csv]")
m3.Append MTable.Skip(m3.Table, 2)
m3.Append MTable.InsertRows(m3.Table, 0, lst)
m3.Append MTable.PromoteHeaders(m3.Table, "[PromoteAllScalars=true]")
Debug.Print m3.ToString
'結果
'let Source1 = Csv.Document(File.Contents("C:\Test.csv"), [Delimiter=",", Columns=5, Encoding=65001, QuoteStyle=QuoteStyle.Csv]),
' Source2 = Table.Skip(Source1, 2),
' Source3 = Table.InsertRows(Source2, 0, {[Column1="No.", Column2="NAME", Column3="AGE", Column4="ADDRESS", Column5="TEL"]}),
' Source4 = Table.PromoteHeaders(Source3, [PromoteAllScalars=true]) in Source4
End Sub
「Hidennotare」は RelaxToolsの中の人がじっくりコトコト煮込んだソースです。
1.1 ICursor 系コマンドの使い方
1.2 StringBuilderの使い方
1.3 Messageクラスの使い方
1.4 Usingクラスの使い方
1.5 CSV Parser の使い方
1.6 ArrayListとDictionaryのシリアライズ化
1.7 ArrayListとDictionaryのデシリアライズ化
1.8 PowerQueryのM言語組み立て
2.1.1 CallbackHelper
2.1.2 Document
2.2.1 IAppInfo
2.2.2 IBookReader
2.2.3 IComparer
2.2.4 ICursor
2.2.5 IDictionary
2.2.6 IFormManager
2.2.7 IGDIPlus
2.2.8 IList
2.2.9 ILogger
2.2.10 IMCommand
2.2.11 INewInstance
2.2.12 IParam
2.2.13 IReader
2.2.14 IRegistry
2.2.15 IStringBuilder
2.2.16 IUsing
2.2.17 IUsingArgs
2.2.18 IValueObject
2.2.19 IWriter
2.3.1 ArrayList
2.3.2 Arrays
2.3.3 BookReader
2.3.4 CsvReader
2.3.5 CharCursor
2.3.6 CheckDigit
2.3.7 Clipboard
2.3.8 CsvWriter
2.3.9 Dialog
2.3.10 Dictionary
2.3.11 ExcelUtils
2.3.12 ExplorerComparer
2.3.13 FileIO
2.3.14 FormManager
2.3.15 GDIPlus
2.3.16 Graphics
2.3.17 IniFile
2.3.18 LinkedList
2.3.19 Logger
2.3.20 MCommand
2.3.21 MCsv
2.3.22 MFile
2.3.23 MList
2.3.24 MRecord
2.3.25 MTable
2.3.26 MatchBean
2.3.27 Math
2.3.28 NewExcel
2.3.29 NewPowerPoint
2.3.30 NewWord
2.3.31 Objects
2.3.32 OneTimeSpeedBooster
2.3.33 OrderedDictionary
2.3.34 Parser
2.3.35 Process
2.3.36 RangeCursor
2.3.37 RegExp
2.3.38 Registry
2.3.39 SampleVO
2.3.40 SheetCursor
2.3.41 SortedDictionary
2.3.42 Stack
2.3.43 StrSch
2.3.44 StringBuilder
2.3.45 StringEx
2.3.46 StringUtils
2.3.47 SystemInfo
2.3.48 TableCursor
2.3.49 TaskTrayView
2.3.50 TextReader
2.3.51 TextWriter
2.3.52 Using
2.3.53 Web
2.3.54 Zip