• ベストアンサー

Access97。動作しているパソコンのOSの種類を知りたい

Access97でボタンをクリックするとデスクトップに有るCSVファイルのデータを取込むイベントプロシージャをつくりました。ところがWin98ならpathが"C:\WINDOWS\デスクトップ\Data.csv"となるのですが、Win2000なら"c\Documents and Settings\ユーザー\デスクトップ"となるので、OSの種類によりIF分で処理を分岐させようと考えています。 そこで、そのAccessのシステムを動作させているパソコンのOSの種類を認識させる方法は無いか悩んでいます。APIとかならそんなことも出来るのでしょうが、Access-VBAにそういう機能はあるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

これはようするにデスクトップのパスを取得したいわけですよね。 Win98だからと言って、"C:\WINDOWS\デスクトップ\"とは限りませんよ。 AccessのVBAでもAPIは使用できます。以下のページが参考になると思います。 http://www.loadsystem.net/api/api05.asp OSのバージョンを知るにはこちらです。 http://www.loadsystem.net/api/api06.asp

souta_n
質問者

お礼

ありがとうございます。こういうHPもあるもんですね。参考にします。

その他の回答 (2)

  • jmh
  • ベストアンサー率23% (71/304)
回答No.2

GetVersionEx() API でバージョンは分かりますが、 「開く-ダイアログ」で、ユーザーに訊いたほうがよくないですか?

souta_n
質問者

お礼

ありがとうございます。不勉強でGetVersionEx()APIというのがわからなくて・・・AccessVBAのHELPみてものってないのですが・・・

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.1

残念ながら、簡単にOSのバージョンを取得する方法はわからないのですが、 代替の一つのアイディアとして、以下のようなやり方はいかがでしょうか? 例えば、VBA で、"C:\Documents and Settings" フォルダーを参照して、エラーの発生(Win98 だと存在しないフォルダーですので、当然エラーになりますよね。)の有無で条件分岐を行うとか。 具体的なコードはこんな感じ、 (この例だと、フォルダーの参照に GetAttr関数を使っています。) Private Sub 取込コマンド_Click() On Error GoTo Err_取込コマンド_Click If GetAttr("C:\Documents and Settings") <> vbDirectory Then 'ここで Win98, Me の時処理を行う。 Else 'ここで Win2000, XP の時の処理を行う。 End If Exit_取込コマンド_Click: Exit Sub Err_取込コマンド_Click: If Err.Number = 53 Then 'もしエラーナンバーが 53(ディレクトリが見つからない)なら、 '(エラーを無視して)次の Win98 の処理へ Resume Next Else 'それ以外のエラーなら、エラー内容を表示してプロシージャを終了 MsgBox Err.Description End If Resume Exit_取込コマンド_Click End Sub 多分これで、souta_nさんの目的の動作はすると思いますが、なんだか裏技っぽくてかっこ良くないので、自信なし ということで・・・・・・

souta_n
質問者

お礼

ありがとうございます。私もとりあえずエラールーチンで処理を分岐するという正にyoishoのお答えの様なコードでとりあえず作ったのです。それでこれまた全く同じ感想でなんかかっこ悪いな・・・それじゃ教えてgooに出してみよう、という事にしたのです。でもなんかyoishoさんの回答を見て「わっおんなじ考えだ!」と、そこはかとなくうれしかったです。

