Access2003を使用しております。
データーファイルをサーバーに置きテーブルのリンクを使い
複数の端末で作業しておりますが、途中でデータを勝手に変更されたりして困っています。
それで誰がデーターの追加や変更を行ったのかをはっきりさせる為に、テーブルのフィールドに作業した
端末のIPアドレスを自動で取得出来ないものでしょうか?
どなたか教えてください。お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

VBAに習熟されているのであれば、APIやWMIを使用して取得できるので、AUTOEXECマクロで実行し、ログテーブルか何かに書き込んでおけばよいと思います。



過去質問:VBAからIPアドレスを取得する方法を教えてください。
http://oshiete1.goo.ne.jp/qa2007402.html
    • good
    • 0
この回答へのお礼

ありがとうございました。
やはりVBですか・・・
勉強しようと思いました。

お礼日時:2009/05/27 21:20

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBAからIPアドレスを取得する方法を教えてください。

現在使用しているPCは、NETやVBの開発環境を持って
いないため簡単にWinsockコントロールを使用した
IPアドレス取得ができません。
そのためAPIを使った昔の方法で対処したいと考えて
おり調べています。どなたかおわかりになる方がいまし
たら教えて頂けると助かります。

開発環境は、Excel2000 VBAです。
よろしくお願いします。

Aベストアンサー

APIではないんですけど、
WMIを使うとこんな感じ
Dim NetAdapters, nao, ip
Set NetAdapters = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where (IPEnabled = TRUE)")

for each nao in NetAdapters 'ネットワークアダプターは、複数ある場合がある
MsgBox nao.Caption 'ネットワークアダプター
for each ip in nao.IPAddress 'IPは、複数割り当てられている場合がある
MsgBox ip 'IPアドレス
next
next
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_networkadapterconfiguration.asp

APIではないんですけど、
WMIを使うとこんな感じ
Dim NetAdapters, nao, ip
Set NetAdapters = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where (IPEnabled = TRUE)")

for each nao in NetAdapters 'ネットワークアダプターは、複数ある場合がある
MsgBox nao.Caption 'ネットワークアダプター
for each ip in nao.IPAddress 'IPは、複数割り当てられている場合がある
MsgBox ip 'IPアドレス
next
next...続きを読む

QExcelのVBAを使った自IPアドレスの取得

2日悩みましたが、解決策が見つからないため質問させて頂きます。
現在、ExcelのVBAを使った表を作成しております。
編集者が誰なのかをはっきりさせるため、項目の新規追加・情報の削除を行った編集者のIPアドレスを履歴として残したいと思っています。(閲覧履歴は不要です。)
そのため、編集者PCのIPアドレスを取得してそれを履歴一覧に残したいのですが、この方法がわかりません。
いろいろと探しましたが、WMI(?)やWSH(?)等の、私の理解をはるかに超えるものしか見つからず困っております。
このようなことはできないのでしょうか?
もし可能であれば、教えて下さい。
環境は
OS:Windows XP
Excel2000です。
宜しくお願いします。

Aベストアンサー

取得したいアダプタのDefaultGatewayが判っているならWMIを使ったこんなのはどうでしょう。
1つのアダプタに複数のIPが割り当てられている場合等は考慮していません。
また、サンプルなので変数宣言やエラー処理も適当です。

Sub Sample()
 strDefaultGateway = "192.168.50.254" '←DefaultGatewayがコレのIPを調べる
 strIp = "該当無し"

 Set objNic = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where (IPEnabled = TRUE)")
 For Each oneNic In objNic
  'DefaultGatewayの設定が無いNICは無視
  If IsError(oneNic.DefaultIPGateway(0)) = False Then
   strChk = oneNic.DefaultIPGateway(0)
   If InStr(strChk, strDefaultGateway) > 0 Then
    strIp = oneNic.ipaddress(0)
    Exit For
   End If
  End If
 Next
 MsgBox "IPアドレス:" & strIp

End Sub

取得したいアダプタのDefaultGatewayが判っているならWMIを使ったこんなのはどうでしょう。
1つのアダプタに複数のIPが割り当てられている場合等は考慮していません。
また、サンプルなので変数宣言やエラー処理も適当です。

Sub Sample()
 strDefaultGateway = "192.168.50.254" '←DefaultGatewayがコレのIPを調べる
 strIp = "該当無し"

 Set objNic = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where ...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

Q【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには

バージョン:Access2002

フォーム「frm01」にテキストボックス「tb01」が作ってある場合、
Forms.frm01.tb01.Value="あいう"
とすれば、フォームもコントロールも指定できるのですが、
Dim strTxt As String
strTxt = "tb01"
Forms.frm01.strTxt.Value="あいう"
だと、文字列型変数"strTxt"が展開されないのでフォーム「frm01」のコントロール「strTxt」を探してしまいエラーになってしまいます。

文字列型変数でフォームやコントロールを指定するには、どのようにすればよいのでしょうか?

Aベストアンサー

