-
-
Save baoo777/8945689d7572fed656b548f987c615df to your computer and use it in GitHub Desktop.
ファイル共有フォルダへの読み書きサンプル
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Option Explicit | |
Public Type NETRESOURCE | |
dwScope As Long | |
dwType As Long | |
dwDisplayType As Long | |
dwUsage As Long | |
lpLocalName As String | |
lpRemoteName As String | |
lpComment As String | |
lpProvider As String | |
End Type | |
'ネットワーク接続定数 | |
Public Const RESOURCETYPE_DISK = &H1 'ディスク | |
Public Const CONNECT_UPDATE_PROFILE = &H1 '次回ログオン時に再接続 | |
Public Const RESOURCE_CONNECTED = &H1 | |
Public Const RESOURCETYPE_ANY = &H0 | |
Public Const RESOURCEDISPLAYTYPE_SHARE = &H3 | |
'ネットワークエラー定数 | |
Public Const ERROR_SUCCESS = 0 '正常終了 | |
Public Const ERROR_BAD_NETPATH = 53 'ネットワークパスが不正 | |
Public Const ERROR_ACCESS_DENIED = 8 'ネットワーク資源へのアクセスが拒否されました。 | |
Public Const ERROR_ALREADY_ASSIGNED = 85 'lpLocalName で指定したローカルデバイスは既にネットワーク資源に接続されています。 | |
Public Const ERROR_BAD_DEV_TYPE = 66 'ローカルデバイスの種類とネットワーク資源の種類が一致しません。 | |
Public Const ERROR_BAD_DEVICE = 1200 'lpLocalName で指定した値が無効です。 | |
Public Const ERROR_BAD_NET_NAME = 67 'lpRemoteName で指定した値を、どのネットワーク資源のプロバイダも受け付けません。資源の名前が無効か、指定した資源が見つかりません。 | |
Public Const ERROR_BAD_PROFILE = 1206 'ユーザープロファイルの形式が正しくありません。 | |
Public Const ERROR_BAD_PROVIDER = 1204 'lpProvider で指定した値がどのプロバイダとも一致しません。 | |
Public Const ERROR_BUSY = 170 'ルーターまたはプロバイダがビジー( おそらく初期化中)です。この関数をもう一度呼び出してください。 | |
Public Const ERROR_CANCELLED = 1223 'ネットワーク資源のプロバイダのいずれかでユーザーがダイアログボックスを使って接続操作を取り消したか、接続先の資源が接続操作を取り消しました。 | |
Public Const ERROR_CANNOT_OPEN_PROFILE = 1205 '恒久的な接続を処理するためのユーザープロファイルを開くことができません。 | |
Public Const ERROR_DEVICE_ALREADY_REMEMBERED = 1202 'lpLocalName で指定したデバイスのエントリは既にユーザープロファイル内に存在します。 | |
Public Const ERROR_EXTENDED_ERROR = 1208 'ネットワーク固有のエラーが発生しました。エラーの説明を取得するには、WNetGetLastError 関数を使います。 | |
Public Const ERROR_INVALID_PASSWORD = 86 '指定したパスワードが無効です。 | |
Public Const ERROR_NO_NET_OR_BAD_PATH = 1203 'ネットワークコンポーネントが開始されていないか、指定した名前が利用できないために、操作を行えませんでした。 | |
Public Const ERROR_NO_NETWORK = 1222 'ネットワークに接続されていません。 | |
Public Const ERROR_DEVICE_IN_USE = 2404 '指定したデバイスがアクティブなプロセスによって使用中のため、切断できません。 | |
Public Const ERROR_NOT_CONNECTED = 2250 'lpName パラメータで指定した名前がリダイレクトされているデバイスを表していないか、lpName で指定したデバイスにシステムが接続していません。 | |
Public Const ERROR_OPEN_FILES = 2401 '開いているファイルがあり、fForce が FALSE です。 | |
'ネットワークドライブの接続 | |
Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" ( _ | |
ByRef lpNetResource As NETRESOURCE, _ | |
ByVal lpPassword As String, _ | |
ByVal lpUserName As String, _ | |
ByVal dwFlags As Long) As Long | |
'ネットワークドライブの切断 | |
Public Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" ( _ | |
ByVal lpName As String, _ | |
ByVal dwFlags As Long, _ | |
ByVal fForce As Long) As Long | |
'********************************************************************** | |
' ネットワークドライブ接続(API) | |
'********************************************************************** | |
Sub Sub_ConnectionAddAPI() | |
Dim nrsNet As NETRESOURCE | |
Dim strUser As String | |
Dim strPass As String | |
Dim lngRet As Integer | |
'ネットワークリソース設定 | |
With nrsNet | |
.dwType = RESOURCETYPE_DISK 'リソースタイプ | |
.lpLocalName = "X:" 'ローカル名(割り当てるドライブ) | |
.lpRemoteName = "\\hogehoge\Kyoyu" 'リモートパス(要はサーバ等の共用パス) | |
.dwScope = RESOURCE_CONNECTED | |
.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE | |
End With | |
strUser = "user" 'ユーザ名 | |
strPass = "pass" 'パスワード | |
'ネットワークドライブの接続 | |
'例1) | |
'次回ログオン時に再接続の場合 | |
'lngRet = WNetAddConnection2(nrsNet, strUser, strPass, CONNECT_UPDATE_PROFILE) | |
'例2) | |
'次回ログオン時に再接続しない場合 | |
lngRet = WNetAddConnection2(nrsNet, strPass, strUser, 0) | |
Debug.Print ("接続:" & lngRet) | |
'例3) | |
'ユーザ名、パスワードが不要な場合 | |
'lngRet = WNetAddConnection2(nrsNet, vbNullString, vbNullString, 0) | |
Select Case lngRet | |
Case ERROR_SUCCESS | |
Debug.Print ("接続処理:正常終了。:" & lngRet) | |
Case ERROR_BAD_NETPATH | |
Debug.Print ("接続処理:PCが見つかりません。:" & lngRet) | |
Case ERROR_BAD_NET_NAME | |
Debug.Print ("接続処理:パスが見つかりません。(共有になっていません):" & lngRet) | |
Case ERROR_ALREADY_ASSIGNED | |
Debug.Print ("接続処理:既に接続済みです。:" & lngRet) | |
Case Else | |
Debug.Print ("接続処理:サーバーに接続できません。:" & lngRet) | |
End Select | |
FileCopy "X:\hoge.txt", "C:\Users\baoo\Desktop\hogehoge.txt" | |
'ネットワークドライブ切断 | |
'例1) | |
'「恒久的な接続でなくなった」とします。(次回ログオン時に再接続しない) | |
lngRet = WNetCancelConnection2("X:", CONNECT_UPDATE_PROFILE, True) | |
'例2) | |
'プロファイルを更新しない(次回ログオン時の設定は元のまま) | |
'lngRet = WNetCancelConnection2("T:", 0, True) | |
'例3) | |
'開いているファイルやジョブが存在する場合、切断しない | |
'存在する場合、エラーとなります。(lngRet<>0) | |
'lngRet = WNetCancelConnection2("T:", 0, False) | |
Select Case lngRet | |
Case ERROR_SUCCESS | |
Debug.Print ("切断処理:正常終了。:" & lngRet) | |
Case ERROR_NOT_CONNECTED | |
Debug.Print ("切断処理:既に切断済みです。:" & lngRet) | |
Case Else | |
MsgBox (lngRet) | |
Debug.Print ("切断処理:その他:" & lngRet) | |
End Select | |
End Sub | |
'********************************************************************** | |
' ネットワークドライブ接続(WshNetwork) | |
'********************************************************************** | |
Sub Sub_ConnectionAddWsh() | |
Dim objWshNetwork As Object | |
Set objWshNetwork = CreateObject("WScript.Network") | |
objWshNetwork.MapNetworkDrive "X:", "\\hogehoge\Kyoyu", False, "user", "pass" | |
FileCopy "X:\hoge.txt", "C:\Users\baoo\Desktop\hogehoge.txt" | |
objWshNetwork.RemoveNetworkDrive "X:" | |
Set objWshNetwork = Nothing | |
End Sub |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment