- ベストアンサー
Excel上のSQLでReplace関数
ExcelからADO経由でMDBにつないでいます。 SQLの中で文字列を更新したくてReplaceで置き換えようとした のですが、Accessのモジュール上でのSQLでは問題なくReplace が使えているのですが、Excelのマクロ上ではダメです。 この場合、どうしたらいいのでしょうか? ヨロシコ願いします。
- オフィス系ソフト
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どうも安易なアドバイス?をしてしまったようです。 こちらでも確認できました。申し訳なく思っています。 調べてゆくと Jet を使った SQL文では Replace関数は存在しない、との記述 http://www.accessclub.jp/bbs6/0007/das1585.html の後半 MSDN辺りに、JET のSQLで使える関数の一覧があればと思うのですが・・ SQLインジェクション対策と思われる SandBox 適用 http://support.microsoft.com/default.aspx?scid=kb;JA;239482 こちらでも、キーの値を変えてみましたが効果なし ※PCの再起動は行っておりませんので十分な検証とは言えません。 ですので、私の手に余りそうです。 RecordSetを開いて、Loopで回しながらEdit・UpDateするしか思いつきません。 スッキリと出来ないもんですかねー 回答ではなくて怪答ですみません。
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
どの様に「ダメ」なのか? dim strSql as string strsql= "あーたらこーたら" & replace(・・)" & "・・" debub.print strsql 'で内容を確認 としといて このstrSqlを渡してあげればどうでしょう?
補足
こんにちは。 pSQL = "UPDATE T_PC_DATA SET T_PC_DATA.Key2 = Replace(Key1,'Dynabook','DN')" pSQL = pSQL & " WHERE (((T_PC_DATA.Key0)='TOSHIBA'));" CN.Execute pSQL が、SQLですが、、 エラー内容は・・・ '式に未定義関数 'Replace'があります。 で、 その関数自体が、存在しない感じなのです。
関連するQ&A
- エクセルでSQLを使う
VB6.0でのSQLは 理解しているのですが (アクセスのデータベース宣言して、使ってるんですが) エクセルでSQLを 使うには、データベースの宣言など、必要らしい。 でも、エクセルのデータやら、文字列や式まで、混ざっているシートと、データベースが頭の中で一致せず、困っています。 ある範囲を宣言するんでしょうか
- ベストアンサー
- Visual Basic
- [Access2000] Replace関数がない?
レコードの特定文字列を置換しようと思い、いろいろ調べたところ、Access2000から「Replace」関数というのが使えるようになったとのこと。 早速クエリーで使用したところ、「式の中に未定義関数 Replace があります」というエラー表示が…。式ビルダの組み込み関数を確認しましたが、Replaceという関数はやはり存在しないようです。 何か間違っているのでしょうか?お力添えいただければ幸いです。
- ベストアンサー
- オフィス系ソフト
- エクセルの変数をアクセスでも使いたい。
エクセルの標準モジュールには Option Explicit Public 文字列 As String Public アクセス As Object Public Sub エクセル側テスト() 文字列 = "あ" Set アクセス = GetObject("C:\db1.mdb") If Not アクセス Is Nothing Then アクセス.Run "アクセス側テスト" End If Set アクセス = Nothing End Sub アクセス(db1.mdb)の標準モジュールには Option Compare Database Option Explicit Public 文字列 As String Sub アクセス側テスト() MsgBox 文字列 End Sub という風にコードを書きましたが やはりアクセスではエクセルで指定した変数が受け継がれません。 これを「アクセス側テスト」のマクロでもmsgboxで「あ」と表示させるにはどうすればいいのでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Replace関数について
アクセスからエクスポートした改行を含むデータを エクセルの区切り位置で分割しようとctr➕J で試みたのですが、 改行コードの違いによりうまくいきませんでした。 改行を含む列(含まないセルもある)で、replace関数等を使って解決できることでしょうか? アクセス内で修正してからエクスポートしたほうがいいでしょうか? その場合の具体的な方法を教えてください。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- ADOでのSQLついて
こんにちは! ASPでADOを利用してSQLを使っていまして、 任意の文字列検索をやりたいのですが、うまくヒットしません。 AccessでのSQLで、likeを使った ((フィールド名) Like "*文字列*")を使いたいのですが、 ASPではアスタリスク*がうまく認識されていないような気がします。 うまくやる方法は無いのでしょうか?
- ベストアンサー
- Microsoft ASP
- Excel → Access データをインポート
OS WinXP Pro SP2 Office 2000 SP3 はじめまして。 マクロ(Excel VBA)を記述しているExcelファイル(Xls_Macro.xls)とインポート用データのExcelファイル(Xls_Data.xls)は別々のファイルになっていて、マクロを実行するとExcelファイルとインポート用データのExcelファイルのデータをAccessファイル(Access.mdb)にインポートする仕組みを開発しています。 インポート用データのExcelファイル(Xls_Data.xls)をADOで接続しレコードセットでデータを取得し、Accessファイル(Access.mdb)もADOで接続しレコードセットの「.AddNew」でAccessファイル(Access.mdb)に更新しようと考えています。 この考え方で問題ないのでしょうか!? もっと簡単な方法があるという方や、何か良い方法をお持ちの方 いらっしゃいましたら、よろしくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- Access起動中にエクセルからADOでデータの更新ができない
こんばんは。原因がわからないので質問させてください。 SQLサーバーのデータをAccessのmdbへリンクテーブルしています。 (SQLサーバー → Access) 全て一つのパソコンで行なっています。(LANには接続していません) Accessのmdbファイルを起動している時に ExcelからSQLサーバーのAccessにリンクしている上記のテーブルへ ADOを使ってデータを追加しています。 (Excel → Access) しかし、「rs.Update」の部分で 「ODBC--リンク テーブル'テーブル1'での更新に失敗しました。」 となってしまいます。 なので、一度mdbファイルを落として、コードを再開すると通るので ADOでExcel → Accessにデータを追加し終わってから再度mdbファイルを立ち上げています。 また同じ状態(mdbファイルを起動)で Excel → SQLサーバー へ更新クエリをしようとすると「時間切れになりました」となります。 (こちらもmdbファイルを落とすと再開できます。) いちいちmdbファイルを落とすのめんどうなのですが 回避する方法はありますか? cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\Users\Documents.test.mdb" rs.Open "テーブル", cn, adOpenStatic, adLockPessimistic rs("フィールド") = True rs.Update '保存 rs.Close: Set rs = Nothing というコードを書いています。 Accessを落とせば正常に動きます。 ご教授よろしくお願い致します。
- ベストアンサー
- その他(データベース)
- エクセルのReplaceで使える「?」(ハテナ)は
エクセルのReplaceで使える「?」(ハテナ)は、 ワイルドカードとして藻文字列としても機能するのでしょうか? Sub Sample() Range("a1").Value = "aaa" Range("a1").Replace What:="a?a", Replacement:="aba" Range("a1").Value = "aaa" Range("a1").Replace What:="a?a", Replacement:="aba?" End Sub を実行すると 「?」は、文字1文字のワイルドカードとして機能しつつ、 最後に「?」が付く事から、文字列として?が置換されていますが この区別ってないのでしょうか?
- ベストアンサー
- Excel(エクセル)
- Excel マクロ SQL実行について
いつもお世話になっております。 現在、Excel1997と2007でマクロを作成しております。 使用している環境は様々でOSは2000~XPまでです。 っで質問なんですが、「マクロ」というシートと「データ」というシートがあったとして、「マクロ」シートにはボタンがあり、ボタンを押すとマクロが実行します。 マクロが実行されると「データ」というシートにあるデータをマクロ内のSQLで集計して、新しい「出力」というシートに吐き出します。 現在マクロ内のSQLはDAOライブラリを使用しています。EXCELマクロ内でSQLを使用する場合にDAOやADO等のライブラリを使用せずにSQLを実行することは可能でしょうか?
- 締切済み
- その他(プログラミング・開発)
- Replace関数
更新クエリにて、品名置換のReplace関数使用で、サブフォームからボタン操作で更新クエリを実行したら以下の事が出来ます。 Replace([品名],"りんご","りんご青森") 品名 りんご を りんご青森 に置換 Replace([品名],"青森","") 品名 の 文字列から 青森 を無くす置換 これをベースに、サブフォームに、テキストボックス1 テキストボックス2 を配置して テキストボックス1 → りんご を テキストボックス2 → りんご青森 に置換 サブフォームを表示しているフォーム1から参照 Replace([品名],[Forms]![フォーム1]![テキスト1],[Forms]![フォーム1]![テキスト2]) サブフォームから参照 Replace([品名],[Forms]![フォーム1]![履歴].[Form]![テキスト1],[Forms]![フォーム1]![履歴].[Form]![テキスト2]) 上記のフォームに配置したテキストボックスから、任意の置換情報を入力して置換する流れを作っているのですが、いずれのフォームからもテキストボックスの内容を認識出来ない様です。 ご教授頂ければ幸いです。 以上、宜しくお願い致します。
- ベストアンサー
- Access(アクセス)
補足
ありがとうございます。そういうことなのですね。 その処理はAccess上ですることにします。