中小企業の働き方改革をサポート>>

Accessの超初心者です。

Accessでフォームとテーブルを2つのファイルに分け、テーブルのmdeファイルはユーザー認証付の共有フォルダ(NAS)上に置き、フォームのmdbファイルは使用者数名に配布し、リンクテーブルで共有フォルダ上のmdeファイルに接続したいと思っています。

共有フォルダのユーザー認証はVBAでnet useコマンドを使用すれば接続できると分かり、ログインフォームに追加することができました。

ですが、ログインフォーム上にユーザー名を入力するテキストボックスを配置し、その入力内容をnet useコマンドに渡したく下記のVBAを書いてみましたが、共有フォルダにログインできない状態です。

Dim UserName As String

UserName = Me.ユーザー名

Set myWSH = CreateObject("WScript.Shell")
myWSH.Run "net use ファイルパス パスワード /User:UserName"

変数UserNameをダブルクォーター等々で囲わなければならないと思い色々試してみた
のですが、共有フォルダのユーザー認証が通らずご教授の程、よろしくお願い致します。

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

A 回答 (1件)

> myWSH.Run "net use ファイルパス パスワード /User:UserName"



WScript.Shell の Run 命令に、"net use ~" の文字列を渡して実行してもらう。
なのですが・・・・
この書き方だと "~ /User:UserName" と、変数名をそのまま文字列として渡しています。
変数に格納された文字列(ユーザー名)を使用したいなら、

 myWSH.Run "net use ファイルパス パスワード /User:" & UserName

ですね。
    • good
    • 0
この回答へのお礼

遅くなりまして申し訳ございません。

共有フォルダへログインすることが出来ました。
ログイン出来ない理由まで添えて頂きありがとうございます。
以後精進します。

お礼日時:2011/11/23 00:52

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

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

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

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

QNET USE をVBSで

初めて質問させていただきます。よろしくお願いいたします。
現在、下記のコマンドと同じ処理をVBSで実現させたく考えておりますが知識が無く困っております。

net use \\node1\share1 /user:oji passwd

大変勝手なお願いなのですが、自分で勉強する時間がないので、ズバリのご回答頂けないでしょうか?

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

Aベストアンサー

一応VBSでドライブの割り当てをチェックしてから割り当てるサンプルプログラムを作ってみました。
注:他のユーザ名で既に何処かの共有フォルダを使用している場合は、複数のユーザー名が使えないというエラーになります。その場合は、他のユーザー名での接続を切断する必要があります。
'空いているドライブ名にネットワークドライブを割り当てる
dim objFs, objNet, DriveLetter, Drive
dim i

Set objNet = WScript.CreateObject("WScript.Network")
Set objFs = WScript.CreateObject("Scripting.FileSystemObject")
DriveLetter="DEFGHIJKLMNOPQRSTUVWXYZ"
for i=1 to Len(DriveLetter)
Drive = Mid(DriveLetter,i,1)
if not objFs.DriveExists(Drive) then '指定したドライブが見つからない
Drive = Drive & ":"
exit for
end if
next
if Len(Drive) = 1 then
WScript.Echo "割り当てるべきドライブ名の空きがありません"
WScript.Quit(1)
end if
'WScript.Echo Drive
objNet.MapNetworkDrive Drive, "\\2000Server\share1",,"oji","ojipassword"
if objFs.FileExists(Drive & "\Target1.dat") then
WScript.Echo "YES" '実際の処理を書く
end if
objNet.RemoveNetworkDrive Drive

一応VBSでドライブの割り当てをチェックしてから割り当てるサンプルプログラムを作ってみました。
注:他のユーザ名で既に何処かの共有フォルダを使用している場合は、複数のユーザー名が使えないというエラーになります。その場合は、他のユーザー名での接続を切断する必要があります。
'空いているドライブ名にネットワークドライブを割り当てる
dim objFs, objNet, DriveLetter, Drive
dim i

