文書番号: 402329
最終更新日: 1997/10/20
0001 → 1 1e1 → 1.00E+1 1/2,94-0001 → 1 月 2 日,Jan-94これは XLODBC.XLA がデータを取得する際に「数値データ」と認識するためで、SQL 文の中で、フィールド名を「=""」と「""」で囲むことにより文字列として取得することができます。
"SELECT '=""' + フィールド名 + '""' FROM テーブル名"
"SELECT '=""' || フィールド名 || '""' FROM テーブル名"なお、文字列を連結する演算子 (SQL Server → +、ORACLE→ ||) はご使用のデータベース サーバ アプリケーションにより異なります。詳細についてはマニュアルを参照していただくか、またはメーカー様へお問い合わせ下さい。
[SQL Server]
プログラム実行環境
サーバー SQLServer
ODBC ドライバ SQLServerODBC ドライバ (Excel5.0 添付)
データソース名 TstSQL
TstSQL の内容
サーバー名 serversql1
ユーザー ID sa
データベース pubs
パスワード Excel
[ORACLE]
プログラム実行環境
サーバー ORACLE
ODBC ドライバ ORACLE Ver. 6 用 ODBC ドライバ (Access 添付)
データソース名 TstORA
TstORA の内容
サーバー名 serverora1
ユーザー ID SCOTT
パスワード Tiger
XLODBC アドイン関数を使用したサンプル モジュールは次の通りです。
'以下の 2 行は改行せずにコードを入力してください。
'上の 2 行は改行せずにコードを入力してください。
サーバー上のデータ
95-0001
10-0095
94-0001
1/2
<サンプル 1> の実行結果
Jan-95
10-0095
Jan-94
1 月 2 日
<サンプル 2>、<サンプル 3> の実行結果
95-0001
10-0095
94-0001
1/2
Sub MySQL()
Dim Chan As Variant
Dim NumRows, NumCols As Integer
'接続と変数 Chan に接続 ID をセット
'以下の 2 行は改行せずにコードを入力してください。
Chan = SQLOpen("DSN=TstSQL;SERVER=serversql1;UID=sa;DATABASE=pubs;
PWD=Excel", , 2)
'上の 2 行は改行せずにコードを入力してください。
'SQL 文作成
sql2 = "SELECT 商品コード FROM 売上"
'SQL 文実行
SQLExecQuery Chan, sql2
'Sheet1!A1 に結果を返す
SQLRetrieve Chan, Range("Sheet1!A1")
'切断
SQLClose Chan
End Sub
Sub CharValSQL()
Dim Chan As Variant
Dim NumRows, NumCols As Integer
'接続と変数 Chan に接続 ID をセット
'以下の 2 行は改行せずにコードを入力してください。
Chan = SQLOpen("DSN=TstSQL;SERVER=serversql1;UID=sa;DATABASE=pubs;
PWD=Excel", , 2)
'上の 2 行は改行せずにコードを入力してください。
'フィールド名 [商品コード] のデータを =" "で囲まれた形で SQL 文定義
sql2 = "SELECT '=""' + 商品コード + '""' FROM 売上"
'SQL 文実行
NumCols = SQLExecQuery(Chan, sql2)
'Sheet1!B1 に結果を返す
NumRows = SQLRetrieve(Chan, Range("Sheet1!A1"))
'切断
SQLClose Chan
Range("Sheet1!A1").Resize(NumRows, NumCols).Copy
'[形式を選択して貼り付け] で [文字数値] のみ貼り付け
Range("Sheet1!A1").Resize(NumRows, NumCols).PasteSpecial xlValues
Application.CutCopyMode = False
End Sub
Sub CharValORA()
Dim Chan As Variant
Dim NumRows, NumCols As Integer
'接続と変数 Chan に接続 ID をセット
'以下の 2 行は改行せずにコードを入力してください。
Chan = SQLOpen("DSN=TstORA;DBQ=p:serverora1;UID=SCOTT;
PWD=Tiger", , 2)
'上の 2 行は改行せずにコードを入力してください。
'フィールド名 [商品コード] のデータを =" "で囲まれた形で SQL 文定義
sql2 = "SELECT '=""' || 商品コード || '""' FROM 売上"
'SQL 文実行
NumCols = SQLExecQuery(Chan, sql2)
'Sheet1!B1 に結果を返す
NumRows = SQLRetrieve(Chan, Range("Sheet1!A1"))
'切断
SQLClose Chan
Range("Sheet1!A1").Resize(NumRows, NumCols).Copy
'[形式を選択して貼り付け] で [文字数値] のみ貼り付け
Range("Sheet1!A1").Resize(NumRows, NumCols).PasteSpecial xlValues
Application.CutCopyMode = False
End Sub
Sub CharValFiSQL()
Dim Chan As Variant
Dim NumRows, NumCols As Integer
'接続と変数 Chan に接続 ID をセット
'以下の 2 行は改行せずにコードを入力してください。
Chan = SQLOpen("DSN=TstSQL;SERVER=serversql1;UID=sa;DATABASE=pubs;
PWD=Excel", , 2)
'上の 2 行は改行せずにコードを入力してください。
'フィールド名 [商品コード] のデータを =" "で囲まれた形で SQL 文定義
sql2 = "SELECT '=""' + 商品コード + '""' 商品コード FROM 売上"
'SQL 文実行
NumCols = SQLExecQuery(Chan, sql2)
'Sheet1!B1 に結果を返す
NumRows = SQLRetrieve(Chan, Range("Sheet1!A1"), , , True)
'切断
SQLClose Chan
Range("Sheet1!A1").Resize(NumRows + 1, NumCols).Copy
'形式を選択して貼り付けで文字数値のみ貼り付けます
Range("Sheet1!A1").Resize(NumRows + 1, NumCols). _
PasteSpecial xlValues
Application.CutCopyMode = False
End Sub
Sub ChaValFiORA()
Dim Chan As Variant
Dim NumRows, NumCols As Integer
'接続と変数 Chan に接続 ID をセット
'以下の 2 行は改行せずにコードを入力してください。
Chan = SQLOpen("DSN=TstORA;DBQ=p:serverora1;UID=SCOTT;
PWD=Tiger", , 2)
'上の 2 行は改行せずにコードを入力してください。
'フィールド名 [商品コード] のデータを =" "で囲まれた形で SQL 文定義
sql2 = "SELECT '=""' || 商品コード || '""' 商品コード FROM 売上"
'SQL 文実行
NumCols = SQLExecQuery(Chan, sql2)
'Sheet1!B1 に結果を返す
NumRows = SQLRetrieve(Chan, Range("Sheet1!A1"), , , True)
'切断
SQLClose Chan
Range("Sheet1!A1").Resize(NumRows + 1, NumCols).Copy
'[形式を選択して貼り付け] で [文字数値] のみ貼り付け
Range("Sheet1!A1").Resize(NumRows + 1, NumCols). _
PasteSpecial xlValues
Application.CutCopyMode = False
End Sub
[SQLServer]
「 MS Query 」の [?]-[目次] コマンド - [リファレンス ODBC ドライバ] -
[SQL Server] - [上級ユーザー向け 接続文字列 (上級)]
[ORACLE (Version 6 用 Access 添付)]
「コントロール パネル」の「 ODBC 」- <追加> ボタン - 「 ORACLE Driver 」を選
択 - <OK> ボタン - <ヘルプ> ボタン - <目次> ボタン - [接続文字列 (上級)]
[その他]
ODBC ドライバ メーカーにお問い合わせ下さい
Keywords: KBHOWTO KB402329
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch