• ベストアンサー

エクセルでカレントドライブの値を知る方法を教えてください

Excel(2003)で開いているファイルのカレントドライブの値を知る方法を教えてください。 現在、下記のようなマクロを実行しています。 ActiveSheet.Range("c2") = "=SUMPRODUCT(('F:\出欠関係\" & today & "\[1nen.xls]11'!l4:l45=1)*1)" ActiveSheet.Range("d2") = "=SUMPRODUCT(('F:\出欠関係\" & today & "\[1nen.xls]12'!l4:l45=1)*1)"    ・    ・    ・    ・    ・ 利用し始めた当初はよかったのですが、複数のコンピュータから利用することになり共有フォルダに割り当てされているドライブ名が異なっており、マクロの中の「F:\出欠関係」が上手く利用できません。 利用する端末の数が多いためドライブ名を変えるのではなく、マクロで乗り切りたいと思っております。フォルダの名称や位置は固定です。 是非アドバイスをお願いいたします。

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

  • ベストアンサー
  • Hardking
  • ベストアンサー率45% (73/160)
回答No.2

当エクセルファイルのオープン時に下記処理する。 ↓ 全接続ドライブ中から 「出欠関係」というフォルダーを検索しする。 (発見したできたら該当ドライブ名をグローバル変数に格納して  セル式にグローバル変数を戻り値とするFunctionを記述) Dim FSO, Drv, buf As String Set FSO = CreateObject("Scripting.FileSystemObject") For Each Drv In FSO.Drives DirectoryExist = Dir(Drv.DriveLetter & ":\出欠関係", vbDirectory) Next Drv

demiguru
質問者

補足

Sub auto_open() Dim FSO, Drv, buf As String Set FSO = CreateObject("Scripting.FileSystemObject") For Each Drv In FSO.Drives DirectoryExist = Dir(Drv.DriveLetter & ":\出欠関係", vbDirectory) Next Drv Dim wStr As String today = Format(Now(), "m月d日") ActiveSheet.Range("c2") = "=SUMPRODUCT(('fso\" & today & "\[1nen.xls]11'!l4:l45=1)*1)" 上記のように記述したのですが、上手く行きませんでした。 記述が間違っていないか、見ていただけませんか。 よろしくお願いいたします。

その他の回答 (2)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

状況が良く分かりませんが F:・・・ の所をUNC名にしておけば出来るかも? 例 \\コンピュータ名\出欠関係\

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

マクロなら ThisWorkbook.Path で求められませんか?

demiguru
質問者

補足

うまくいきません。 関係ファイルはすべて「出欠関係」フォルダにおいてあり、F:にあります。 しかし表示されるには、C:\Documents and Settings\vaio\My Documents\と表示されます curdir関数などもやって見ましたが、結果は同じでした。

