Excel VBA質問箱 IV

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

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


51298 / 76732 ←次へ | 前へ→

【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で動作を確認しました。

試してみてください。

0 hits

【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 お礼

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