Excel VBA質問箱 IV

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

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


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

【30224】ファイルのプロパティをマクロで操作したいのですが カド 05/10/22(土) 16:54 質問[未読]
【30236】Re:ファイルのプロパティをマクロで操作し... ichinose 05/10/23(日) 9:47 発言[未読]
【30257】Re:ファイルのプロパティをマクロで操作し... Jaka 05/10/24(月) 9:25 発言[未読]
【30305】Re:ファイルのプロパティをマクロで操作し... ichinose 05/10/24(月) 21:32 発言[未読]
【30390】Re:ファイルのプロパティをマクロで操作し... カド 05/10/26(水) 14:28 お礼[未読]
【30404】Re:ファイルのプロパティをマクロで操作し... ichinose 05/10/26(水) 21:00 発言[未読]
【30417】Re:ファイルのプロパティをマクロで操作し... カド 05/10/27(木) 9:07 発言[未読]
【30389】Re:ファイルのプロパティをマクロで操作し... カド 05/10/26(水) 14:22 お礼[未読]

【30224】ファイルのプロパティをマクロで操作した...
質問  カド  - 05/10/22(土) 16:54 -

引用なし
パスワード
   メニューのファイルからプロパティを開くと”プレビューの図を保存する”に
チェックを入れることが出来ますが、これをマクロで行いたいのです。

マクロの自動記録では何もコードが記録されません。

実現できる方法は有りますでしょうか?

【30236】Re:ファイルのプロパティをマクロで操作...
発言  ichinose  - 05/10/23(日) 9:47 -

引用なし
パスワード
   ▼カド さん:
おはようございます。

>メニューのファイルからプロパティを開くと”プレビューの図を保存する”に
>チェックを入れることが出来ますが、これをマクロで行いたいのです。
>
Workbookのプロパティとしては、私も見つけられませんでした。
これを実現する方法より、プロパティがないのなら、ない理由が何故なのか気になります
(探し方の問題で実際にはプロパティが存在するのなら何も問題ないのですが・・・)。

方法自体は、Workbookからたどって取得できるHTMLProjectを
操作することで

「”プレビューの図を保存する”にチェックを入れる」

ことは出来ました。
(Excel2000、2002で確認)

実際のコードは、このあたりの理由がはっきりしてから
投稿します(投稿するしないも含めて決めます)。

この辺りの事情をご存知の方、教えてください。

【30257】Re:ファイルのプロパティをマクロで操作...
発言  Jaka  - 05/10/24(月) 9:25 -

引用なし
パスワード
   おはようございます。

ご希望の事の確認はとってませんけど....。
過去ログでりんさんも同じようなものを書いていましたから、探してみてください。
V3だったけ?
参考になるかどうかは解りません。

Sub 最終更新日()
  Dim OPWB As Workbook, BDP As Object, FNm As String
  'FNm = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\pprprp.xls"
  'FNm = "pprprp.xls"
  FNm = Application.GetOpenFilename("Excelファイル (*.xls), *.xls")
  If FNm = "False" Then Exit Sub
  
  Application.ScreenUpdating = False
  On Error Resume Next
  'Set OPWB = Workbooks.Open(FNm)
  Set OPWB = Workbooks(FNm)
  For Each BDP In OPWB.BuiltinDocumentProperties
    'i = i + 1
    'ThisWorkbook.Sheets(1).Range("A" & i).Value = BDP.Name
    'ThisWorkbook.Sheets(1).Range("B" & i).Value = OPWB.BuiltinDocumentProperties(BDP.Name).Value
    'Last save time
    If BDP.Name = "Last save time" Then
      'Win98se & EXL97だとエラーになっていた?。
      'Win2000 & EXL97だとEmpty
      'EXL2000以上じゃないとダメ?
      TTM = OPWB.BuiltinDocumentProperties(BDP.Name).Value
      MsgBox "最終更新日、つまり最終保存日" & TTM

      Exit For
    End If
  Next
  OPWB.Close (False)
  Set OPBW = Nothing
  Application.ScreenUpdating = True
End Sub

【30305】Re:ファイルのプロパティをマクロで操作...
発言  ichinose  - 05/10/24(月) 21:32 -

引用なし
パスワード
   Jaka さん、カド さん、こんばんは。
>これを実現する方法より、プロパティがないのなら、ない理由が何故なのか気になります

ちょっと、深読みしすぎました?

Htmlprojectは、Helpでも公開されていますからねえ・・・。

コードと一緒に面白い現象も合わせて
標準モジュールに

