質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
A5:SQL Mk-2

A5:SQL Mk-2は、フリーのSQL開発ツールです。高機能で軽量、且つ分かりやすいことを目指して開発されました。SQLの実行やテーブル編集などの機能に加え、簡単な操作によりDB定義書やER図を自動生成することも可能です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1935閲覧

VBA実行時エラー'1004':SQL構文エラーの修正方法

Orukaya

総合スコア1

A5:SQL Mk-2

A5:SQL Mk-2は、フリーのSQL開発ツールです。高機能で軽量、且つ分かりやすいことを目指して開発されました。SQLの実行やテーブル編集などの機能に加え、簡単な操作によりDB定義書やER図を自動生成することも可能です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2023/06/02 02:53

VBA実行時エラー'1004':SQL構文エラーの修正方法

  • ExcelVBAにて、SQLの記述部分で出るエラー'1004'がでるので修正したい。

前提

・社内データベースのテーブルをExcelに書き出すためのVBAを作成しています。

・SQLはA5:SQL Mk-2というソフトで問題なく動くことを確認してからVBAに組み込んでいます。

・デバッグしたところ
.Refresh BackgroundQuery:=False
の部分で引っ掛かって止まります。

・ExcelのA1セルには
"ExternalData_1 : データの取り出し中..."
の表示のみで、テーブルの作成が止まります、なぜ取り出し中まで進んでくれるのに止まるのでしょうか。

発生している問題・エラーメッセージ

実行時エラー'1004' SQL構文エラー

該当のソースコード

Sub Access_工数() ' Dim Sql As String Sql = "select b.INDNO" Sql = Sql & "from テーブルA a" Sql = Sql & "left join テーブルB b on b.LISTNO = a.LISTNO" Sql = Sql & "where b.INDNO like '%IN230300000%'" With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _ "ODBC;DSN=データベース名;UID=ユーザー名;pwd=パスワード;SERVER=サーバー名;", Destination:=Range("$A$1")). _ QueryTable .CommandText = Sql .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .ListObject.DisplayName = "テーブル_***_からのクエリ1" .Refresh BackgroundQuery:=False End With End Sub

試したこと

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQLを&を使って組み立てる部分で、間にspaceがないからでは。
変数Sqlは“select b.INDNOfrom テーブルA…”みたいになってるはず。

投稿2023/06/02 03:06

matukeso

総合スコア1617

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orukaya

2023/06/02 04:08

気が付きませんでした、ありがとうございます!
otn

2023/06/02 09:37

> 気が付きませんでした 思い込みで「空白無し」に気づかないというのは、誰しもあり得ますが、 普通は、エラー行にブレークポイントを設定するとか、 debug.print Sql してみるとかで気づきます。 デバッグの仕方を覚えましょう。 「間違うことを無くす」は人間には無理なので「間違いを見つける」方法を学んで解決します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問