フォームの場合
 Forms(strFrm)

フォームのコントロールの場合
 Forms(strFrm).Controls(strTxt)


これでも参照できますが、普通ここまで省略しませんね。
 Forms(strFrm)(strTxt)

あとで見たとき、訳がわからなくなりそう。

Qバッチ終了時にDOS窓を閉じるコマンド

自作バッチについて質問があるのですが、
バッチ終了時にDOSプロンプトを自動的に閉じる方法を教えて下さい。

以下の方法は知っているのですが↓
------------------------------------------------------------
バッチのプロパティ画面の「プログラム終了時にウィンドウを閉じる」を
チェックする
------------------------------------------------------------

上記のようなやり方ではなく、バッチファイルの中に直接コマンドを書いて
設定する方法を教えて下さい。

Aベストアンサー

バッチファイルでウィンドウを閉じるのはexitコマンドです。

exit

だけを記述したバッチファイルを作って実行してみると確認出来ます。

Qアクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。

それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。

元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか?

よろしくお願いします。

Aベストアンサー

No1 です。
今回の場合には
Docmd.RunCommand acCmdSaveRecord の方が良かったですね
文字通りレコードを保存します。
Requery に引きづられてしまいました (^_^;)

Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか?
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QVBAでコンピューター名を取得したい

こんにちは
Office2000使ってます
ExcelやAccessのVBAで作業しているコンピューター名を
取得し 変数に入れたいのですがどうすればできますか?
ご存知の方教えてください
VBA初心者です よろしくお願いします

Aベストアンサー

Win32 APIのGetComputerNameを使いましょう

http://homepage1.nifty.com/MADIA/vb/API/GetComputerName.htm

QACCESSサブフォームにデータ反映されない

よろしくお願いします。

Access2010を使っています。
メインフォームにあるテキストボックス2つに条件を入力し、
抽出したデータをサブフォームで表示させたいと思います。

●メインフォーム名「フォーム1」
テキストボックス2つ「tex1」「tex2」

●データ元クエリ「q1」
フィールド名「ID1」「ID2」「Name」

●サブフォームSQL
SELECT q1.Name
FROM q1
WHERE (((q1.ID1) = Forms![フォーム1]!tex1) And
((q1.ID2) = Forms![フォーム1]!tex2)));


フォームを開き、tex1とtex2に入力してもサブフォーム表示が変わりません。
サブフォームをデータシートで別に開くと、データ抽出できていることは確認できました。

サブフォームのコントロールソースへSQLを入力するだけでは、
メインフォーム内でのデータは反映されないんでしょうか??

Aベストアンサー

>サブフォームをデータシートで別に開くと、
>データ抽出できていることは確認できました。

の部分がよくわかりませんが。


普通は、たとえば、
メインフォームにボタンを一つ
設定し、そのボタンのクリックイベントで、

Private Sub コマンド0_Click()
Me!埋め込み0.Requery
End Sub

のように設定します。
ここで、「埋め込み0」というのはメインフォームの
デザインビューでサブフォームを表示するために
設定するコントロールのことで、サブフォーム
そのもではありません。初期値は「埋め込み0」
のような名前になっています。サブフォームと
同じ名前に設定しているならば、「埋め込み0」
のところをサブフォームと同じ名前に置き換えても
かまいません。


そのほかには、「tex2」の更新後処理に同様に、

Private Sub tex2_AfterUpdate()
Me!埋め込み0.Requery
End Sub

のように設定してもいいのですが、この場合には
「tex2」に入力後、一旦フォーカスを移動させる
必要があります。たとえば「tx1」にマウスを
移動させてクリックするとか。それによって
「tex2」の更新後処理が起動されます。

>サブフォームをデータシートで別に開くと、
>データ抽出できていることは確認できました。

の部分がよくわかりませんが。


普通は、たとえば、
メインフォームにボタンを一つ
設定し、そのボタンのクリックイベントで、

Private Sub コマンド0_Click()
Me!埋め込み0.Requery
End Sub

のように設定します。
ここで、「埋め込み0」というのはメインフォームの
デザインビューでサブフォームを表示するために
設定するコントロールのことで、サブフォーム
そのもではありません。初期値は「埋め込み0」
のよう...続きを読む

QVBとアクセスでSQL文に変数を使いたいのですが

したいことはレコードの挿入をSQL文で変数を使用して処理したいのですがうまく動作してくれません

StrSQL_1 = _
"insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _
"values (7,'(変数1)','(変数2)','(変数3)')"

変数の部分が置き換わりません、いろいろ調べてみたのですがどうもわかりませんvaluesでは変数を使えないのでしょうか?

もしそうだとするとどのようにすればレコードを挿入するSQL文で変数を利用できるのかをおしえていただけないでしょうか

Aベストアンサー

文字列なんで、&で連結すればOKです。

StrSQL_1 = _
"insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _
"values (7,'" & 変数1 & "','" & 変数2 & "','" &(変数3)& "')"


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報