プロが教えるわが家の防犯対策術!

会社で会社オリジナルのプログラムと、そのプログラムの検索が遅いのでデータをエクセルにおとし、検索用として使用しています。そしてエクセルでデータごとにフォルダを作成し、データをそのフォルダに入れて管理しています。しかし会社のプログラムで作成したデータを保存する際、いちいちそのフォルダを探してから保存しており、データが増えていくに従いホルダを探すのに時間がかかっている為、エクセル側で指定ホルダのショートカットをデスクトップ作成すればホルダを探す時間が無くなると思い、いろいろと検索しましたが見つかりませんでした。そこでどなたか「指定ホルダのショートカットをデスクトップに作成」のコードをご教示ください。いまだにwindows2000とエクセル2003という環境です。

A 回答 (7件)

>問題なのは作成したファイルを使用する場合、保存フォルダからあいうえおで区分されたフォルダに行き、……追加ファイルを保存する際も、保存先を同様に探っていかなければならないことです。


>……作業後の保存の際、フォルダを探す手間が省けることから……


つまり、保存先のフォルダはあらかじめ作製済みだが、No.4 で回答したとおり保存の前にフォルダへのパスをコピーしておくにしても、数が多いからか、そのフォルダを探すだけでも大変、という意味でしょうか?

そうであれば、デスクトップにショートカットというのも良いとは思いますが、フォルダを開くためのハイパーリンク集を Excel シートで作製してみてはどうでしょうか。例えば添付図のような感じです。

フォルダを新たに作製するたびに、この表にも番号・顧客名を追加しておきます。以後、ハイパーリンクを 1 回クリックするだけで、そのフォルダが開きます。

「顧客の書類」というフォルダが D ドライブ直下にあり、その下に「斉藤123」フォルダを作ったとします。

