Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6475 / 13646 ツリー ←次へ | 前へ→

【44923】名前を付けて保存とWebページとして保存の判別方法 d021 06/12/6(水) 13:31 質問[未読]
【44925】Re:名前を付けて保存とWebページとして保存... ponpon 06/12/6(水) 18:04 発言[未読]
【44933】Re:名前を付けて保存とWebページとして保存... d021 06/12/7(木) 10:39 発言[未読]
【44955】Re:名前を付けて保存とWebページとして保存... ponpon 06/12/7(木) 21:49 発言[未読]
【44988】Re:名前を付けて保存とWebページとして保存... bykin 06/12/8(金) 21:39 回答[未読]
【45050】Re:名前を付けて保存とWebページとして保存... d021 06/12/11(月) 10:28 お礼[未読]

【44923】名前を付けて保存とWebページとして保存...
質問  d021  - 06/12/6(水) 13:31 -

引用なし
パスワード
   こんにちは。

ワークブックのBeforeSaveイベントで、自力でエクセルの保存処理
を行っているのですが、名前を付けて保存とWebページとして保存
の違いをVBAで判別できなくて困っています。

VBAで判断できるのでしょうか?

【44925】Re:名前を付けて保存とWebページとして保...
発言  ponpon  - 06/12/6(水) 18:04 -

引用なし
パスワード
   ▼d021 さん:
>こんにちは。
>
>ワークブックのBeforeSaveイベントで、自力でエクセルの保存処理
>を行っているのですが、名前を付けて保存とWebページとして保存
>の違いをVBAで判別できなくて困っています。
>
>VBAで判断できるのでしょうか?

両方マクロの記録でやってみました。

○名前を付けて保存
Sub Macro1()
 
  ActiveWorkbook.SaveAs Filename:= _
    "C:\Documents and Settings\ponpon\My Documents\Book1.xls", FileFormat:=xlNormal, _
    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False

End Sub

○Webページとして保存
Sub Macro2()

  ActiveWorkbook.SaveAs Filename:= _
    "C:\Documents and Settings\ponpon\My Documents\Book1.htm", FileFormat:=xlHtml, _
    ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

どんなことをなさりたいかよくわかりませんが、
二つの違いは、拡張子だと思うので
Filenameから、右3文字を抜き出し、"xls"なら名前を付けて保存。
"htm"ならWebページとして保存と判断されたらいかがでしょう?
意味が違ったらごめんなさい。

【44933】Re:名前を付けて保存とWebページとして保...
発言  d021  - 06/12/7(木) 10:39 -

引用なし
パスワード
   ▼ponpon さん:
>▼d021 さん:
>>こんにちは。
>>
>>ワークブックのBeforeSaveイベントで、自力でエクセルの保存処理
>>を行っているのですが、名前を付けて保存とWebページとして保存
>>の違いをVBAで判別できなくて困っています。
>>
>>VBAで判断できるのでしょうか?
>
>両方マクロの記録でやってみました。
>
>○名前を付けて保存
>Sub Macro1()
> 
>  ActiveWorkbook.SaveAs Filename:= _
>    "C:\Documents and Settings\ponpon\My Documents\Book1.xls", FileFormat:=xlNormal, _
>    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
>    CreateBackup:=False
>
>End Sub
>
>○Webページとして保存
>Sub Macro2()
>
>  ActiveWorkbook.SaveAs Filename:= _
>    "C:\Documents and Settings\ponpon\My Documents\Book1.htm", FileFormat:=xlHtml, _
>    ReadOnlyRecommended:=False, CreateBackup:=False
>End Sub
>
>どんなことをなさりたいかよくわかりませんが、
>二つの違いは、拡張子だと思うので
>Filenameから、右3文字を抜き出し、"xls"なら名前を付けて保存。
>"htm"ならWebページとして保存と判断されたらいかがでしょう?
>意味が違ったらごめんなさい。


説明が足らなくてすみません。
ワークブックのBeforeSaveイベントで、下記のように処理を行いたいのです。

===========================================================
If SaveAsUI = True Then
 If 名前を付けて保存が選択された場合 Then ← ここの判断が分かりません。

   ' EXCEL用のファイルダイアログを表示し、EXCEL形式で保存処理
 Else

   ' HTML用のファイルダイアログを表示し、HTML形式で保存処理
 End If
End If
===========================================================

ご指摘のFileNameは、どうやって取得したら良いのでしょう?
質問ばかりですみません・・・。

【44955】Re:名前を付けて保存とWebページとして保...
発言  ponpon  - 06/12/7(木) 21:49 -

引用なし
パスワード
   ▼d021 さん:
