EXCEL マクロでファイルサーバーを指定する

このQ&Aのポイント
  • 現在、Cドライブ内でファイルを選択していますが、共有のファイルサーバー上のフォルダー内のファイルを選択できるようにしたいと考えています。
  • ネットで検索しても自分に合った解決策が見つからず、質問させていただきました。
  • ファイルサーバーのパスはY:\fileserver\AN\IT\91_Users\700_Create\その他業務\Excelファイル類です。
回答を見る
  • ベストアンサー

EXCEL マクロでファイルサーバーを指定する

現在、Cドライブ内でファイルを選択していますが、共有のファイルサーバー上のフォルダー内のファイルを選択できるようにしたいと考えています。色々とネット等で検索してみましたが、自分に合ったものが見つからず質問させて頂いた次第です。 下記をどの様に直したら良いのでしょうか? 宜しくお願い致します。 因みに ファイルサーバーのパスは Y: ¥¥fileserver¥AN¥IT¥91_Users¥700_Create¥その他業務¥Excelファイル類 です。 MsgBox "挿入する「ファイル」を選択してください" Dim OpenFileName As Variant ChDir "C:" OpenFileName = Application.GetOpenFilename("挿入ファイル,*.*") If VarType(OpenFileName) = vbBoolean Then MsgBox "キャンセルされました" Else MsgBox OpenFileName & " が選択されました" End If

質問者が選んだベストアンサー

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.3

失礼しました。 No1のコードに誤りがありますので差し替えてください。 Sub sample() Dim strCdir As String Dim strFname As String With CreateObject("WScript.Shell")   'カレントディレクトリ控え   strCdir = CurDir   'カレントネットワークパスの設定   .currentdirectory = "\\fileserver\AN\IT\91_Users\700_Create\その他業務\Excelファイル類"   'ファイルを開くダイアログ表示   strFname = Application.GetOpenFilename("挿入ファイル,*.*")   If strFname <> "False" Then     MsgBox "選択したファイル名は" & strFname & "です。"   Else     MsgBox "キャンセルされました。"   End If   'カレントディレクトリ復元   .currentdirectory = strCdir End With End Sub

chi_ko6262
質問者

お礼

有難うございました。やっと希望したものになりました。今まで、私のわがままに付き合ってくれて有難うございました。感謝、感謝の気持ちでいっぱいです。

その他の回答 (2)

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

>お答え頂いたstrFpathが生きていないのか、 >パスを設定してもC:¥が表示されてしまいます。 どのようなパスを指定されていますか? >ファイルサーバーのパスは >Y: >¥¥fileserver¥AN¥IT¥91_Users¥700_Create¥その他業務¥Excelファイル類 >です。 C、Dなどドライブレターが割り振られていれば「C:¥」のように英字1字の後ろに「:¥」がつきます。ネットワークパスであれば、円マーク2つ「¥¥」から始まります。 ご提示のサーバーパスは、ネットワークパスの「¥¥fileserver~」が 「Y」ドライブとして設定してあるということでしょうか? strFpath = "\\サーバー名\フォルダパス\"      ↓ strFpath = "\\fileserver\AN\IT\91_Users\700_Create\その他業務\Excelファイル類\" のように指定してください。 ブラウザの特性上、半角の「¥」マークはバックスラッシュ「\」として表示されますが、 上記のままコピーして使用してください。

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

ファイルを開くディレクトリの初期フォルダパスをサーバーのネットワークパスとして設定したいということでしょうか? 通常ChDirではドライブレターの振られていないドライブは扱うことができません。 WSHを用いてネットワークパスをカレントディレクトリとして設定するサンプルを以下に掲示します。 また、ファイル指定前後にカレントディレクトリの控え及び復元処理も入れています。 Sub sample() Dim strCdir As String Dim strFname As String Dim strFpath As String With CreateObject("WScript.Shell")   'カレントディレクトリ控え   strCdir = CurDir   'カレントネットワークパスの設定   strFpath = "\\サーバー名\フォルダパス\"   'ファイルを開くダイアログ表示   ChDir strFpath   strFname = Application.GetOpenFilename("挿入ファイル,*.*")   If strFname <> "False" Then     MsgBox "選択したファイル名は" & strFname & "です。"   Else     MsgBox "キャンセルされました。"   End If   'カレントディレクトリ復元   ChDir strCdir End With End Sub

chi_ko6262
質問者

補足