A3 123
B3 斉藤
D3 =b3&a3
E3 =hyperlink("D:\顧客の書類\"&d3)


いやそうじゃなくて、やっぱりどうしてもショートカットを作りたいんだという場合は、次のような感じのコード。No.4 の参考 URL のコードを多少編集しただけのものです。フォルダをどんなふうに作って利用しているのか十分に分からないので、コード中のフォルダ名「CtmF」はとりあえず手書き(コピペ)するようにしてあります。


Option Explicit

Sub Sample1()
  Dim WSH, sc, DeskTopPath As String, scName As String, CtmF As String
  Set WSH = CreateObject("WScript.Shell")
  CtmF = "斉藤123"  'この行に新規作成したフォルダ名を上書きするか、他の何らかの方法で取得
  DeskTopPath = WSH.SpecialFolders("Desktop")
  scName = DeskTopPath & "\" & CtmF & ".lnk"
  Set sc = WSH.CreateShortcut(scName)
  sc.TargetPath = "D:\顧客の書類\" & CtmF  '「&」以前のパスを実際のものに書換え
  sc.Save
  Set sc = Nothing
  Set WSH = Nothing
End Sub
「指定ホルダのショートカットをデスクトップ」の回答画像6
    • good
    • 0
この回答へのお礼

お時間使っていただきどうもありがとうございました。作成しようとしていたのは、まさしく後者でした。
重ね重ね本当にありがとうございました。

お礼日時:2013/06/23 16:51

私も他の回答者さん同様に、


「ショートカットを作る目的・意義」が良くわからないので、
その他のやり方になってしまいます。


ひとまず、準備です。
下記のように「顧客名・顧客番号」を配置しておきます。

    A        B        C
1  顧客名    顧客番号    頭文字
2  斉藤      123       さ

「頭文字(C2)セル」には「=LEFT(PHONETIC(A2),1)」という式が入っています。
同時にA2セルには、書式→ふりがな→設定 から、種類を「ひらがな」を設定しています。
B2セルは念のため、表示形式を文字列に設定してあります。
入力すべきセルは、A2とB2です。


で、VBA。

Sub Sample()
Dim myPath As String
Dim myFile As Variant

    myPath = "C:\"    '親フォルダを指定
    myPath = myPath & Range("C2") & "\" & Range("A2") & Range("B2")
    ChDir myPath
    myFile = Application.GetOpenFilename( _
        FileFilter:="Excel ファイル (*.xls),*.xls")

    Workbooks.Open Filename:=myFile
End Sub

これでエクセル上で「開く」フォルダを設定できますが、こういう意味ではないのでしょうか?
一度開いておけば「名前をつけて保存」する際にもコレを保持します。


どうしてもショートカットに拘るとしても、
デスクトップで右クリック→新規作成→ショートカット
「項目の場所」に「C:\親フォルダ\さ\斉藤123\」と打つだけです。
わざわざエクセルを起動し、マクロを走らせ・・・と手間をかける必要は無いように思いますよ。
    • good
    • 0
この回答へのお礼

解決できました ありがとうございました

お礼日時:2013/06/23 17:05

>そしてエクセルでデータごとにフォルダを作成し、データをそのフォルダに入れて



それなら最初から最後まで、全部やらせりゃイイだけです。


sub macro1()
 dim myRoot as string
 dim myName as string
 dim s as string

 myroot = "c:\Test\" ’適切に指定する事
 myname = "斉藤123" ’具体的な取得手段は適宜作成する事
 s = strconv(left(application.getphonetic(myname), 1), vbhiragana)

 on error resume next
 mkdir myroot & s
 mkdir myroot & s & "\" & myname
 activeworkbook.saveas filename:=myroot & s & "\" & myname & "\" & myname & ".xls"
end sub




#あーでもExcel2003は大丈夫ですが、Win2kで動いたかはやってみてください。

この回答への補足

ご教示ありがとうございます。
ただ、フォルダ自体はすでにできており、そのフォルダのショートカットをデスクトップに作成したい、という状況です。

補足日時:2013/06/23 08:04
    • good
    • 0
この回答へのお礼

解決しました ありがとうございました 

お礼日時:2013/06/23 17:07

他の皆さんと同様に私も、ご質問の趣旨が今一つ分かりかねている状況ですが。



お困りなのは、「データを保存する際、いちいちそのフォルダを探してから保存」という作業が大変であり、それの何が大変かと言えば、保存のダイアログにおいて、ダブルクリックで保存先を探しながら次々に深い階層のフォルダまで潜っていくのが手間だから、ということでしょうか?

ということは、もしもパッと保存先にたどり着ける操作方法があるならば、必ずしもショートカットを作る必要はないということでしょうか?そうだとして説明します。


まず保存先のフォルダを開きます。この説明では、C ドライブの下層に作られている「YAMADA Taro」というフォルダだということにします。フォルダの最上部にあるアドレスバーには、そのフォルダへのパスが表示されています。ここを右クリックし、「アドレスをテキストとしてコピー」します。すると、「C:\Users\YAMADA Taro」といった感じの文字列がコピーされます。もし頻繁にこの文字列を使いたいなら、メモ帳などで保存しておくとかは、ご自由に。

目的のデータ保存は保存のダイアログから行いますが、その際に、上のフォルダは閉じてしまっていても差し支えありません。今コピーした文字列をダイアログの「ファイル名」欄に貼り付けます。Ctrl+V または右クリックからできます。続けて Enter を押すと、上のフォルダがダイアログ内で開きます。

保存したいファイル名が「検索用データ」だとします。Windows Vista 以降であれば、ダイアログ内でフォルダが開くものの、Enter を押すと同時に、入力した文字列が「ファイル名」欄から消えているので、同じ欄に単に「検索用データ」と記入して保存します(Enter)。Windows XP 以前では Enter 後も欄に文字列が残っているので、その文字列の最後尾に「\検索用データ」と追記して Enter します。質問者さんの場合は 2000 とのことですから、後者でしょうね。

上のとおり保存した後、「YAMADA Taro」フォルダを開いて確認してみると、.xls の拡張子で保存したのであれば、「検索用データ.xls」というファイルが入っているはずです。

何回もダブルクリックするのに比べれば、操作の負担感は減るかと思います。保存先は毎回少しずつ異なるということなら、パスの中で共通した部分の文字列をコピーしてダイアログ上で開いてもいいでしょう。


なお、こういう話ではなくて、何らかの理由でやはりショートカットを作りたいんだというのであれば、WSH.CreateShortcut メソッドというのを使えば、参考 URL みたいな感じでできます。作るショートカットの TargetPath プロパティに好きな文字列を設定することもできますから、「指定ホルダ」とかいう場所へのパスを書き込むこともできるでしょう。必要な場合は、ご質問を補足してください。

参考URL:http://officetanaka.net/other/extra/tips12.htm
「指定ホルダのショートカットをデスクトップ」の回答画像4

この回答への補足

説明不足で申し訳ありません。
会社オリジナルの顧客管理プログラムがあり、それがそれぞれの顧客の書類をワード、エクセルで出力しています。その書類を保存する際、保管フォルダ内にあらかじめ作られた「あ」フォルダ、「い」フォルダ、、、にそれぞれ顧客名の最初の文字で区分けし、顧客名&番号を名前とするフォルダを作成し、そのフォルダに入れて保存しています。斉藤123 なら「さ」フォルダ内に斉藤123フォルダを作り、この中に斉藤123のデータを保管しているということです。
しかし会社オリジナルプログラムはサーバーが遅く、検索条件も少ないことから検索に非常に時間がかかるため、そのデータをエクセルに落としてエクセルで検索し、顧客番号を得て、その顧客番号で会社オリジナルのプログラムを検索しています。
問題なのは作成したファイルを使用する場合、保存フォルダからあいうえおで区分されたフォルダに行き、そこで当該顧客名のフォルダを探さなければならず、またすでに顧客名&番号名のフォルダを作成した顧客について追加ファイルを保存する際も、保存先を同様に探っていかなければならないことです。そこで、エクセル側で、個別データフォルダのショートカットをデスクトップに作ることができれば、直ちに必要な顧客フォルダーを開くことができ、また会社オリジナルプログラムで作業する前に、毎回デスクトップに作業する顧客フォルダのショートカットを作成すれば、作業後の保存の際、フォルダを探す手間が省けることからこのコードが必要となりました。保存後は毎回作成したショートカットを削除する予定です。

補足日時:2013/06/23 00:47
    • good
    • 0

Excel2003でしたら。


名前を付けて保存ダイアログ上で指定のフォルダを選択、ダイアログのツールメニューから「マイプレースに追加」することで、ダイアログ左側の保存先一覧に指定のフォルダをどんどん追加していくことができます。
「指定ホルダのショートカットをデスクトップ」の回答画像3
    • good
    • 0

>「指定ホルダのショートカットをデスクトップに作成」のコードをご教示ください。



目的がいま一つ理解できないのですが、デスクトップにフォルダのショートカット作成のVBAコードなら以下のページが参考になると思います。
http://www.nurs.or.jp/~ppoy/access/access/acEt02 …

ただしfilePath の部分はfilePath = "C:\windows"のようにフォルダのパスを指定してください。
また、表示したいアイコンの場所や、名前も適宜変更してください。

この回答への補足

ありがとうございます。まさしくこの参考ページをさがしておりました。
セル(1,1)の値のフォルダが、aaaフォルダにあるとしそのフォルダのショートカットを
セル(1,1)の値名でデスクトップに作成するためアイコン作成を省き、手を加えていきフォルダ名
指定とするとオートメーションエラーとなってしまいました。
改めてご教示いただけないでしょうか

Sub setShortCut()
'デスクトップにファイルのショートカットを作成する
Dim myWSH As Object 'WScript
Dim link As Object
Dim DesktopPath As String
Dim filePath As String '対象ファイルのフルパス
Dim strIcon As String 'ショートカットファイル名
Dim fname As String 'フォルダ名
fname = Cells(1, 1) 'セル1,1の値のフォルダ名
filePath = "C:\Users\mic\Documents\aaa" & "\" & fname
strIcon = fname
Set myWSH = CreateObject("WScript.Shell")
DesktopPath = myWSH.SpecialFolders("Desktop")
Set link = myWSH.CreateShortcut(DesktopPath & "\" & strIcon)
Set myWSH = Nothing: Set link = Nothing
End Sub

補足日時:2013/06/22 23:22
    • good
    • 0

次のように操作してみて下さい。



1) 当該のフォルダの上で右クリックします。
2) 表示される右クリックメニューの「送る」をポイントして「デスクトップ(ショートカットを作成)」を選択します。
3) デスクトップにそのフォルダのショートカットが作成されます。

上記のようなことですか?

「デスクトップにショートカットアイコンを作成する方法を教えてください。」
https://www.fmworld.net/cs/azbyclub/qanavi/jsp/q …

この回答への補足

ご回答ありがとうございました。
お伺いしたいのは、300近く作成したフォルダの中から指定したフォルダのショートカットを
VBAで作成するということです。説明不足ですみません

補足日時:2013/06/22 22:31
    • good
    • 0
この回答へのお礼

解決できました ありがとうございました

お礼日時:2013/06/23 17:06

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