Set objNet = WScript.CreateObject("WScript.Network")
Set objFs = WScript.CreateObject("Scripting.Fi...続きを読む

Qネットワーク上のファイルのコピー

ネットワーク上のファイルをローカルにコピーする為に
FileCopy("\\cp1\D$\aaa\a.txt", "d:\b.txt")
を実行したところ
ファイル名または番号が不正です(エラー52)
が出てしまいます
ネットワーク上のPCとユーザとパスワードが違うのでログインでエラーになっているのですが
ネットワーク上のPCにユーザを登録するのではなく
ユーザ名とパスワードを指定してログインしてから
ファイルをコピーする方法はありますでしょうか?

Aベストアンサー

http://www.vbvbvb.com/jp/gtips/0851/gWNetAddConnection2NoDriveLetter.html

Qバッチファイルで昨日の日付を取得

すみません、どなたか教えて下さい。

バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。
今日の日付は下記のように取得しています。

rem 日時変数の取得
for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do (set YYYYMMDD=%%a%%b%%c
)

Aベストアンサー

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if %mm%==05 (set mm=04&& set dd=30)
if %mm%==06 (set mm=05&& set dd=31)
if %mm%==07 (set mm=06&& set dd=30)
if %mm%==08 (set mm=07&& set dd=31)
if %mm%==09 (set mm=08&& set dd=31)
if %mm%==10 (set mm=09&& set dd=30)
if %mm%==11 (set mm=10&& set dd=31)
if %mm%==12 (set mm=11&& set dd=30)
)
echo 昨日は、%yy%年%mm%月%dd%日です。

echo.
pause
:: ----- prevdate.bat おわり -----

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if...続きを読む

Q【DOSコマンド】net useのデバイス名に*を指定した場合の動作について

●実現したいこと
 ネットワーク越しのとあるフォルダ内の全ファイルを
 0バイトにクリアしたい。

●実現出来た方法

rem 念のため、Zドライブを削除しておく。
net use Z: /delete /yes

rem 該当フォルダをZドライブに割り当てる。
net use Z: \\(IPアドレス)\hoge\hoge\hoge

rem カレントドライブをZドライブとする。
z:

rem Zドライブ配下のファイルを全てクリアする。
for %%i in (*.*) do (
echo %%i
type nul > %%i
)

rem Zドライブ接続を削除する。
net use Z: /delete /yes
exit

●問題点
 Zドライブが別の接続で使われていた場合、エラーにならないか?
 
●解決案
 ・net useのデバイス指定を「*」とする。
   この場合、「net use *: /delete /yes」という文で
  関係ない接続までdeleteされないでしょうか?

 ・あるいは「デバイス(ドライブレター)」を使わずに、
  ダイレクトにとあるフォルダを指して、クリア出来ない
  でしょうか?

●実現したいこと
 ネットワーク越しのとあるフォルダ内の全ファイルを
 0バイトにクリアしたい。

●実現出来た方法

rem 念のため、Zドライブを削除しておく。
net use Z: /delete /yes

rem 該当フォルダをZドライブに割り当てる。
net use Z: \\(IPアドレス)\hoge\hoge\hoge

rem カレントドライブをZドライブとする。
z:

rem Zドライブ配下のファイルを全てクリアする。
for %%i in (*.*) do (
echo %%i
type nul > %%i
)

rem Zドライブ接続を削除する。
net use Z: /delete /yes
...続きを読む

Aベストアンサー

> ・あるいは「デバイス(ドライブレター)」を使わずに、
>   ダイレクトにとあるフォルダを指して、クリア出来ない
>   でしょうか?

---ここから---
for %%i in (\\(IPアドレス)\hoge\hoge\hoge\*.*) do (
echo %%i
type nul > %%i
)
---ここまで---
とやれば、ネットワークドライブに割り当てなくても処理できます。

Qマクロでネットワーク上のコンピューターへの接続

エクセルのマクロを使用して、ネットワーク上のコンピューターのファイルを開く事を考えています。
(例:IPアドレス『192.168.0.1』のPCの『共有』のホルダー内の『book1.xlsx』を開く場合)
ただ、そのコンピューターへ接続する時に、ユーザー名とパスワードが必要になります。
先に設定しておけば問題ないのですが、マクロを使用時のみの接続を考えています。
使用環境は、win7で、Excel2010です。
どうやれば出来るか教えてください。

Aベストアンサー

はい、そのフォルダをドライブのように使用できます。

Const 共有名 = "\\パソコン名\共有名"

Const 共有名 = "\\パソコン名\共有名\サブフォルダ―名"
のようにしても良いですよ。

QDOSコマンドで共有ファイルへアクセスを行う際のパスの書き方

初めまして。

本題になります・・・

DOSコマンドで共有ファイルのアクセスを行う際のパスの書き方は、
「\\サーバー名\共有フォルダ名\ファイル名」ですが、DIRなどを行うと、認証が走って、ファイルへのアクセスが出来ません・・・全てDOSコマンド(バッチ)で完結したいのですが・・・
例えば、「dir \\サーバー名\共有フォルダ名\ファイル名」とした場合に、「ログオン失敗: ユーザー名を認識できないか、またはパスワードが間違っています。」と表示されてしまいます。
現在行いたい処理は、他サーバーの「共有ファイルのコピー&削除」、「共有フォルダの作成」です。

