Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2010)
フォルダを選んで、名前を付けて保存
投稿日時: 19/08/31 14:14:35
投稿者: ふしぎちゃん

お世話になります。
 
指定のフォルダに名前を付けて保存するマクロを
ネットを調べながら作ってみたのですが
何度やっても、指定のフォルダに名前を付けたものが
保存されていません。
 
どこが違うのかを教えてください。
 
Sub Macro1()
 
 Dim fileName As Variant
 
       fileName = _
        Application.GetSaveAsFilename( _
            Title:="保存先を選択してください" _
         , InitialFileName:="次月チェック要_" & Format(Now, "yyyymmdd-hhmm") _
         , FileFilter:="Excelの97-2003形式,*.xls" & _
                         ",CSV形式,*.csv" & _
                         ",テキストファイル,*.txt" & _
                         ",すべてのファイル,*.*" _
         )
 
    If fileName <> False Then
        MsgBox fileName
    End If
End Sub

回答
投稿日時: 19/08/31 15:14:38
投稿者: WinArrow
投稿者のウェブサイトに移動

GetSaveAsFilenameメソッドは、保存するときのパス情報を取得するもので、
 保存するメソッドではありません。
  
GetSaveAsFilenameで取得したパスを指定して
SaveASメソッドを実行しなければ、保存することはできません。
  
少し気になるところ
  
FileFilter引数に一杯指定していますが、
 実際は、どの拡張子で保存したいのでしょう?
  
SaveAsメソッド実行時には、FileFormat引数も指定したほうがm無難です、
 
 
補足として、フォルダが決まっているのでしたら、
GetSaveFilenameメソッドより前に
ChDir を実行すると、指定のフォルダを開くことができます。
 

投稿日時: 19/08/31 15:23:29
投稿者: ふしぎちゃん

WinArrowさん
ありがとうございます。
 
ネットに記載されたものを理解せず、そのまま利用したので
動かないのですね。
 
保存したいのは、.xlsだけです。
 
保存するフォルダは決めておりません。
使用者が管理しているフォルダに任意に保存してもらおうと
考え、名前をつけて保存する方法を考えております。

回答
投稿日時: 19/08/31 19:25:09
投稿者: WinArrow
投稿者のウェブサイトに移動

ファイル保存のサンプルコードです。
 
Sub test()
Dim filename As String
 
' ChDrive "D"
' ChDir "D:\test"
    filename = Application.GetSaveAsFilename( _
                InitialFileName:="次月チェック要_" & Format(Now, "yyyymmdd-hhmm") & ".xls", _
                filefilter:="Excel 97-2003ブック,*.xls")
 
    If filename = "False" Then Exit Sub
    ActiveWorkbook.SaveAs filename:=filename, FileFormat:=xlExcel8
 
End Sub
 

投稿日時: 19/09/02 16:12:19
投稿者: ふしぎちゃん

WinArrow さん
 
返事が遅くなって申し訳ありません。
 
ありがとうございます。
おかげさまで、やりたいことができるようになりました。
 
本当に助かりました