[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/02/22(Thu) 11:58
投稿者名:こんにちは
Eメール:
URL :
タイトル:
ファイルの上書き保存
VB6.0にてエクセルファイルを作成し、保存際
すでに同じ名前のファイルが存在するとき
上書き保存する方法を教えてください。

投稿時間:2007/02/22(Thu) 14:33
投稿者名:Blue
Eメール:
URL :
タイトル:
Re: ファイルの上書き保存
WorkbookオブジェクトのSaveAsメソッドで保存します。
その際上書きになる場合、メッセージボックスが出るので無条件に
保存させるのであれば、ApplicationオブジェクトのDisplayAlertsを
FalseにしてからSaveAsメソッドを使えばいいでしょう。

つまり

xlApp.DisplayAlerts = False
xlWorkbook.SaveAs "ほげ"
xlApp.displayAlerts = True

とする。

投稿時間:2007/02/22(Thu) 17:54
投稿者名:こんにちは
Eメール:
URL :
タイトル:
内容が変わりますがもうひとつあります
Blueさんありがとうございます。

もう1点質問があります。
逆引きヘルプ一覧集の中の
VBからエクセルを操作する(その1)
を参考にプログラムを作成しています。

私自身で下記を追加しました。

'ファイルを読み込み済みフォルダへ保存
   'フォルダが存在しているかどうか確認する
    If hFso.FolderExists(c:\) = True Then
        ' ファイルが存在しているかどうか確認する
        If hFso.FileExists(gudtFilePath.Don & "\aa" & strForm & strTo & ".xls") = True Then
            strMsg = MsgBox("同じ名称のファイルが存在します。上書きしますか?", vbYesNo)
                If strMsg = vbYes Then
                    ActiveWorkbook.Save
                    strMsg = MsgBox("正常終了しました", vbOKOnly)
                Else
                    activexlSheet.Close
                End If
        Else
            xlSheet.SaveAs FileName:=gudtFilePath.Don & "\aa" & strForm & strTo & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
            strMsg = MsgBox("正常終了しました", vbOKOnly)
        End If
    Else
        MsgBox ("異常終了しました。ログファイルを確認してください")
        activexlSheet.Close
    End If

以上の処理は問題ないのですが
最後に「Microsoft Excel」から保存を求められるダイアログが出てきます。
自作で保存処理をしているので必要ありません。
回避できる手段がありましたらよろしくお願いします。

投稿時間:2007/02/22(Thu) 18:28
投稿者名:neptune
Eメール:
URL :
タイトル:
Re: 内容が変わりますがもうひとつあります
こんにちは

> 以上の処理は問題ないのですが
> 最後に「Microsoft Excel」から保存を求められるダイアログが出てきます。
> 自作で保存処理をしているので必要ありません。
> 回避できる手段がありましたらよろしくお願いします。
WorkBookオブジェクトのSaved プロパティを調べてください。
TrueにすればOKです。

投稿時間:2007/02/22(Thu) 19:12
投稿者名:こんにちは
Eメール:
URL :
タイトル:
Re^2: 内容が変わりますがもうひとつあります
neptunesさんありがとうございます。

>WorkBookオブジェクトのSaved プロパティを調べてください。
>TrueにすればOKです。

方法がわかりません。よろしくお願いします。

投稿時間:2007/02/22(Thu) 23:58
投稿者名:Blue
Eメール:
URL :
タイトル:
Re: 内容が変わりますがもうひとつあります
> Blueさんありがとうございます。
>                     ActiveWorkbook.Save
> 最後に「Microsoft Excel」から保存を求められるダイアログが出てきます。
> 自作で保存処理をしているので必要ありません。
> 回避できる手段がありましたらよろしくお願いします。

AcitveWorkbookが既存ファイルから開いているのであればSaveメソッドで保存しますが、
別であればSaveAsで同じ名前で保存するしかないですよ?

投稿時間:2007/02/23(Fri) 00:07
投稿者名:Blue
Eメール:
URL :
タイトル:
Re^2: 内容が変わりますがもうひとつあります
それと、結局上書き確認を行うのであれば、DisplayAlertsプロパティを制御することはないですね。

保存確認ダイアログのいいえ/キャンセル時にはエラーが発生するのでそれを考慮すると

>        ' ファイルが存在しているかどうか確認する
>        If hFso.FileExists(gudtFilePath.Don & "\aa" & strForm & strTo & ".xls") = True Then
>            strMsg = MsgBox("同じ名称のファイルが存在します。上書きしますか?", vbYesNo)
>                If strMsg = vbYes Then
>                    ActiveWorkbook.Save
>                    strMsg = MsgBox("正常終了しました", vbOKOnly)
>                Else
>                    activexlSheet.Close
>                End If
>        Else
>            xlSheet.SaveAs FileName:=gudtFilePath.Don & "\aa" & strForm & strTo & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
>            strMsg = MsgBox("正常終了しました", vbOKOnly)
>        End If


On Error Resume Next
xlBook.SaveAs gudtFilePath.Don & "\aa" & strForm & strTo & ".xls"
On Error GoTo 0

xlBook.Saved = True ' neptuneさんのおっしゃっていること
xlBook.Close

MsgBox("正常終了しました", vbOKOnly)

だけでよいのでは?

投稿時間:2007/02/23(Fri) 08:53
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 内容が変わりますがもうひとつあります
>     If hFso.FolderExists(c:\) = True Then
> 以上の処理は問題ないのですが
問題ない事はないでしょう、これでは動きません。
(タイプミスだとしても、それなら他にもミスがあるのではと...。)

> 最後に「Microsoft Excel」から保存を求められるダイアログが出てきます。
保存していないからでは。

投稿時間:2007/02/23(Fri) 08:57
投稿者名:こんにちは
Eメール:
URL :
タイトル:
Re^2: 内容が変わりますがもうひとつあります
おはようございます。
皆様ありがとうございました。

問題解決いたしました。