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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Windows 10 ショートカットの作り方と使い方について教えて下さい。 3 2022/05/27 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/12 16:58
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい 2 2023/01/16 16:19
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
フォルダのショートカットをVBAで作りたい
Access(アクセス)
-
エクセルでエラーが出て困っています。
Excel(エクセル)
-
フォルダのショートカット作成VBA
Access(アクセス)
-
-
4
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
5
VBA 実行時エラー 2147024893
Visual Basic(VBA)
-
6
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
7
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
8
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
9
vbaサブフォルダーをワイルドカードで取得したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スマホの画面上のショートカッ...
-
「おかっぱ」って言い方古くな...
-
“コピー”と“ショートカットの作...
-
デスクトップのショートカット...
-
ロングが似合う人の特徴はなん...
-
Siriの提案で、LINEの友達がで...
-
iPhoneでアクセシビリティのVoi...
-
韓国人の男性は、ショートカッ...
-
お気に入りHPのページをファ...
-
ショートカットのリンク先を一...
-
警察学校では女性は短髪(ショー...
-
消した覚えのない大事なデータ...
-
メールで何度も同じ文章を使い...
-
Officeのミニツールバーをキー...
-
デスクトップにショートカット
-
WPSスプレッドシートの起動オプ...
-
水原一平・・やはりか! おでこ...
-
顔が不細工な男
-
真似してくる後輩に限界です。...
-
前髪が両サイドから真ん中に集...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホの画面上のショートカッ...
-
“コピー”と“ショートカットの作...
-
Python でWindowsのショートカ...
-
Siriの提案で、LINEの友達がで...
-
ACCESSにて作成したデーターを...
-
デスクトップのショートカット...
-
WPSスプレッドシートの起動オプ...
-
MT4を2つ入れてデスクトップに...
-
Officeのミニツールバーをキー...
-
いつも髪を切ると美容師の方に...
-
メールで何度も同じ文章を使い...
-
「おかっぱ」って言い方古くな...
-
面長なんですがロングとボブど...
-
gmail の送信ショートカットに...
-
CapsLockの初期設定の仕方を教...
-
オートフィルオプションへのシ...
-
ロングが似合う人の特徴はなん...
-
黒染め(黒髪)ボブが似合うのっ...
-
ショートカットのリンク先を一...
-
iPhoneでアクセシビリティのVoi...
おすすめ情報