Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


154 / 500 ページ ←次へ | 前へ→

【10197】Re:EXCELのマクロを実行させると読み取り...
お礼  初心者A  - 08/1/30(水) 18:06 -

引用なし
パスワード
   回答ありがとうございます

accessが壊れていた様で
作成しなおしたところ、問題なくマクロまで実行できました。
画面を修正しようとしたら、ツールバーがでなくなってました。
修復もきかない状態で、実行しているうちにEXCELまで変になってしまったの
でしょうか・・・  お騒がせしました。

バージョンは office2002 SP3  OSはXP
社内は皆、これで統一されてます。

ありがとうございました。
・ツリー全体表示

【10196】Re:OpenDatabase ODBC接続について
発言  なお E-MAIL  - 08/1/29(火) 15:57 -

引用なし
パスワード
   ▼VBWASURETA さん ▼小僧 さん
こんにちは。本当に色々コメントいただき、ありがとうございます。

で、MDACのバージョン違いが気になったので、2000のマシンを2.53→2.81にバージ
ョンアップさせて動かしたら、エラーになりました。

纏めると

2.81は
OpenDatabase("", False, False, "ODBC; DSN=TEST; Driver={ORACLE ODBC Driver};")

2.53は
OpenDatabase("", False, False, "ODBC; Driver={ORACLE ODBC Driver}; DSN=TEST; ")

だと動きました。

うーん・・(他のバージョンならどうなの?って感じなんですけども)

VBWASURETAさんがご指南くださった、RDOとか他の方法で考えたほうがいいかもしれません・・

とりあえず、途中経過のご報告をさせていただきました。
・ツリー全体表示

【10195】Re:OpenDatabase ODBC接続について
発言  VBWASURETA  - 08/1/29(火) 14:31 -

引用なし
パスワード
   ▼なお さん:

もしどうしても、ダメでしたら
エラー処理はあまり宜しくない気がしますので
OS判定で試してもらえますか?
逃げ処理2みたいですけど。


例:
Public Const VER_WIN2000 = 5
Public Const VER_WINXP = 5.01
'
Public Function GetOSVersion() As Single
  On Error GoTo GetOSVersion_Error
  Dim SysObj As Object
  
  Set SysObj = CreateObject("SysInfo.SYSINFO")
  
  GetOSVersion = SysObj.OSVersion
  
  Set SysObj = Nothing

Exit Function
GetOSVersion_Error:
  GetOSVersion = -1 'OSバージョン取得失敗
End Function


Sub test()

  'Call MsgBox("OSのバージョンは:[" & GetOSVersion & "]です", vbOKOnly, "OSバージョン確認")

  If GetOSVersion = VER_WINXP Then 'OSがXPの場合
    Set Db = Ws.OpenDatabase("", False, False, "ODBC; TEST; Driver={ORACLE ODBC Driver};")
  ElseIf GetOSVersion = VER_WIN2000 Then 'OSがWin2000の場合
    Set Db = Ws.OpenDatabase("", False, False, "ODBC; Driver={ORACLE ODBC Driver}; DSN=TEST; ")
  Else 'OSがその他
    'ここは必要に応じて決めて下さい。
  End If

End Sub
・ツリー全体表示

【10194】Re:EXCELのマクロを実行させると読み取り...
質問  VBWASURETA  - 08/1/29(火) 14:12 -

引用なし
パスワード
   ▼初心者A さん:

こんにちは。

まず、それはExcelの話でしょうか?
Excelだけの話であれば、以下のほうへ。
h tp://www.vbalab.net/vbaqa/c-board.cgi?id=excel

AccessデータからのCSVからという話でしたら以下の3点
について確認します。

1、このExcelは最初から読み取りになってますか?
  使っているうちに読み取りになった等ありませんか?
  ※この場合Excelのファイルが壊れている可能性があります。

2、ExcelのバージョンとAccessのバージョンは何ですか?

3、Excelのセキュリティ設定に問題はありませんか?
  ※この問題であればセキュリティを変更する方法
   についてとなりますので、回答はできなくなります。

すみませんが以上の点ご確認下さい。
・ツリー全体表示

【10192】EXCELのマクロを実行させると読み取り専...
質問  初心者A  - 08/1/29(火) 13:38 -