>
>説明が足らなくてすみません。
>ワークブックのBeforeSaveイベントで、下記のように処理を行いたいのです。
>
>===========================================================
>If SaveAsUI = True Then
> If 名前を付けて保存が選択された場合 Then ← ここの判断が分かりません。
>
>   ' EXCEL用のファイルダイアログを表示し、EXCEL形式で保存処理
> Else
>
>   ' HTML用のファイルダイアログを表示し、HTML形式で保存処理
> End If
>End If
>===========================================================
>
>ご指摘のFileNameは、どうやって取得したら良いのでしょう?
>質問ばかりですみません・・・。

こんばんは。いろいろと試してみたのですが、私の力では、
「名前を付けて保存」「Webページとして保存」のどちらが
選択されたのかを知る方法はわかりません。
多分メニューバー(コマンドバー)のIDでわかると思うのですが、IDが何番なのか
またIDの取得方法がわかりません。
識者の回答をお待ちください。

【44988】Re:名前を付けて保存とWebページとして保...
回答  bykin  - 06/12/8(金) 21:39 -

引用なし
パスワード
   こんばんわ。

>ワークブックのBeforeSaveイベントで、自力でエクセルの保存処理
>を行っている

ってのは

>' EXCEL用のファイルダイアログを表示し、EXCEL形式で保存処理

とかの箇所で、GetSaveAsFilenameを使ってるってことなんかな?

ツールバーのボタンのクリックを取得して判断するしかないやろねー
↓こんなんかな?

(全部ThisWorkbookモジュール)

Private WithEvents Btn1 As CommandBarButton
Private WithEvents Btn2 As CommandBarButton
Private SaveFlg As Long

Private Sub Btn1_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
  SaveFlg = 1
End Sub

Private Sub Btn2_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
  SaveFlg = 2
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  Dim FileSpec As Variant

  If SaveAsUI Then
    Select Case SaveFlg
      Case 1
        Cancel = True
        FileSpec = Application.GetSaveAsFilename(, "Excel ブック (*.xls), *.xls")
        If FileSpec <> False Then SaveAs FileSpec, xlNormal
      Case 2
        Cancel = True
        FileSpec = Application.GetSaveAsFilename(, "Web ページ (*.htm), *.htm")
        If FileSpec <> False Then SaveAs FileSpec, xlHtml
    End Select
    SaveFlg = 0
  End If
End Sub

Private Sub Workbook_Open()
  With Application.CommandBars
    Set Btn1 = .FindControl(ID:=748)
    Set Btn2 = .FindControl(ID:=3823)
  End With
End Sub

一旦保存して、再度開くと有効になります。
試してみてな。
ほな。

【45050】Re:名前を付けて保存とWebページとして保...
お礼  d021  - 06/12/11(月) 10:28 -

引用なし
パスワード
   ▼bykin さん:
>こんばんわ。
>
>>ワークブックのBeforeSaveイベントで、自力でエクセルの保存処理
>>を行っている
>
>ってのは
>
>>' EXCEL用のファイルダイアログを表示し、EXCEL形式で保存処理
>
>とかの箇所で、GetSaveAsFilenameを使ってるってことなんかな?
>
>ツールバーのボタンのクリックを取得して判断するしかないやろねー
>↓こんなんかな?
>
>(全部ThisWorkbookモジュール)
>
>Private WithEvents Btn1 As CommandBarButton
>Private WithEvents Btn2 As CommandBarButton
>Private SaveFlg As Long
>
>Private Sub Btn1_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
>  SaveFlg = 1
>End Sub
>
>Private Sub Btn2_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
>  SaveFlg = 2
>End Sub
>
>Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
>  Dim FileSpec As Variant
>
>  If SaveAsUI Then
>    Select Case SaveFlg
>      Case 1
>        Cancel = True
>        FileSpec = Application.GetSaveAsFilename(, "Excel ブック (*.xls), *.xls")
>        If FileSpec <> False Then SaveAs FileSpec, xlNormal
>      Case 2
>        Cancel = True
>        FileSpec = Application.GetSaveAsFilename(, "Web ページ (*.htm), *.htm")
>        If FileSpec <> False Then SaveAs FileSpec, xlHtml
>    End Select
>    SaveFlg = 0
>  End If
>End Sub
>
>Private Sub Workbook_Open()
>  With Application.CommandBars
>    Set Btn1 = .FindControl(ID:=748)
>    Set Btn2 = .FindControl(ID:=3823)
>  End With
>End Sub
>
>一旦保存して、再度開くと有効になります。
>試してみてな。
>ほな。


返事が遅れてすみません。

>>' EXCEL用のファイルダイアログを表示し、EXCEL形式で保存処理
>とかの箇所で、GetSaveAsFilenameを使ってるってことなんかな?

その通りです。


ありがとうございます。byKinさんの方法で検討してみます。
うーん、やっぱ通常のイベント引数では取得できないのですね・・・

ponponさん、byKinさんありがとうございました。

6475 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free