質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

3107閲覧

VBA

shiretoko123

総合スコア13

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2015/11/23 04:12

お尋ねします。ACCESSのformのテキストBOXで

クリックやファイルを開いたときに

PCのコンピュウター名を自動取得したいです

①Sub Sample()

Dim WshNetworkObject As Object '---(1)

Set WshNetworkObject = CreateObject("WScript.Network") '---(2)

With WshNetworkObject MsgBox "ユーザー名: " & .UserName & vbCrLf _ & "コンピュータ名: " & .ComputerName End With Set WshNetworkObject = Nothing

End Sub

Sub Button1_Click()
Dim strBuffer As String
Dim lngLngs As Long
Dim lngRet As Long

' Bufferを確保 strBuffer = String(256, Chr(0)) lngLngs = Len(strBuffer) ' コンピュータ名取得 lngRet = GetComputerName(strBuffer, lngLngs) ' Null文字の手前までを有効として表示 MsgBox Left$(strBuffer, InStr(1, strBuffer, Chr(0)) - 1)

End Sub

②Sub Sample()

Dim WshNetworkObject As Object '---(1) Set WshNetworkObject = CreateObject("WScript.Network") '---(2) With WshNetworkObject MsgBox "ユーザー名: " & .UserName & vbCrLf _ & "コンピュータ名: " & .ComputerName End With Set WshNetworkObject = Nothing

End Sub

がネットでありますがメッセージBOXはでますが

テキストにはいらないです

テキストに値が入るようにいたいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

質問内容から、基本的な部分も理解していないVBA初心者とお見受けしました。その前提がで回答します(もし、見当はずれでしたら、すみません。)

まず、提示のコードは、Windows Script Host や Windows API という外部ライプラリーを使用する高度な方法です。初心者なら、VBAにもともとある Environ関数で取得できますのでそれを利用することをお勧めましす。

下記のコードだけで、メッセージボックスに表示できます。

VBA

1Sub Sample() 2 MsgBox "ユーザー名: " & Environ("USERNAME") & vbCrLf _ 3 & "コンピュータ名: " & Environ("COMPUTERNAME") 4End Sub

テーブルに保存したいとういことですが、情報が不足しているので、下記の前提で回答しますね。

テーブル名 ユーザー情報
フィールド名 ユーザー名、コンピューター名

フォーム上に、
テキストボックス「txtユーザー名」、「txtコンピューター名」
コマンドボタン「登録」
が配置してある。

フォームからテーブルに登録するには、連結フォームにするのが簡単です。
フォームのレコードソースを「ユーザー情報」と設定する。
「txtユーザー名」のコントロールソースを「ユーザー名」
「txtコンピューター名」のコントロールソースを「コンピューター名」
に設定する。
これで、フォームとテキストボックスはテーブルと連結されて、入力した内容が自動でテーブルに保存できます。

「登録」ボタンクリックで自動で入力するには、クリック時のイベントプロシージャを下記のように記述します。

VBA

1Private Sub 登録_Click() 2 3 Me.txtユーザー名 = Environ("USERNAME") 4 Me.txtコンピュータ名 = Environ("COMPUTERNAME") 5 DoCmd.RunCommand acCmdSaveRecord 6 7End Sub

これで、「ユーザー情報」テーブルに保存されます。

このままでは、フォーム(ファイル)を閉じて、開いた時に、前回のユーザー名、コンピュータ名がそのまま表示されるので、閉じるときに削除する処理か、いつ誰が開いたかの履歴を保存しておきたいならクリック時の日時も登録して、開くときは新規レコードへ移動するなどの処理が必用になりますが、とりあえずは上記のことができてから、後は、どのようにしたいか仕様を明確にして再度質問してもらうことになりますね。

投稿2015/11/23 07:32

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

メッセージBOXに表示されるのであれば、
「WshNetworkObject.ComputerName」をFormのテキストボックスに
代入すればよいと思います。

投稿2015/11/23 04:41

tomo.ina

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shiretoko123

2015/11/23 05:24

ご連絡ありがとうございます。メッセージBOXに表示はできたのですが、 テキストBOXのわくに『PC-2015』と自動で書き、登録ボタンでテーブルにその値が残るようにしたいです。宜しくお願いいたします。
tomo.ina

2015/11/23 06:10

すいません。 「テキストBOXのわく」と「登録ボタンでテーブルにその値が残るようにしたい」というのが よくわからないのですが...。 どのようなことを実現したいのかよくイメージできていません...。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問