アプリ版:「スタンプのみでお礼する」機能のリリースについて

すいません。マクロ初心者です。

(1)以下のプロシージャで保存するときに、フォルダを指定したいのですがどこにフォルダ名を入れたらいいかわかりません。

(2)XPのエクセル2003で作成したのですが、vistaのエクセル2007で使用すると保存時に拡張子.xlsが付かずエクセルファイルになりません。

ご教授ください。

Sub シート保存2()
Dim Answer3
Dim 既定ファイル名 As String
Dim 保存ファイル名 As Variant

Answer3 = MsgBox("本当に保存しますか?", vbYesNo)
If Answer3 = vbNo Then
MsgBox ("キャンセルしました。")
Exit Sub
End If

Sheets("保存シート").Select
Application.CutCopyMode = False
Sheets("保存シート").Copy

既定ファイル名 = Range("V7") & ".xls"
保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名)
If 保存ファイル名 = False Then
MsgBox "保存は中止されました。"
ActiveWorkbook.Close (False)
Else
ActiveWorkbook.SaveCopyAs 保存ファイル名
ActiveWorkbook.Close (False)
End If
End Sub
よろしくお願いします。

A 回答 (2件)

(2)について


さっきVista PCを起動して確かめましたが・・・

GetSaveAsFilenameにファイルタイプのフィルターをかければ問題ないと思います。
Application.GetSaveAsFilename(既定ファイル名, "Excel 97-2003ブック, *.xls")
    • good
    • 0
この回答へのお礼

ありがとうございます。
会社に着いたら早速やってみます。

お礼日時:2008/07/09 07:19

とりあえず(1)について回答します。



GetSaveAsFilenameメソッドでフォルダの位置を指定するには
カレントディレクトリの変更
という作業が必要になります

chdrive ディレクトリパス 'ドライブのチェンジ
chdir ディレクトリパス 'ディレクトリのチェンジ

をGetSaveAsFilename以前に記述してください。
ただし・・・chdriveステートメントはネットワークドライブ(\\~)を指定された場合、ドライブの移動ができません。

このマクロを使用する上でそのようなシチュエーションが考えられる場合、win32 APIのSetCurrentDirectory関数を利用することになります。

以上です。
    • good
    • 0
この回答へのお礼

ありがとうございました。
ちょっと難しそうですね。
もう少し勉強してみます。

お礼日時:2008/07/09 07:24

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

このQ&Aを見た人はこんなQ&Aも見ています