関連するQ&A

  • アクセスが拒否されました

    使っていたWindowsXPのノートPCが起動しなくなりました。 現象から、おそらくハードディスクではなくノートPCのハードウェアに問題があると判断し、 このPCのハードディスクを抜き出し、 別のWindowsXPのデスクトップPCのセカンダリに繋いで起動したところ、 起動しなくなったPCのハードディスクのCドライブの中身を 「Dドライブ」としてみることができるようになりました。 しかし、 Documents and Settingsの中の自分のアカウントの中を開こうとすると「アクセスが拒否されました」 と表示されて見ることができません。 C:\Documents and Settings\All Usersや、 C:\Documents and Settings\Administratorは見ることができるのですが、 C:\Documents and Settings\自分のアカウント名、だけが拒否されます。 ここにデータが入っているので、 なんとか拒否を回避してデータを回収したいのですが、回避方法はないでしょうか。 なお、LinuxのデスクトップPCのセカンダリに繋いで今回のノートPCのHDDをマウントした場合は 特に問題なくアクセスすることができました。

  • インポートの種類にエクセルがない?

    こんにちは。皆さまのお力を貸してください!! 会社のパソコンで使っているAccessについてです。 今まではファイル→外部データの取り込み→インポートでファイルの種類をExcleにするとインポートできたのですが、何故かこのファイルの種類の中にExcleが出てこなくなってしまったんです。他にもテキストファイルやHTMLドキュメントもありません(もう一台のパソコンで比べてみました)。 再インストールをやってみましたが状況は変わりませんでした。Access初心者の私に考えつく方法はこれくらいしかなかったのですが。 何とか元のようにするにはどうしたらよいのでしょうか? ちなみにOSはWin98でOffice97を使っています。 何とぞよろしくお願いします。

  • vistaです。「C:\Documents and Settings\All Users\Application Data\」フォルダにアクセスできません

    C:\Documents and Settings\All Users\Application Data\ 二アクセスしようとすると 「C:\Documents and Settings\All Users\Application Data\二アクセスできません。 アクセスが拒否されました」 とでます。 しかし僕は管理者です。 何をすればアクセスできるようになりますか?すいませんが教えてください。

  • アクセスする方法

    telnet でアクセスしようとすると拒否されます。 どうしたらアクセスできるでしょうか? ログインユーザーは管理者権限を持っています。(ビルドイン) myDoc対象ユーザーも管理者権限を持っています。 C:\Documents and Settings\*****>cd My Documents アクセスが拒否されました。 C:\Documents and Settings\*****>cacls "My Documents" C:\Documents and Settings\*****\My Documents アクセスが拒否されました。 C:\Documents and Settings\*****>cacls "My Documents" /t /p administrator:F よろしいですか (Y/N)?y アクセスが拒否されました。 普通は(OI)(CI)(IO)F とか出てきますよね。

  • 文字列を特定文字で分割したい

    はじめまして。宜しくお願いします。 現在Access2002のVBAをつかってタイトルのようなことを実現したいと思っています。 Dim a As String Dim b As String という二つの変数を用意して 「C:\Documents and Settings\デスクトップ\test.csv」という文字列が与えられているとき 変数aには「test.csv」を、変数bには「C:\Documents and Settings\デスクトップ\」を 格納しようとしています。 スマートなやり方がわからず、 文字列の右から一文字ずつ比較して行き、何文字目に「¥」が出てくるかをカウントして、right関数とleft関数で分割を行っています。 このような処理を行う場合、なにか適した関数があると思い探しているのですが、 なかなか見つからず、行き詰っています。(そのような関数があるのかも分からず・・) もしもなにかお気づきの方が居られましたら、ご教授宜しくお願いします。

  • エクセルVBA 各パソコンのユーザー名の所得・・・

    OSはXPでデスクトップの場所は C:\documents and settings\ユーザー名\デスクトップ ですよね・・・ このユーザー名が各パソコンによって違うので 困っちゃってます;; 各パソコンにVBAを入れたときに変更すれば良いとは思うのですが・・・それでは大変すぎるので、 そのユーザー名を自動的に所得したいのです。 そのユーザー名を所得するVBAとかってあるのでしょうか? いつも質問ばかりですいません;; なにとぞ宜しくお願いいたします。

  • アクセスと同フォルダのCSVファイルをインポートしたい

    初心者で質問がわかりにくかったらすみません。 アクセスで、CSVファイルを取込みたいです。 下記のような構文で、取込む方法はわかりました。 Private Sub コマンド62_Click() DoCmd.TransferText acImportDelim, "請求書csvインポート定義", _ "請求書", "C:\Documents and Settings\user3\デスクトップ\受付番号アクセス\これ!\請求書.csv", True End Sub しかし、これだと常に取込むCSVファイルが同じ場所ではないと、いけないので、他のPCで使用するとエラーになってしまいます。 なので、他のPCに移した場合でも、いちいち構文を修正せずに、 この構文が作成してあるアクセスと同フォルダの”請求書.csv”というファイル名のCSVデータを取込めるような、構文が知りたいです。 お手数ですが、教えてください。

  • Mac(OS9.1)のデスクトップはどこ?

    Windows XPだと 「C:\Documents and Settings\ユーザー名\デスクトップ」 がデスクトップの格納場所になります。 Mac(OS9.1)だと、デスクトップはHDDのどこに格納されているのでしょう?

    • ベストアンサー
    • Mac
  • Accessのセキュリティを解除したい

    在庫管理をAccessで付けているのですがそのAccessファイルを他のパソコンに移動させたいです。 バージョンは2003です。 セキュリティがかかっているらしくAccess(8.2MB)を開こうとすると下記のような警告画面が出てきて開くことができません。 【オブジェクトC:\Documents and settings\All users\Documents\在庫管理.mdbを使用する権限がありません。システム管理者またはこのオブジェクトの作成者から権限を取得してください。】 デスクトップ上にショートカットがありそのリンク先を見ると "C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "C:\Documents and Settings\admin\My Documents\在庫管理.mdb" /WRKGRP "C:\Documents and Settings\admin\My Documents\在庫\セキュリティ.mdw" と記載されておりリンク先が【セキュリティ.mdw】となっているのです。 ショートカットのプロパティからリンク先を探すボタンを押すとOFFICE11フォルダのMSACCESS本体(MSACCESS.EXE)にリンクしてしまいます。 ショートカットから開くとログオン画面が開き名前とパスワードを入力する画面が出ます。 名前はadminとなっておりパスワードは空です。 特に入力することも無くOKボタンを押すだけでアクセスを開くことができます。 セキュリティを解除するにはどうしたらいいでしょうか?

  • アクセスできないフォルダがあります

    C:\Documents and Settings に再インストール前のユーザーフォルダが残っておりバックアップし損ねたデータを回収できるかと思いアクセスしようとしたところ、アクセスが拒否されました。 どうにかアクセスできるようにはできないでしょうか、また前のユーザーを復旧させることはできないでしょうか?