引用なし
パスワード
     Dim XlFile As Object
  Set XlFile = oApp.Workbooks.Open("E:\EM仕上げ\加工費EXCEL化.xls")
  XlFile.Application.Run "Macro1"

CSVデータを固定書式の加工費EXCELに貼り付けるだけなのですが
マクロ実行した時に、加工費EXCELは編集の為ロックされているとなり
読み取り専用になってしまいます。

何かいい解決方法はないでしょうか?
御教授よろしくお願いします。
・ツリー全体表示

【10191】Re:OpenDatabase ODBC接続について
発言  VBWASURETA  - 08/1/29(火) 12:00 -

引用なし
パスワード
   ▼なお さん:

こんにちは。

実は、アクセスではOracleに繋いだことがないので
DAO Jetで試したことがないんですよね。

OracleはRDOでの接続が主流だった時期で
VB6.0からかExcelのどちらかでした。

アクセスもRDOで接続できたと思いますが、
試しにされてみますか?

h tp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_020.html

ここの「RDOでデータを取得する。」のExcelの画像をクリックすると
サンプルMDBがダウンロードできますから一度試してみるのも良いかも
知れませんね。
・ツリー全体表示

【10190】Re:OpenDatabase ODBC接続について
発言  なお E-MAIL  - 08/1/29(火) 11:03 -

引用なし
パスワード
   ▼VBWASURETA さん:

こんにちは。

>すみません。見ていて気になったのですが、
>全てXPでNGになってますよね?
>ACCESSではなくOS判定では?

そうなんですよね。確かにそうです。。

ただ、ちゃんとした確証が取れればいいのですが、XP、2000以外のOSのとき
どうなるかとか、悩むところです。

小僧さんが、MDACのバージョンを触れてらっしゃり、OSによって異なっていました。

今のところ、最初のOpenDatabaseで失敗したら、次は引数の順番を変えて
OpenDatabaseするような、突貫工事的な対応を入れて逃げています。。(汗)
・ツリー全体表示

【10189】Re:OpenDatabase ODBC接続について
発言  なお E-MAIL  - 08/1/29(火) 10:19 -

引用なし
パスワード
   ▼小僧 さん:
コメントありがとうございます。

>各PCの ODBCのバージョンと MDACのバージョンは統一されていますか?

ODBCは同じでした。
MDACは、2000が2.53 XPが2.81 で異なっていました。。

>上記はADOの説明ですので、DAOにも当てはまるとは限りませんが
>正直、当方も同じ環境が再現できないため解りません。
>以上、何かご参考になれば幸いです。

紹介いただいたサイトを見て、参考にさせていただきます。
本当にありがとうございました。
・ツリー全体表示

【10188】Re:OpenDatabase ODBC接続について
回答  小僧  - 08/1/28(月) 23:25 -

引用なし
パスワード
   ▼なお さん、VBWASURETA さん:
こんばんは。

基本的な所を確認させて下さい。

各PCの ODBCのバージョンと MDACのバージョンは統一されていますか?

OTN Japanより
h tp://otn.oracle.co.jp/software/tech/windows/odbc/index.html


AccessVBAに関する以前の問題として各PCの環境設定に違いがあれば、
当然コードにも影響が出てきますよね。

今回はOSが違うとの事ですのでMDAC辺りが怪しいですね。
(SPの当て具合によってもバージョンが変わってきます)


> 何故、引数の記述順を変えたらうまくいくのかも、正直わかってなく

MSサポートオンラインより
h tp://www.microsoft.com/japan/msdn/vs05/adonet/vsgenerics.aspx

上記はADOの説明ですので、DAOにも当てはまるとは限りませんが

> データ プロバイダは、
> 名前付きパラメータ (パラメータ名が重要で、パラメータが指定される順序は無関係) か、
> 位置指定パラメータ (パラメータの順序が重要で、名前は無関係)
> のどちらか、あるいはその両方をサポートできます。

とあります。
今回は名前付きパラメータを使っているため、
順序は関係なさそうに思えるのですが、
正直、当方も同じ環境が再現できないため解りません。

以上、何かご参考になれば幸いです。
・ツリー全体表示

