人に聞けない痔の悩み、これでスッキリ >>

Windows XP
Office2003

エクセルVBAにて、ネットワーク上にある共有フォルダ内のエクセルブックを開くコーディングを教えていただけますでしょうか?

開きたいブック:\\共有サーバー\共有\TEST.xls

よろしくお願いします。

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

A 回答 (1件)

    • good
    • 4
この回答へのお礼

早々にありがとうございました。

開くだけでなく、画面表示を止めることもできるんですね。
まさに望んでいた動作です。

お礼日時:2008/03/17 18:27

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

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

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

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

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

QVBA ネットワーク上のファイルでカレントフォルダを取得するには?

VBA ネットワーク上のファイルでカレントフォルダを取得するには?

VBA超初心者でネットで色々調べて、ところどころコピーしながらプログラムを作っています。
ローカルのPCでは問題なく動くまでになったのですが、実際にはネットワーク上の共有サーバで実行したいのですが、ネットワーク上ではカレントパスがうまく設定できていないようで、動きません。

CreateObject("WScript.Shell").CurrentDirectory = ThisWorkbook.Path

というコードでVBAが置いてあるフォルダをカレントディレクトリに設定するようにしています。

どのようにしたらネットワークサーバで動くようになりますか?

Aベストアンサー

WebDAVの環境がないため、関連のありそうな情報をあたってみました。
もしかすると、OSの機能で制限されているかもしれません。

http://heipooh.jugem.jp/?eid=56

VBAではなく、直接手動操作で設定した時にはどうでしょうか?
できないとなると、何らかの環境設定が必要なのではないでしょうか?
上記URLの操作では、エクスプローラからネットワークドライブとして認識させています。

EXCELの機能については、下記URLの「カレントドライブとカレントフォルダ」をご参照ください。
http://officetanaka.net/excel/vba/tips/tips91.htm

現状のネットワーク構成ですと、カレントディレクトリの前に、カレントドライブを認識し得る環境がないと推察されます。

取得する方法について、他もあたってみて、情報が見つかりましたら投稿致します。

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

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

Aベストアンサー

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

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

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

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

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...続きを読む

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

Qフォルダを開くマクロ

エクセルシート上で2つの条件を選択して検索ボタンを押すとネットワーク上のサーバーの中のフォルダが開くVBAは作れないでしょうか?
条件の組合せの第1条件は20通りと第2条件は5通り位の組合せです。
例1:条件1はクラウン(車種)、条件2は写真で検索するとクラウンの写真フォルダが開く。
例2:条件1はクラウン(車種)、条件2は図面で検索するとクラウンの図面フォルダが開く。
すみませんが宜しくお願い致します。

Aベストアンサー

どこがわからないのでしょうか?

VBA で指定したフォルダを開くには幾つもの方法がありますが、
Shell 関数を使ってみてはどうでしょうか?
"\\Server-A\hoge\AAA" フォルダを開くには
Shell "explorer \\Server-A\hoge\AAA", vbNormalFocus
これを応用して
Dim folderPath As String
folderPath = "\\Server-A\hoge\AAA"
Shell "explorer " & folderPath, vbNormalFocus
とするとか。

検索部分は単純に、条件1をA列、条件2をB列、そのフォルダパスをC列に、全ての組み合わせで用意しておいて、検索時に上から順番に調べていってヒットした行の C列の値をとればいいじゃないでしょうか。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?


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

人気Q&Aランキング