御助力有難うございます。ただ、お答え頂いたstrFpathが生きていないのか、パスを設定してもC:¥が表示されてしまいます。 もし良しければ、再度確認をして頂ければ幸いです。 質問続きで申し訳ございませんが、何卒、宜しくお願い致します。

関連するQ&A

  • GetOpenFilenamのパス指定

    Access2000VBAを使用するのが前提です。 「ダイアログを表示してファイルを選択しフォームに表示する」ファンクションがあります。(下記参考モジュール参照ください:excel 9.0 object Libraryを使用してます) ダイアログを表示した際、指定のフォルダの内容を表示したいのですが、「(1)ChDir」も「(2)SetCurrentDirectory」を使用しても規定フォルダが表示され指定フォルダに移行しません。 何か手段はありますか?ダイアログ自体は問題なく機能してます。 Public Function ふぁいる選択() Dim myFile As Variant, P Dim exlDlg As New Excel.Application P = CurrentProject.Path & "\" ChDrive "C" ChDir P '>>>>>>>(1) Call SetCurrentDirectory(P)   '>>>>>>>>(2) myFile = exlDlg.GetOpenFilename("CSVファイル(*.csv),*契約*.csv") If (VarType(myFile) = vbBoolean) Or (myFile = "False") Then ふぁいる選択 = "" Else ふぁいる選択 = myFile End If End Function

  • 【マクロ】指定したファイルを開いてマクロを実行

    マクロ初心者です。よろしくお願いします。 <質問> コマンドボタンをクリックしたら、任意のエクセルファイルを指定して開き、その開いたファイル(白紙状態のファイル)にマクロを実行させる方法を探してます。 <作成マクロ> Private Sub CommandButton1_Click() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If Workbooks(Dir(OpenFileName)).Activate ActiveCell.FormulaR1C1 = "テスト" Range("A1").Select Selection.Copy Range("B1").Select ActiveSheet.Paste End Sub <マクロ説明> --コマンドボタンをクリックして指定したエクセルファイルを開く-- Private Sub CommandButton1_Click() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If Workbooks(Dir(OpenFileName)).Activate --開いたエクセルファイル(白紙状態)のセルA1に「テスト」を入力した後、コピーしセルB2に貼り付ける--   ActiveCell.FormulaR1C1 = "テスト" Range("A1").Select Selection.Copy Range("B1").Select ActiveSheet.Paste End Sub コマンドボタンをクリック ↓ 任意のエクセルファイルを指定して開く ↓ 開いたファイル(白紙状態のファイル)のセルA1に「テスト」と書き込み セルA1の「テスト」をコピーしセルB1に貼り付ける このマクロを実行させるにはどこを改善すれば良いでしょうか? ご助言いただけると助かります。 よろしくお願い致します。

  • 【マクロ】指定したファイルを開いてマクロを実行

    マクロ初心者です。よろしくお願いします。 <質問> コマンドボタンをクリックしたら、任意のエクセルファイルを指定して開き、その開いたファイル(白紙状態のファイル)にマクロを実行させる方法を探してます。 <作成マクロ> Private Sub CommandButton1_Click() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If Workbooks(Dir(OpenFileName)).Activate ActiveCell.FormulaR1C1 = "テスト" Range("A1").Select Selection.Copy Range("B1").Select ActiveSheet.Paste End Sub <マクロ説明> --コマンドボタンをクリックして指定したエクセルファイルを開く-- Private Sub CommandButton1_Click() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If Workbooks(Dir(OpenFileName)).Activate --開いたエクセルファイル(白紙状態)のセルA1に「テスト」を入力した後、コピーしセルB2に貼り付ける--   ActiveCell.FormulaR1C1 = "テスト" Range("A1").Select Selection.Copy Range("B1").Select ActiveSheet.Paste End Sub コマンドボタンをクリック ↓ 任意のエクセルファイルを指定して開く ↓ 開いたファイル(白紙状態のファイル)のセルA1に「テスト」と書き込み セルA1の「テスト」をコピーしセルB1に貼り付ける このマクロを実行させるにはどこを改善すれば良いでしょうか? ご助言いただけると助かります。 よろしくお願い致します。

  • エクセルのマクロでファイルを開く

    エクセルの「ファイルを開く」ダイアログボックスを使用してファイルを開き、その開いたファイルに対してとあるマクロを実行させたいと思っています。 エクセルの「ファイルを開く」ダイアログボックスでパス取得までは理解出来たのですが、その先の処理が分かりません。 「ファイルを開く」と言うのは、「現在アクティブになっているシートにデータを貼り付けて」の処理でも構いません。 Dim Ret As Variant Ret = Application.GetOpenFilename("Excel ブック (*.xls), *.xls, テキストファイル(*.txt),*.txt") If Ret = False Then MsgBox "キャンセルが選択されました。" Exit Sub Else       'ここにRetで取得しているパスのファイルを開いて、sub_WAITのマクロを実行させたいです。 sub_WAIT.Show End If End Sub

  • (VBA)フォルダー内のファイルを自動で読み込む

    以下でターゲットフォルダーを指定して その中に存在する、テキストファイル(.txt)とMP3ファイル(.mp3)を 各1個ずつをそれぞれ読み込むようにしています。 'フォルダーを一覧から選択 (自由に選べること) MsgBox "ターゲットフォルダーを選択してください。", vbOKOnly + vbQuestion, "Making" With Application.FileDialog(msoFileDialogFolderPicker) With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合 TurgetFolder = .SelectedItems(1) Else TurgetFolder = .SelectedItems(1) & "\" End If End If End With 'TEXTファイル選択(ダイアログ) MsgBox "ターゲットになる" & vbCrLf & "テキストファイルを選択してください。", vbOKOnly + vbQuestion, "LIST" ChDir TurgetFolder TurgetTEXT = Application.GetOpenFilename("TEXTファイル(*.txt),*.txt") If VarType(TurgetTEXT) = vbBoolean Then MsgBox "選択がキャンセルされました" Else 'MsgBox TurgetFile & " が選択されました" End If 'Mp3サイズ読み込み() MsgBox "ターゲットMP3を選択してください。", vbOKOnly + vbQuestion, "MP3" TargetMP3 = Application.GetOpenFilename("MP3ファイル,*.mp3") 'MsgBox TargetMP3 Set fso = CreateObject("Scripting.FileSystemObject") Set SHell = CreateObject("Shell.Application") Set Folder = SHell.Namespace(fso.GetFile(TargetMP3).ParentFolder.Path) Target = fso.GetFile(TargetMP3).Name ----------------------------------------------- 今回、間違いが無くなるように フォルダー構造をターゲットフォルダーの中に テキスト及びMP3ファイルが一つずつしかない無い構造にしたので それぞれ別々に指定する必要なく ターゲットフォルダーを指定するとその中に存在する テキスト及びMP3ファイルを自動で指定(読み込む)ように改造したいのですが どのように改造すれば良いでしょうか ?

  • 特定ファイルだけの取り込み許可

    現在以下の方法でエクセルにCSVの取り込みを行っています。 =============================================================== Dim FileNames As Variant Dim fn As Variant FileNames = Application.GetOpenFilename("20080604,*.csv", MultiSelect:=True) If VarType(FileNames) = vbBoolean Then Exit Sub For Each fn In FileNames With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & fn, Destination:=Worksheets("集計").Range("A1")) ~ ============================================================== 「20080604.csv」以外のファイルは取り込ませたくありません。 良い方法はありませんか? ファイルのディレクトリは不特定です。 よろしくお願いいたします。

  • VBAで、すべてのファイル(ppt,pdf,txt

    VBAで、すべてのファイル(ppt,pdf,txtなど)を選択して開きたい VBA初心者です。ダイアログから選択して様々な形式のファイルを 開きたいのですが、 検索して↓などをみていますが、イマイチわかりません。。。 http://okwave.jp/qa/q1545851.html http://okwave.jp/qa/q7827757.html http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1414898789 【環境 WindowsXP Excel2000】 ↓これだとPDFを選択はできますが、エクセルに文字化けしてでてきます。 Sub フォルダからファイル選択() Dim OpenFileName As String Dim AAA, ZZZ As String AAA = Sheets("data").Range("A5") ZZZ = "'ChDir "\■.local\pubs\●\△\" & AAA With CreateObject("WScript.Shell") .CurrentDirectory = ZZZ End With OpenFileName = Application.GetOpenFilename("すべてのファイル,*.*") If OpenFileName <> "False" Then Workbooks.Open OpenFileName Else MsgBox "キャンセルされました" End If End Sub 不足情報ありましたら補足致しますので、お教え下さい><;

  • エクセルファイルを一括で取得して順番にマクロを実行したい

    いろいろ考えたのですがわからないために質問させていただきます ご指導宜しくお願いします。 Aというフォルダにある book1 book2 book3 というエクセルファイルを一括に選択して自らに取り込んだ後 処理をして別フォルダに保存するという流れをしたいのですが わかりません。 処理自体は不要列の削除と簡単なのですがファイルの数が多いため 一括でしたいのです。ご指導宜しくお願いします。 Sub test() Dim OpenFileName As Variant Dim wb As Workbook ChDir CreateObject("WScript.Shell").SpecialFolders("desktop") 'ファイルを開く OpenFileName = Application.GetOpenFilename("ExcelBook,*.xls,AccessDB,*.mdb") 'キャンセル If OpenFileName = False Then '終了 Exit Sub End If 'このブックのSheet1をクリア ThisWorkbook.Sheets("Sheet1").Cells.Clear 'ワークブックを開く Set wb = Workbooks.Open(OpenFileName) '選択されたブックの最初に表示するシートをコピー wb.ActiveSheet.Cells.Copy Destination:=ThisWorkbook.Sheets("Sheet1").Cells(1, 1) '閉じる wb.Close False '画面固定 Application.ScreenUpdating = False '不要列選択 Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O").Select '選択列を削除 Selection.Delete Shift:=xlToLeft Range("a1").Select Dim ws As Worksheet '元々開いていたシートを退避 Set ws = ActiveSheet '全てのワークシートを新しいブックにコピー Worksheets.Copy '名前を自分で入れる場合 Application.Dialogs(xlDialogSaveAs).Show ActiveWorkbook.Close False '新しいブックを閉じる ws.Activate '元々開いていたシートを表示 現状はこのような感じで一つ一つ処理しています。

  • ダイアログボックスで複数フォルダの複数ファイルの選択

    ダイアログボックスで複数フォルダの複数ファイルの選択がうまくいきません。 単一フォルダ内からの複数ファイルの選択は機能しているのですが、ダイアログボックスで他のフォルダを選択して他のファイルを選択すると最終的に選択したファイルのみが残り、先に選択した分が累積されません。  OpenFileNameが上書きされるのが原因な気がするのですが配列への累積処理が解りません。 その後の処理で選択したファイルを全て開いて加工したいので、累積させる方法を知りたいのです。下記コードはLoop処理で行おうとして累積が解らないままのものです。 一度のダイアログ表示で複数フォルダの複数ファイルを選択出来る方法があればそれでもかまいません。どなたか助けては頂けないでしょうか。お願いします。 '**明細の選択(複数同時)** Do BN = Application.InputBox("対象明細書の年月を入力してください。1桁の月は02月のように入力)", , Default:="2009.04", Type:=2) If BN = False Then '入力なければ GoTo OWARI End If WorkPath = ThisWorkbook.Path & "\明細書一覧" & BN & "月" ChDrive WorkPath ChDir WorkPath OpenFileName = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls", _ Title:="対象の明細書を選んで下さい。Ctrlキーを押しながら複数ファイルを同時に選択出来ます。", MultiSelect:=True) Rtn = MsgBox("他にも対象ファイルがありますか?", vbYesNo, "選択") If Rtn = vbNo Then Exit Do End If Loop Mypath = ThisWorkbook.Path MyFile = "\請求制御.xls" 'ここにファイル名記入 If IsArray(OpenFileName) Then For i = 1 To UBound(OpenFileName) If OpenFileName(i) = Mypath & MyFile Then MsgBox "同じファイルが含まれてます。", vbInformation, "同じファイルは選択出来ません" GoTo OWARI End If tmp = tmp & Dir(OpenFileName(i)) & vbCrLf Next MsgBox vbCrLf & tmp & vbCrLf & "の全" & i - 1 & "枚です" & vbCrLf & "これらでよろしいですか? ", vbInformation, "選択したファイルは "

  • ダイアログボックスのpathの指定で下位フォルダを指定したい

    Excel2003 でマクロ作成中の超初心者です。以下のコードで21年度のフォルダが開けます。が、21年度\個人別 という下位のフォルダを指定したいのです。pathを\C・・・から指定すればできそうですが、このマクロを他のPCで実行した場合pathがみつかりませんの エラーが出ると思います。どう指定したらよろしいでしょうか。 Private Sub CommandButton7_Click() Dim OpenFileName As String On Error Resume Next ChDir "21年度" OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If End Sub

専門家に質問してみよう