【10187】Re:OpenDatabase ODBC接続について
発言  VBWASURETA  - 08/1/28(月) 18:24 -

引用なし
パスワード
   ▼なお さん:

すみません。見ていて気になったのですが、
全てXPでNGになってますよね?

ACCESSではなくOS判定では?
・ツリー全体表示

【10185】Re:OpenDatabase ODBC接続について
回答  VBWASURETA  - 08/1/28(月) 18:09 -

引用なし
パスワード
   ▼なお さん:

わからないなりに調べてみたですが、

www.accessclub.jp/bbs6/0018/das5493.html

のURLにある設定に合わせてもダメでしょうか?
原因は別ですが、環境が同じでエラー箇所を
超えてますので使えそうです。
・ツリー全体表示

【10184】Re:OpenDatabase ODBC接続について
回答  なお E-MAIL  - 08/1/28(月) 17:36 -

引用なし
パスワード
   ▼VBWASURETA さん:

>後、1点追加です。
>
>Oracleのバージョンもわかりましたら書いて下さい。
>お願いします。

バージョンは Oracle9i Release 9.2.0.4.0 です。
・ツリー全体表示

【10183】Re:OpenDatabase ODBC接続について
回答  なお E-MAIL  - 08/1/28(月) 17:32 -

引用なし
パスワード
   ▼VBWASURETA さん:

コメントありがとうございます。
回答させていただきます。

>4点教えてください。
>
>1、OpenDatabaseでエラーになってますか?

 はい。

>2、ユーザ名、パスワードがありませんが設定されてますか?

 設定はしてません。
 っというのも、認証画面として、ODBCの接続画面を使おうと思ってます。

>3、エラーはどのようなエラーとなって止ってますか?

 ODBC--呼び出しが失敗しました
 エラー番号は 3146 が返ってきてます。

>4、参照設定順はどのようになってますか?
  
  Visual Basic For Applications
  Microsoft Access 9.0 Object Library
  OLE Automation
  Microsoft ActiveX Data Objects 2.1 Library
  Microsoft DAO 3.6 Object Library
  Microsoft VBScript Regular Expressions 5.5

っとなっています。

以上、よろしくお願いいたします。
・ツリー全体表示

【10182】Re:OpenDatabase ODBC接続について
質問  VBWASURETA  - 08/1/28(月) 17:32 -

引用なし
パスワード
   ▼なお さん:

後、1点追加です。

Oracleのバージョンもわかりましたら書いて下さい。
お願いします。
・ツリー全体表示

【10181】Re:OpenDatabase ODBC接続について
質問  VBWASURETA  - 08/1/28(月) 16:59 -

引用なし
パスワード
   ▼なお さん:

こんにちは。

Oracleについてはあまり知りませんが、
4点教えてください。

1、OpenDatabaseでエラーになってますか?

2、ユーザ名、パスワードがありませんが設定されてますか?

3、エラーはどのようなエラーとなって止ってますか?

4、参照設定順はどのようになってますか?


因みに3のエラーNo.やエラーコードで調べられる場合が
結構あるので書いて下さい。
・ツリー全体表示

【10180】OpenDatabase ODBC接続について
質問  なお E-MAIL  - 08/1/28(月) 14:34 -

引用なし
パスワード
   DAOを使用して、ODBCデータソースに接続しようとしているのですが、OSとアクセスのバージョンによってうまくいきません。

(最初)
Set Ws = DBEngine.CreateWorkspace("ORADB", "", "", dbUseODBC)
Set Db = Ws.OpenDatabase("", False, False, "ODBC; Driver={ORACLE ODBC Driver}; DSN=TEST; ")

1.Windows2000 Access2000 でOK
2.WindowsXP  Access2003 でNG

だったので、色々やってみた結果、引数の順番を変える(DSNの指定とDriverの指定)と2.でもうまくいきました。

'ACCESS のバージョンにより、引数の順序を変える
If SysCmd(acSysCmdAccessVer) <> "9.0" Then 'Access2003
 Set Db = Ws.OpenDatabase("", False, False, "ODBC; TEST; Driver={ORACLE ODBC Driver};")