【環境】
コマンド実行させるサーバー:[WIN2KSEVER(admini権限/パスワード共通)]
他サーバー:[WIN2KSERVER(admini権限/パスワード共通)]

解決する方法がありましたら、お教え下さい。
お願いします。

Aベストアンサー

実際に試してみました。

net use \\サーバー名 パスワード /user:ユーザー名
dir \\サーバー名\共有フォルダ名\ファイル名

でいけました。

QVBAでネットワークコンピュータのファイルにアクセスできない(XL2000)

EXCEL2000で、EXCELのファイルと、データ専用のファイルを組にして運用しています。都度データファイルのバックアップを取るために、VBA中でネットワークコンピュータ(LAN)のフォルダにFileCopyしようとするのですが、ファイルが見つからないというエラーが出て、コピー出来ません。しかし、エクスプローラーで一回ネットワークフォルダーを開いてから終了し、再度VBAを実行すると問題なくコピー出来ます(何か道筋が出来るらしい)。
また、WEBで調べてAPIのCopyFileを用いると良いという記事をみて、トライしましたが事態は同じでした。なお、過去の類似の質問で、WindowsXPの場合のMicrosoftの情報が紹介されていましたが、本ケースでは両方のPCともWindows98です。
以上、宜しくお願いします。

Aベストアンサー

こんにちは。様子が見えてきましたね。
パスワードの件、おそらく他に正解があると思いますが、
ネットワークドライブを割当てるのが手っ取り早いかと。

Dim FS, WshNet
Const strDrive = "Z:"

Set FS = CreateObject("Scripting.FileSystemObject")
Set WshNet = CreateObject("WScript.Network")

If Not FS.DriveExists(strDrive) Then
WshNet.MapNetworkDrive strDrive, "\\コピー先PC\コピー先フォルダ", False, , "パスワード"
End If
FS.CopyFile "コピー元パス", strDrive & "\", True

Set WshNet = Nothing
Set FS = Nothing


です。
ドライブ割当ては、

WshNet.MapNetworkDrive "ドライブレター", "割当てパス", False, "ユーザ名", "パスワード"

の部分で、False を True にすると、起動時に再接続します。
また、WinMe で確認しましたがユーザ名は省略できるようです。

ファイルのコピーに FileSystemObject を使っているようなので大丈夫とは思いますが、
念のため、実行する端末には最新の Win98 用 スクリプトランタイムを入れてください。

下記からダウンロードできます。

参考URL:http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=E74494D3-C4E1-4E18-9C6C-0EA28C9A5D9D

こんにちは。様子が見えてきましたね。
パスワードの件、おそらく他に正解があると思いますが、
ネットワークドライブを割当てるのが手っ取り早いかと。

Dim FS, WshNet
Const strDrive = "Z:"

Set FS = CreateObject("Scripting.FileSystemObject")
Set WshNet = CreateObject("WScript.Network")

If Not FS.DriveExists(strDrive) Then
WshNet.MapNetworkDrive strDrive, "\\コピー先PC\コピー先フォルダ", False, , "パスワード"
End If
FS.CopyFile "コピー元パス", strDrive & "\", True...続きを読む

Qデータベース内のテーブル名の取得

お世話になります。
初心者的な質問でしたらすいません。
SQL文にてデータベース内のテーブル名を
調べることができると聞いたことがあるのですが、
可能でしょうか。

もし、可能であれば、SQLの記述を教えてください。
お願いします。

Aベストアンサー

select * from tab;

私の場合、テーブル名だけ手っ取り早く知りたいとき、↑を打ちます。その他の情報も知りたいときは#2さんの仰るとおり、user_tablesで取得します。

QAccessの画面更新を一時的に停止する方法。

こんにちは。
Accessの画面更新を一時的に停止する方法を捜しています。
ExcelのScreenUpdatingと同様な機能です。

VBAでの更新処理時に画面がチラチラと動くのを防止したいと思っています。
(Ver:Access2000)
ご存知の方宜しくお願い致します。

Aベストアンサー

Application.Echo False '画面の描画を止める

・・・処理を実行する・・・

Application.Echo True '画面の描画を行う

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

こんにちは。

Access初心者です。

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

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

Aベストアンサー

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

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

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


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

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

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

Me.CurrentRecord

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


人気Q&Aランキング

おすすめ情報