★ExcelVBA ~ SQLコマンドを配列化するプログラム(ODBC接続時のQueryTableオブジェクトなどにおいて)
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
QueryTableオブジェクトなどでSQLコマンドを作成するとき、たいがいデータ型が、「Variant型の配列にしろ」とヘルプに書いてあるので、それを作るために使います。
以前は390文字ずつくらいでチョン切ってエラーが無かったと思うのですが、今回は255文字ごとじゃないとエラーになったので、そのような感じで作りました。
(チョン切る文字数を可変にしました。SQL作成以外でも使えます。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
' ' Option Explicit '############################################################################### 'SQLコマンドの配列(Variant型)を、文字数区切りで生成する関数 'SQL以外にも文字列を文字数区切りで配列化したいときにも使えます。 ' ' Call SQLCmdAryMake01(区切りたい文字列 , 区切る文字数) ' '############################################################################### Function SQLCmdAryMake01(ByVal s_SqlStr01jj As String, ByVal i_SplitNum01 As Integer) As Variant ' Dim s_SqlStr01jj As String ' Dim i_SplitNum01 As Integer 'SQLコマンドの配列に格納するのに、何文字ごとにSplitするかの文字数 Dim Ary_s_SQL01() As Variant Dim i_Cnt01 As Integer Dim s_Chunk As String 'Chunk=かたまり Dim i_ChunkNum01 As Integer 'i_ChunkNum01=255文字ごとのかたまりの数(→つまり、要素数になる) ' s_SqlStr01jj = "galgkjaldsgjalsjga" ' i_SplitNum01 = 5 'SQLコマンドの配列の各要素に格納する文字数の設定。256文字以上はダメだった 。 i_ChunkNum01 = Len(s_SqlStr01jj) \ i_SplitNum01 + IIf(Len(s_SqlStr01jj) Mod i_SplitNum01 > 0, 1, 0) 'SQLを255文字のかたまりにすると、いくつの要素数になるかの計算。 ' Stop ReDim Ary_s_SQL01(0 To i_ChunkNum01 - 1) '空の配列を生成。 For i_Cnt01 = 0 To (i_ChunkNum01 - 1) s_Chunk = Mid(s_SqlStr01jj, i_Cnt01 * i_SplitNum01 + 1, i_SplitNum01) Ary_s_SQL01(i_Cnt01) = s_Chunk Next i_Cnt01 ' 255文字ずつ取り出して配列に格納するループ。 SQLCmdAryMake01 = Ary_s_SQL01 End Function ' ' |
- 投稿タグ
- 「ニセモノ」への道, 「本物」に近づくために, AccessVBA, Accessの独学, Access操作の基礎, Accesの独学, ADO/DAO, ExcelSQL, ExcelVBA, Excelの独学, Excel操作の基礎, Excel連携VBA, MicrosoftQuery, ODBC, SQL, パソコンでの自動化, ビジネスパソコンの基礎, ビジネス一般常識, マクロ, ワークシート関数, 独学, 自動化