Else 'Access2000
 Set Db = Ws.OpenDatabase("", False, False, "ODBC; Driver={ORACLE ODBC Driver}; DSN=TEST; ")
End If

1.Windows2000 Access2000 でOK
2.WindowsXP  Access2003 でOK

ところが、
3.WindowsXP  Access2000 でNGとなりました。

Elseの構文で書いた接続方法ではNG、Ifの構文で書いた接続方法ではOKでした。。

色々調べてみたいのですが、行き詰まってしまい、何かご意見いただけるかと思いまして、投稿した次第です。

何故、引数の記述順を変えたらうまくいくのかも、正直わかってなく、
たまたま変えてみたらうまく動いたといった状況です。

以上、よろしくお願いいたします。
・ツリー全体表示

【10179】Re:データベース上でチェックをしてメー...
お礼  ナカゴン  - 08/1/28(月) 1:40 -

引用なし
パスワード
   ありがとうございました、ある程度解決策の道が開けました。
色々とご教授頂きありがとうございます。
・ツリー全体表示

【10178】Re:データベース上でチェックをしてメー...
回答  YU-TANG  - 08/1/28(月) 0:35 -

引用なし
パスワード
   ▼ナカゴン さん:
>フォーム上に表示さている内容をメールソフトの新規作成画面に表示させ、送信先は既に入力されているようにするにはどうすれば宜しいでしょうか?

Thuderbird を起動させる *のではなく* 新規メール作成画面を
表示したいのであれば、Shell *ではなく* FollowHyperlink を
使う方法があります。

www.penhagi.com/access/tips/69_hyperlink.htm

ただし、既定のメーラーが Thunderbird に設定されている必要が
あります。
既定のメーラーが実行環境で何に設定されているかは、
Internet Explorer の [ツール]-[インターネットオプション]
-[プログラム]-[電子メール] から確認/設定できます。

既定のメーラーが Thunderbird に設定されていなくて、かつ
既定のメーラーを Thunderbird に設定できない環境下で、
それでも Thunderbird の新規作成画面を表示したい場合は、
下記のように指定します。

Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose ""to=foo@bar.com,subject=test,body=本文""",vbNormalFocus

もっとも、あまりに長い文章を指定するとどこかで本文が切れる
かもしれないので、検証は慎重にやっておいたほうがいいでしょう。
用途によっては中途半端なメールが送信されて大問題になるのも
困るでしょうから。

他にもプロファイルの指定や添付ファイルの指定もできますが、
これはもう Access というより Thunderbird の話なので、不明点は
もじら組の公式フォーラム辺りでお尋ねになったほうが確実でしょう。

それでは。
・ツリー全体表示

【10177】Re:データベース上でチェックをしてメー...
質問  ナカゴン  - 08/1/27(日) 22:34 -

引用なし
パスワード
   ありがとうございます。お蔭様でサンダーバードを開く事が出来ました。
引き続きお伺いしたいのですが、もしチェックボックスにチェックを入れてメールソフトが起動し、尚且つフォーム上に表示さている内容をメールソフトの新規作成画面に表示させ、送信先は既に入力されているようにするにはどうすれば宜しいでしょうか?ご回答頂ければ幸いです。宜しくお願いいたします。
・ツリー全体表示

【10176】Re:テーブルの中での選択方法
回答  hatena  - 08/1/27(日) 22:15 -

引用なし
パスワード
   >っということは、テーブルでコンボボックスの絞込みができないということは、
>一つのリストに長々と選択項目を作るしかないということなのでしょうか…?
>
>フォームのようには、うまくいかないんですね。

そうです。
もともと、Accessは、
テーブルはデータの定義と格納場所、
クエリでは、演算、集計、抽出などのデータ操作、
データをユーザーに見せたり、入力させたりするのはフォーム、
印刷物として見栄えよく出力するのは、レポート、
というように役割分担が決まっているのです。

テーブルでもコンボボックスで入力できるようになったのは、
最近のバージョンで、あくまでおまけの機能と考えた方がいいでしょう。

テーブルを直接、ユーザーに触らせるのは、データ喪失の危険性が
高いのでさけるべきです。
・ツリー全体表示

154 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1083137
(SS)C-BOARD v3.8 is Free