関連するQ&A

  • エクセルでファイルが保存されているドライブの値を表示したい

    エクセルのマクロを利用して、ファイルが保存されているドライブの値を取りたいのですがうまくいきません。 皆さんのお知恵をお貸しください。 下記のようなマクロを利用して、ネットワーク上の共有ファイルに置いてあるエクセルを自動更新させたいと考えています。 各クライアントには、ネットワークドライブとして共有ファイルが設定されており、クライアントごとに割り振られているドライブ名が異なっています。 試行錯誤で単体では、うまくいくようになりました。 Sub auto_open() Dim wStr As String today = Format(Now(), "m月d日") atai1 = ActiveWorkbook.FullName atai2 = Left(atai1, 1) ActiveSheet.Range("c2") = "=SUMPRODUCT(('atai2 & \出欠関係\" & today & "\[1nen.xls]11'!l4:l45=1)*1)" 単体では下記の記述でした。 ActiveSheet.Range("c7") = "=SUMPRODUCT(('F:\出欠関係\" & today & "\[1nen.xls]11'!l4:l45=6)*1)"

  • エクセルのVBAで簡潔に表示させたいのですが、知恵を貸してください。

    エクセルのVBAで簡潔に表示させたいのですが、知恵を貸してください。 エクセルのVBAで現在、下記のような指示をしています。 メンテナンスが困難なため、簡潔に記載する方法または関数を教えていただけないでしょうか。 activesheet.range("c2")= "=sumproduct(('[nen.xls]1'!c4)*1)" activesheet.range("d2")= "=sumproduct(('[nen.xls]1'!d4)*1)" activesheet.range("e2")= "=sumproduct(('[nen.xls]1'!e4)*1)" activesheet.range("f2")= "=sumproduct(('[nen.xls]1'!f4)*1)" activesheet.range("g2")= "=sumproduct(('[nen.xls]1'!g4)*1)" activesheet.range("c3")= "=sumproduct(('[nen.xls]1'!c5)*1)" activesheet.range("d3")= "=sumproduct(('[nen.xls]1'!d5)*1)" activesheet.range("e3")= "=sumproduct(('[nen.xls]1'!e5)*1)" activesheet.range("f3")= "=sumproduct(('[nen.xls]1'!f5)*1)" activesheet.range("g3")= "=sumproduct(('[nen.xls]1'!g5)*1)" activesheet.range("c4")= "=sumproduct(('[nen.xls]1'!c6)*1)" activesheet.range("d4")= "=sumproduct(('[nen.xls]1'!d6)*1)" activesheet.range("e4")= "=sumproduct(('[nen.xls]1'!e6)*1)" activesheet.range("f4")= "=sumproduct(('[nen.xls]1'!f6)*1)" activesheet.range("g4")= "=sumproduct(('[nen.xls]1'!g6)*1)" ・ ・ このパターンを全部で50回ほど繰り返します。 ・ ・  この繰り返し作業を簡単な記述に変更したいのですが、できません。  お知恵をお貸しください。よろしくお願いいたします。

  • エクセルでマクロを実行するかしないか選択するように設定したい

    エクセルで、ワークブックが開くのにあわせてマクロが実行されるようにしています。この動作を実行するかしないかを選択するようにしたいのですが方法がわかりません。 申し訳ないのですが、皆さんのお知恵をお貸しください。 実行しているマクロは、下記のようなマクロです。 Sub auto_open() Dim wStr As String today = Format(Now(), "m月d日") dve = ThisWorkbook.Path ActiveSheet.Range("c2") = "=SUMPRODUCT(('P:\" & today & "\[1nen.xls]11'!l4:l45=1)*1)" ・ ・ ・ ・ Dim td, x td = Day(Date) x = (td - 1) * 11 + 14 MsgBox "今日は" & td & "日ですので、C" & x & "から貼り付けます。" With ActiveSheet .Range("C2:AD12").Copy .Range("C" & x).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone End With End Sub

  • エクセルで、他のエクセルのワークシートからデータを取り込む方法について

    エクセルで、他のエクセルのワークシートからデータを取り込む方法について 現在、下記のようなコードを考えているのですが、他のファイルからの取り込みがうまくいきません。 nen,xlsというエクセルのシート名11のc4:g45までを取り込みたいのですが、コピーされた値が「'\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45」となってしまいます。 アドバイスをいただければと思います。 Dim wStr As String today = Format(Now(), "m月d日") dve = ThisWorkbook.Path ActiveSheet.Range("c261:g310").Formula = "='\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45" Dim td, x td = Day(Date) x = (td - 1) * 5 + 8 MsgBox "今日は" & td & "日です。" With ActiveSheet .Range("c261:g510").Copy .Cells(3, x).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone End With Excel.Application.CutCopyMode = False 以上です。

  • Excelの関数に日付を指定する方法を教えてください。

    他のExcelのファイルからデータをリンクしています。 その元のExcelファイルは、日付ごとに作成したフォルダにいれて毎日作成しています。 年間で自動的に集計したいと考え、下記のような関数から必要なデータを取り出しています。 =SUMPRODUCT(('F:\出欠関係\4月24日\[1nen.xls]11'!K4:K45=1)*1) 教えていただきたいのは、「4月24日」の箇所を自動的にコンピュータの日付にしたいのですが上手い方法が思いつきません。 アドバイスをお願いいたします。

  • エクセルで繰り返し同じ作業をしたい

    仕事でDドライブの中のフォルダにエクセルのシートが100種類位入っています。それらのエクセルシートに毎日同じ作業をしなければならないのですが、(エクセルを開いて行う作業は各シート共通です)そのマクロの作り方を教えていただけないでしょうか?ちなみに Workbooks.Open Filename:="D:\業務\あ.xls" Range("D9").Select Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close Workbooks.Open Filename:="D:\業務\い.xls" Range("D9").Select Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close Workbooks.Open Filename:="D:\業務\う.xls" Range("D9").Select Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close      その後もまだまだ続きます。 というマクロの記録を使って作ってはいるものの、やたらと長くなってしまいます。VBAの知識がない初心者なのですが、いい方法があれば教えていただけないでしょうか?

  • VBA エクセル 開いている別ファイルをアクティブにするには?

    すみません、よろしくお願いいたします。 <前提> A.xls=コピー元ファイル(マクロを組んでいるのはこちら) 2009・・・.xls ファイル=コピー先ファイル(2009以降はファイル名が変化しますが、必ず頭に2009があります) 同一フォルダ内に上記のファイルがあります。 どちらも開いて、Aファイルのマクロを実行すると、Aのデータをコピーして、2009・・・のファイルに貼りつける。としたいのですが、 (1)ファイル名が変化するので貼り付け先のファイル名をどう指定したらよいかわからない。 (2)フォルダごと、色々な人へ配る予定なので、できればアクティブなファイルという指定をしたい。(他のファイルは開いてないという前提でOKです。) (3)フォルダ内には2009がつく別ファイルもあるので、(2)同様アクティブなファイルという指定をしたいです。 わかるかた、おねがいいたします。 BVA初心者です。 普通のマクロで記録したら、以下のようになりました。 (例) Sub Macro1() ' ' Macro1 Macro ' ' Range("A1").Select Selection.Copy Windows("20091002_2650.xls").Activate '←この20091002_2650.xlsが変化します。 Range("A10:B10").Select ActiveSheet.Paste End Sub

  • Excelマクロ パスの指定方法

    Excelのマクロで別のファイルを編集するのにパスを指定しています。 現状は使用しているドライブ、フォルダが固定されているので下記の様に ドライブ名から指定しています。 <現状>  ・C:\AAA\BBB\PPP.xls   →マクロの入っているファイルを指定  ・C:\AAA\BBB\CCC\SSS.xls  →編集したいファイルを指定 今後、別のドライブやフォルダで使用出来る様にしたいのですがどうすれば よろしいでしょうか?  ・~\BBB\PPP.xls、~\BBB\CCC\SSS.xlsの位置関係は固定  ・~\BBB\CCCの下にあるSSS.xlsを開いて編集したい。  ・~\BBB\PPP.xlsがC\、D\等どのドライブ、フォルダになっても使用可能にしたい。 以上よろしくお願い致します。

  • エクセル2002を使用しています。

    エクセル2002を使用しています。 vbaでシート削除についてお尋ねします。 以下の方法で挿入し、削除したいのですが、シート名を取得できないため、削除できません。 ご指導をお願いいたします。 Sub test1() nen = 2006 Worksheets.Add ActiveSheet.Name = nen - 1 Sheets("a1").Select Range("A1") = nen - 1 Sheets("a1").Select t = Range("A1") Worksheets("t").Delete End Sub

  • EXCEL VBAで、PasteSpecialと Destinationの組み合わせ方法?

    ここで教えていただいたマクロで ActiveSheet.Paste Destination:=Workbooks(\"book1.xls\").Worksheets(\"Sheet1\").Range(\"A1\") のペースト部分を書式を除きたいので PasteSpecial Paste:=xlFormulas でやりたいのですが、どう組み合わせたらいいのかわかりませんでした。 おしえていただけませんでしょうか?

専門家に質問してみよう