'上記の5つのSQL文を一度に格納するための変数。'(Variant型ですが「配列」変数として利用します。)'現在のMicrosoftQueryのSQL文をイミディエイトウィンドウに表示します。'操作側が2000の場合は句ごとに複数行、'操作側が2010の場合はひとつひとつの要素に収まるだけのできるだけ1行で表示されます。」と、普通のSQLのように書いてもOKです。`Sheet1$`;」と省略しても動きます。Queryによって、パスが通っている感じだから'だと思います。'いずれにしましても、MicrosoftQueryのSQLは少し変わった仕様になっています。'''シート(=システムテーブル)の名前は、'「$」をつけて「`」バッククォートで囲む必要があります。'シート名以外のバッククォートは省略できる場合が多いのですので、'どう省略できるか、ご自分でも試してみてください。'作成したSQL文をVariant型の配列変数に代入します。Queryの結果表のSQL内容を書き換えます。SQLArrey'SQL文を実行します。Worksheets("Sheet1").QueryTables(1).Refresh'今回、本プロシージャは「test98」プロシージャの実行直後に呼び出し+実行がなされますが'DoEventのループでエラー回避処理を行うと無限ループに陥ってしまうのでやりません。'コメントアウトします。Loop'無限ループに陥る理由は調べていません。'なのでご自分でも試して、調べてみてください。'複数のSQLを一度に実行すると、最後のSQLの実行時に無限ループになるのか'位置は関係なく、無限ループになるのかはわかりません。'前者ならラクですが、でも後者でも事前にテストすれば'どのSQL実行でDoEventsをやめればいいかはわかるので、'大丈夫ではないかと思います。Sub'#####################################################################################'test98()プロシージャを呼び出して、「`D:\test88\test01.xls`」のデータを書き換え'test99()プロシージャを呼び出して、その書き換わった状態をシートに再表示します。Sub''▼(02)少し汎用化したコードの例こちらもコメントがめっちゃ多いので、無駄だったら全部消して見てみてください。サンプルファイルの「Module2」の内容です。'SQL文などを受け取って、MicrosoftQuery(クエリ)のSQLを実行するプロシージャです。'というエラーも回避します。'引数の指定については以下のとおりです。まで:SQL文を「句ごと」に指定します。:MicrosoftQueryを表すオブジェクト式を指定します。:エラーを回避するためのDoEventsのループをやるかやらないかのフラグです。「1」=やる、「2」=やらない、の区分です。「2」を指定して、「やらない」ほうがいいかもしれません。いけないかもしれません。その点はご自分でもチェックしてみてください。'ここではコメントアウトします。'SQL文を代入するための変数を用意(ここでは「配列として使います。'ここではコメントアウトします。'ここではコメントアウトします。SQL文を分けて代入します。Variant型ではなくString型にするとエラーになります。'それともExcelのバージョンの違いなのか、未チェックです。'なので、ご自分でも色々と調べてください。'OKかもしれません。'SQL文の入れ替えをします。'入れ替えたSQL文をそのまま実行します。'「Refresh」が「実行と同じ意味」らしいです。'ただ、「SQL文の上書き保存」の意味があるのかまでは未チェックです。'上書き保存しているのかもしれません。'なので、ご自分でも調べてみてください。'ここではコメントアウトします。'というエラーを回避します。'ということで進めます。'・・・というエラーが出る場合の回避をするプロシージャです。'SQL文を生成して、それを「test200」プロシージャに送ってSQL文を実行するプロシージャです。'日付がシリアル値に変わって表示されてしまうことがあります。'結果表のセル範囲の書式をすべて「標準」に直す、などの処理を追加したほうがいいかもしれません。'このままでもある程度使えるかもしれません。'配列を宣言しています。'1つめのSQLの生成。(表の内容を閉じたまま書き換えするための命令文の作成。'各句ごとに最後に半角スペースを入れることを忘れないようにします。'エラーになってしまうためです。'シート名(というかシステムテーブル名)は、バッククォートで囲む必要があります。'1つめのSQLの実行。'といったようなオブジェクト式の書き方をしてもOKです。'2つめのSQLの生成。(書き換えた内容を再表示するための命令文の作成。'シート名(というかシステムテーブル名)は、バッククォートで囲む必要があります。'部分的にバッククォートで囲むことを省いても大丈夫です。'操作対象のExcelファイルの拡張子を省略してもダイジョブな場合もあります。'どう省略しても大丈夫か?はご自分でもチェックしてみてください。'いったん、(0)~(9)までをクリアしてからまた、(0)~(9)を使ってもいいかもです。'2つめのSQLの実行。'テスト用のプロシージャです。今回は特には使いません。'テスト用のプロシージャです。今回は特には使いません。Explicit'#######################################################################################'SQL文などを受け取って、MicrosoftQuery(クエリ)のSQLを実行するプロシージャです。'同時に、「バックグラウンドでデータが更新中であるため、この操作は行えません」'というエラーも回避します。''引数の指定については以下のとおりです。まで:SQL文を「句ごと」に指定します。:MicrosoftQueryを表すオブジェクト式を指定します。:エラーを回避するためのDoEventsのループをやるかやらないかのフラグです。「1」=やる、「2」=やらない、の区分です。「2」を指定して、「やらない」ほうがいいかもしれません。いけないかもしれません。その点はご自分でもチェックしてみてください。'ここではコメントアウトします。String'SQL文を代入するための変数を用意(ここでは「配列として使います。'ここではコメントアウトします。'ここではコメントアウトします。SQL文を分けて代入します。Variant型ではなくString型にするとエラーになります。_sqlstr10)'※重要注意事項'なお、Variant型なのは、xlsmじゃなくてxlsだからなのか、'ピボットテーブルのCommandTextじゃなくて'MicrosoftQueryのそれだからなのか'それともExcelのバージョンの違いなのか、未チェックです。'なので、ご自分でも色々と調べてください。'「エクセルのバージョン」、'「拡張子」、'「ピボット/MicrosoftQuery」'等々の違いによっては、'SQL文をVariant型(特に配列)でなくても、ただのString型でも'OKかもしれません。'オブジェクトとして受け取った「MicrosoftQueryの結果表」の、'SQL文の入れ替えをします。SQLArrey'入れ替えたSQL文をそのまま実行します。'MicrosoftQueryの場合は、Excecuteなどではなく、'「Refresh」が「実行と同じ意味」らしいです。ObjQry01.Refresh'ただ、「SQL文の上書き保存」の意味があるのかまでは未チェックです。SQLArrey」で'上書き保存しているのかもしれません。'なので、ご自分でも調べてみてください。'ここではコメントアウトします。Loop'「バックグラウンドでデータが更新中であるため、この操作は行えません」'というエラーを回避します。'ただし、クエリによってはCall先のLoopのプログラムが'無限ループになってしまうので、'1=ループする:2=ループ処理自体をしない、'ということで進めます。この操作は行えません」'・・・というエラーが出る場合の回避をするプロシージャです。Sub'######################################################################################'すでに作成してある「D:\test88\test01.xls」のMicrosoftQueryの結果表に対する'SQL文を生成して、それを「test200」プロシージャに送ってSQL文を実行するプロシージャです。'ただし、列の入れ替えなどをしたときに、日付データのセルの書式が数値などになったままだと、'日付がシリアル値に変わって表示されてしまうことがあります。'ですので、'結果表のセル範囲の書式をすべて「標準」に直す、などの処理を追加したほうがいいかもしれません。'「列を減らしたり、入れ替えることは絶対にない、増減は行のみ」というような場合は'このままでもある程度使えるかもしれません。'列幅が自動調整されるのも、もしいやだったらそのようにコードを書くか、'MicrosoftQueryの結果表を右クリックしてプロパティにて「列の幅を調整する」のチェックを'はずします。のちのちの改変がめんどっちくなりそうなので'配列を宣言しています。String'1つめのSQLの生成。(表の内容を閉じたまま書き換えするための命令文の作成。)'SQL文の「句ごと」に配列に代入しますが、'各句ごとに最後に半角スペースを入れることを忘れないようにします。'もともとSQL文は、各句ごとの境目は半角スペースで区切らないと'エラーになってしまうためです。'シート名(というかシステムテーブル名)は、バッククォートで囲む必要があります。""'1つめのSQLの実行。クエリ_3")」'といったようなオブジェクト式の書き方をしてもOKです。'「Worksheets("Sheet1").」を「Activesheet.」と書きかえれば'Sheet1だけでなく、どのシートに作られたMicrosoftQueryの結果の表にも'使えます。'2つめのSQLの生成。(書き換えた内容を再表示するための命令文の作成。)'シート名(というかシステムテーブル名)は、バッククォートで囲む必要があります。'部分的にバッククォートで囲むことを省いても大丈夫です。'操作対象のExcelファイルの拡張子を省略してもダイジョブな場合もあります。'どう省略しても大丈夫か?はご自分でもチェックしてみてください。'いったん、(0)~(9)までをクリアしてからまた、(0)~(9)を使ってもいいかもです。'2つめのSQLの実行。Sub'##############################################################'テスト用のプロシージャです。今回は特には使いません。Sub'##############################################################'テスト用のプロシージャです。今回は特には使いません。挫折するオブジェクト式やプログラム(プロシージャ)の書き方、挫折しない書き方、の違い。ODBCでQueryTableオブジェクトを自動作成するサンプルコード)。2000以降の全バージョンで使えると思います。~ついでに、セルの値で結果表示を自動で切り替える「パラメータクエリ」のVBAでの自動作成も。~★★Access2000VBA・Excel2000VBA独学~Win32API。eChromeを例に。(Excel、Word、Access、などが32bit版のモノでしか使えませんが、OSは64bitでも大丈夫です。』、「オブジェクトを引数にして・かつ・オブジェクトを返す」、そういう自作関数の作り方。●2019年新春・お若い方々へ~『先進国で日本のサラリーマンの給料だけが下がり続ける2つの理由』を是非読んでみてください。「安全」な、Youtube動画のダウンロード方法6つ。挫折するオブジェクト式やプログラム(プロシージャ)の書き方、挫折しない書き方、の違い。送信メールが受信トレイに入ってしまうトラブルの回避、など。ODBCでQueryTableオブジェクトを自動作成するサンプルコード)。2000以降の全バージョンで使えると思います。~ついでに、セルの値で結果表示を自動で切り替える「パラメータクエリ」のVBAでの自動作成も。technology.。