文書番号: 402329
最終更新日: 1997/10/20
0001 → 1 1e1 → 1.00E+1 1/2,94-0001 → 1 月 2 日,Jan-94これは XLODBC.XLA がデータを取得する際に「数値データ」と認識するためで、
"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 パスワード TigerXLODBC アドイン関数を使用したサンプル モジュールは次の通りです。
'以下の 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