
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> ActiveWorkbook.SaveAs Filename:=strBookPath
> に問題があるようでエラーが出てしまいます。
Excelのバージョンとエラーの内容を書いてもらえると助かります。
Excelの質問を投稿すると「回答者の第一声はいつもこれだな!」と鬱陶しくなるくらいよく訊かれるところですが、これがないと回答の幅が広がりすぎてしまいますので。
回答のコードをそのまま実行されているのでしょうか。
それでしたら strFolderA, strBookName , strFolderB , strFileName は質問者さんが想定されているフォルダ名・ファイル名に変えてください。
Excelのバージョンの記載が無くて初心者とおっしゃっているので最近のExcel (2007,2010) だろうと判断したのですが、その辺りはどうでしょうか。
バージョンによってExcelの見た目が変わるように、マクロも書き方の変わる箇所がでてきます。
バージョンによってファイル名の指定は変える必要があります。
ご存知かもしれませんが、一応書いておきます。
最近のExcelで「マクロなしのブック」だと".xlsx"で終わる名前にするところを古いExcelだと"xls"にしないとうまくいきません。
最近のExcelでも保存したいものが「マクロありのブック」だとxlsmでないとエラーが出ます。
(Excel 2007,2010 マクロ無しのブック) aaa.xlsx
(Excel 2007,2010 マクロ入りのブック) aaa.xlsm
(Excel 2002,2003) aaa.xls
もし仮に保存できたとしても内容と食い違っていると開くときに警告が出ることがあります。
strFolderA, strFolderB に指定したフォルダーが実際に見つからない場合も保存できないのでエラーになります。
質問に明記されていませんでしたが、ファイル名は毎回変えられるようにしたいということならGetSaveAsFilenameという関数を使うと保存ダイアログを出せるので便利です。
そのマクロを下に記載しておきますが、マクロ中に出てくる xlsx・xlsm はバージョン・ブック内容によっては書き換えが必要です(上述)。
-------------------------------------------------------
Sub SaveAndCreateShortcut()
'ブックを保存
strBookPath = Application.GetSaveAsFilename( _
fileFilter:="Excel ブック (*.xlsx), *.xlsx, Excel マクロ有効ブック (*.xlsm), *.xlsm", _
Title:="ブックの保存")
If strBookPath = False Then
MsgBox "保存取り消し"
Exit Sub
End If
ActiveWorkbook.SaveAs Filename:=strBookPath
ActiveWorkbook.Close
Set objShell = CreateObject("WScript.Shell")
'ショートカットの名前
strFileName = Application.GetSaveAsFilename( _
Title:="ショートカット名の指定")
If strFileName = False Then
MsgBox "ショートカット作成取り消し"
Exit Sub
End If
If Right(strFileName, 1) = "." Then
strFileName = strFileName & "lnk"
Else
strFileName = strFileName & ".lnk"
End If
'ショートカットのオブジェクトを作成
Set objShortCut = objShell.CreateShortcut(strFileName)
'ショートカットの指す先としてフォルダ(A)内のブックを指定
objShortCut.TargetPath = strBookPath
'ショートカットを保存(実際に作成)
objShortCut.Save
Set objShortCut = Nothing
Set objShell = Nothing
End Sub
-------------------------------------------------------
No.1
- 回答日時:
VBAでショートカットを作成する例が見つけにくいのですかね。
WshShellオブジェクトというのを使って、(2)と(3)はまとめてできます。
日本語で言うなら、「(A)内のブックのショートカットを(B)に作る」となります。
探せばVBAのコードそのものもあるのでしょうが、VBScriptのコードもかなり似ていて参考になります。
http://www.kanaya440.com/contents/tips/vbs/008.h …
http://www.atmarkit.co.jp/fwin2k/operation/wsh06 …
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh1 …
http://msdn.microsoft.com/ja-jp/library/cc364400 …
一つ目のURLのがシンプルで分かりやすそう(VBAではないんですが)。
最後のはMicrosoftの説明ですが、こんなにたくさんオプションを指定しなくても普通は事足りるでしょう。
これらを参考にExcel VBAで書いたら、例えば次のような感じ。
(実行直前に作業中のブックがアクティブな状態になってる場合)
------------------------------------------
Sub SaveAndCreateShortcut()
'フォルダ(A)にブックを保存
strFolderA = "C:\tmp\folder_A"
strBookName = "aaa.xlsx"
strBookPath = strFolderA & "\" & strBookName
ActiveWorkbook.SaveAs Filename:=strBookPath
ActiveWorkbook.Close
'WSHShell オブジェクトを作成
Set objShell = CreateObject("WScript.Shell")
'フォルダ(B)に作るショートカットの名前
strFolderB = "C:\tmp\folder_B"
strFileName = strFolderB + "\aaaのショートカット.lnk"
'ショートカットのオブジェクトを作成
Set objShortCut = objShell.CreateShortcut(strFileName)
'ショートカットの指す先としてフォルダ(A)内のブックを指定
objShortCut.TargetPath = strBookPath
'ショートカットの内容を保存
objShortCut.Save
Set objShortCut = Nothing
Set objShell = Nothing
End Sub
------------------------------------------
この回答への補足
試しに行ってみましたが、序盤部分
ActiveWorkbook.SaveAs Filename:=strBookPath
に問題があるようでエラーが出てしまいます。
作業中のブックはもちろんアクティブになっていますし。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スマホの画面上のショートカッ...
-
一回の洗髪で髪の毛抜けすぎで...
-
CapsLockの初期設定の仕方を教...
-
デスクトップのショートカット...
-
どこかをいじったみたいで 今日...
-
Siriの提案で、LINEの友達がで...
-
MT4を2つ入れてデスクトップに...
-
フォルダにショートカット作成
-
髪型を思いっきり失敗して学校...
-
女性のベリーショートって どう...
-
英検の証明写真って耳を出した...
-
1000円カットでセンター分けを...
-
前髪が両サイドから真ん中に集...
-
男です。美容院で前髪を切られ...
-
教育実習の髪型 肩くらいまで切...
-
センターパートを下から見たら...
-
JKのそっくす
-
大黒屋HD(6993)はなぜ倒産し...
-
お洒落をするといじめられる人...
-
会社でエクステ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホの画面上のショートカッ...
-
一回の洗髪で髪の毛抜けすぎで...
-
gmail の送信ショートカットに...
-
顔の形は卵型なのですが中顔面...
-
デスクトップのショートカット...
-
Siriの提案で、LINEの友達がで...
-
WPSスプレッドシートの起動オプ...
-
Python でWindowsのショートカ...
-
“コピー”と“ショートカットの作...
-
Officeのミニツールバーをキー...
-
MT4を2つ入れてデスクトップに...
-
ACCESSにて作成したデーターを...
-
ツーブロックとボブカットどっ...
-
ショートカットなぜM?
-
auの待ちうけ画面
-
【5時間格闘中】windows11でデ...
-
CapsLockの初期設定の仕方を教...
-
ショートのアレンジ! 至急++
-
面長なんですがロングとボブど...
-
どこかをいじったみたいで 今日...
おすすめ情報