'=====================================================================
Sub main()
  Dim bknm As Variant
  Dim svbknm As String
  bknm = Application.GetOpenFilename("Excel ファイル (*.xls), *.xls")
  If TypeName(bknm) <> "Boolean" Then
    With Workbooks.Open(bknm)
     svbknm = .Name
     End With
    Call set_save_preview(Workbooks(svbknm))
    With Workbooks(svbknm)
     .Save
     .Close
     End With
    MsgBox "プレビュー設定完了"
    End If
End Sub
'=====================================================================
Sub set_save_preview(bk As Workbook)
  Dim idx As Long, jdx As Long
  Dim otext As Variant
  Dim hhh As HTMLProjectItem
  Dim ntext() As String
  With bk
    otext = Split(.HTMLProject.HTMLProjectItems(1).Text, vbCrLf)
    jdx = 1
    For idx = LBound(otext) To UBound(otext)
     ReDim Preserve ntext(1 To jdx)
     ntext(jdx) = otext(idx)
     If otext(idx) = "<head>" Then
       ReDim Preserve ntext(1 To jdx + 1)
       ntext(jdx + 1) = "<link rel=Preview>"
       jdx = jdx + 1
       End If
     jdx = jdx + 1
     Next
    .HTMLProject.HTMLProjectItems(1).Text = Join(ntext(), vbCrLf)
    .HTMLProject.RefreshProject True
    .HTMLProject.RefreshDocument True
    End With
End Sub


mainを実行してみてください。

ファイル選択ダイアログから選択したブックの

「"プレビューの図を保存する"にチェックを入れる」

処理をした後、保存し、対象ブックを閉じます。

私がテストした限りでは、正常にチェックが入っています。


で面白い現象というのは・・・、
上記のMainプロシジャーを

'=====================================
Sub main2()
  Dim bknm As Variant
  Dim svbknm As String
  bknm = Application.GetOpenFilename("Excel ファイル (*.xls), *.xls")
  If TypeName(bknm) <> "Boolean" Then
    With Workbooks.Open(bknm)
     svbknm = .Name
     Call set_save_preview(Workbooks(svbknm))
     .Save
     .Close
     End With
    MsgBox "プレビュー設定完了"
    End If
End Sub
と前述のコードより、簡素化した記述をすると、

.Save
の箇所で
「オートメーションエラーです」というトラップが発生します。
どうやらブックオブジェクトのアドレスが変わっているようなのです。

set_save_previewプロシジャーの

    .HTMLProject.RefreshProject True
    .HTMLProject.RefreshDocument True
のコードを実行すると、その現象が見られます。

よって、set_save_previewプロシジャーを
呼び出した後で
再度、アドレッシングを行わなければなりませんでした。

尚、Excel2000、Excel2002で動作を確認しました。

試してみてください。

【30389】Re:ファイルのプロパティをマクロで操作...
お礼  カド  - 05/10/26(水) 14:22 -

引用なし
パスワード
   回答ありがとうございます。

過去ログを覗いてみましたが、私の力不足もあり、
今回の件の解決には至りませんでした。

【30390】Re:ファイルのプロパティをマクロで操作...
お礼  カド  - 05/10/26(水) 14:28 -

引用なし
パスワード
   ▼ichinose さん:
回答ありがとうございます。

ご提示頂いたコードで正常に作動するファイルとしないファイルがありました。

変だなと思って、うまくいかないファイルに対し、手動で
「"プレビューの図を保存する"にチェックを入れる」
をやってみましたが、やはりダメでした。

マクロとは別の問題として、なぜかチェックを入れても入らないファイルが
たくさんあるようです。

【30404】Re:ファイルのプロパティをマクロで操作...
発言  ichinose  - 05/10/26(水) 21:00 -

引用なし
パスワード
   ▼カド さん:
こんばんは。

>
>ご提示頂いたコードで正常に作動するファイルとしないファイルがありました。
>
>変だなと思って、うまくいかないファイルに対し、手動で
>「"プレビューの図を保存する"にチェックを入れる」
>をやってみましたが、やはりダメでした。
>
私には、このチェックの入らないブックが再現できませんでした。
MS社サイトを漁ってみましたが、それらしい記述も見つけられませんでした。
気をつけていれば、そのようなブックが見つかるかもしれません。
(何せ私は、このご質問を見るまで
>「"プレビューの図を保存する"にチェックを入れる」
という操作をしたことがありませんでしたから・・・)。

せっかく、正常に処理されるブックと出来ないブックを持っているのですから、
違いを研究してみてください。

【30417】Re:ファイルのプロパティをマクロで操作...
発言  カド  - 05/10/27(木) 9:07 -

引用なし
パスワード
   ▼ichinose さん:
こんにちは。

一度プレビューにチェックが入ったファイルでも、一旦チェックを外して
保存し、再度チェックを入れようとすると保存できなくなりました。

これ以上は私の技量では分かりませんでした。

環境:XP、Office 2000

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