会社のみんなが、手軽に更新履歴を書き込めるように、マクロにてエクセル内のあるシートをHTML化しています。
上記で自動生成したファイルは実はあるHTMLファイルのフレームの部品となっています。(Top、Left、RightのうちのRightです)
しかし上記のファイルはなぜか、必ずフレームの中でセンタリングされてしまうため、ブラウザのウインドを大きくすると、レイアウトが狂ってしまい困ってます。(top、leftは左寄せになっています)
何とかマクロの範疇で左寄せにできないでしょうか?
以下マクロのHTML化の部分です。
--------------------------------------------------
'HTML化始め
With ActiveWorkbook.PublishObjects.Add(xlSourceSheet, _
"HTMLのパス", "シート名", "" _
, xlHtmlStatic, "test0001_29648", "")
.Publish (True)
.AutoRepublish = False
End With
'HTML化終了
--------------------------------------------------
ちなみに・・・
出来上がったHTMLファイルには
<div id="test0001_29648" align=center x:publishsource="Excel">
という記述があり、ここを無理やりleftと変えると左詰になりました。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
こんにちは。
Wendy02です。#2372623 と合わせて、こちらに書いておきます。
細かい、部分を手直ししました。
'//*標準モジュール*//
'Option Explicit
Sub OutHtml()
'Excel 2002 用(Excel 2003 可)
'注意:MYTITLE は、拡張子を入れないでください。
Const MYTITLE As String = "test0001_29648"
Dim myPath As String
Dim myFName As String
Dim ShName As String
Const EXT As String = ".mht" '拡張子指定
'フォルダを指定してください。
myPath = ThisWorkbook.Path & "\"
ShName = ActiveSheet.Name
myFName = myPath & MYTITLE & EXT
With ActiveWorkbook.PublishObjects.Add( _
SourceType:=xlSourceSheet, _
Filename:=myFName, _
Sheet:=ShName, _
HtmlType:=xlHtmlStatic, _
Title:=MYTITLE)
.Publish True
.AutoRepublish = False
End With
ReplaceTextMacro myFName
End Sub
Sub ReplaceTextMacro(inFname As String)
'ファイル内部書き換え用マクロ
Dim inFno As Integer, outFno As Integer
Dim outText As String
Dim Re As Object
Dim TextLine As String
Dim Matches As Object, Match As Object
Dim buf As String
Dim OUTFNAME As String
Const REPSTRING As String = "Left"
OUTFNAME = Mid(inFname, 1, InStrRev(inFname, ".") - 1) & ".bak"
Set Re = CreateObject("VBScript.RegExp")
Re.Pattern = "align=([^\s]+)"
Re.Global = False
inFno = FreeFile()
Open inFname For Input As #inFno
outFno = FreeFile()
Open OUTFNAME For Output As #outFno
Do While Not EOF(inFno)
Line Input #inFno, TextLine
If Re.test(TextLine) Then
Set Matches = Re.Execute(TextLine)
Set Match = Matches(0)
buf = Trim$(Match.SubMatches(0))
outText = Replace(TextLine, buf, REPSTRING)
Print #outFno, outText
buf = ""
Else
Print #outFno, TextLine
End If
Loop
Close #inFno
Close #outFno
Name inFname As "tmp.mht"
Name OUTFNAME As inFname
Kill "tmp.mht" 'Tmpファイル削除
Set Re = Nothing
End Sub
No.3
- 回答日時:
こんばんは。
あッ、大変、すみません。一目で、コードが間違っているのが分かりました。ここで書いている時点では、コードは実際に動かしてはいませんが、間違いはないと思います。私は、寝ぼけていたのかもしれませんね。
下から14行上、Else から、3行目 (ライン除く)
Write #outFno, outText
↓
Print #outFno, outText
です。
それと、
一番上から、9行目(ライン除く)
Const REPSTRING As String ="Left" '新しい置換値
なお、そちらExcel 2002 ですから、 align=Left のほうがよいでしょうね。8/30付けのご質問で再確認しました。
No.2
- 回答日時:
こんばんは。
>取り込んでReplaceとなると、面倒そうですね。
そんなことはないです。以下を見ていただければよいのですが、マクロのできる方でしたら、何だこんなものっていう感じだと思います。ただ、ちょっと気になることがあって、正規表現検索に切り替えました。私の方では、3DCenter とか、3DLeft になっていますので、その用意のためです。
もっと簡単にするなら、ScriptingObjectのテキストストリームで、(テキスト)ファイルを一気に読み込んで、それをReplace して、吐き出せばよいです。例えば、今、ごらんになっている、ここのページ全部を一括で読むことも可能です。それと、必ず、「align=center」というようになっているなら、それでよいはずです。昔は、理論的には可能でも、出来ませんでしたが、今は可能になりました。
VBAの変数のテキストバッファの大きさは忘れましたが、数万行だったと思います。汎用性を考えたのでやめました。
なお、ファイル名(INFNAME)はキメウチですから、定数の行を削除して、それを、プロシージャの引数にして、元のコードのサブルーチンにすれば出来上がります。
'-----------------------------------------------------------
Sub ReplaceTextMacro()
Dim inFno As Integer, outFno As Integer
Dim outText As String
Dim Re As Object
Dim TextLine As String
Dim Matches As Object, Match As Object
Dim OutFname As String
Const INFNAME As String = "test0001.mht" 'ファイル名
Const REPSTRING As String = "3DLeft" '新しい置換値
OutFname = Mid(INFNAME, 1, InStrRev(INFNAME, ".") - 1) & ".bak"
Set Re = CreateObject("VBScript.RegExp")
Re.Pattern = "align=([^\s]+)"
Re.Global = False
inFno = FreeFile()
Open INFNAME For Input As #inFno
outFno = FreeFile()
Open OutFname For Output As #outFno
Do While Not EOF(inFno)
Line Input #inFno, TextLine
If Re.Test(TextLine) Then
Set Matches = Re.Execute(TextLine)
Set Match = Matches(0)
Buf = Trim$(Match.SubMatches(0))
outText = Replace(TextLine, Buf, REPSTRING)
Write #outFno, outText
Buf = ""
Else
Print #outFno, TextLine
End If
Loop
Close #inFno
Close #outFno
'ファイル名の交換
Name INFNAME As "tmp.mht"
Name OutFname As INFNAME
Name "tmp.mht" As OutFname
Set Re = Nothing
End Sub
'-----------------------------------------------------------
この回答への補足
すみません!!
やってみたところ
<div id="test0001_29648" align=center x:publishsource="Excel">
⇒
"<div id=""test0001_29648"" align=3DLeft x:publishsource=""Excel"">"
となってしまい、””(ダブルクォーテーションマーク)が画面に現れてしまいます。
ナゼでしょうか?
ちなみに、上記のsubをFunction化してファイル名を引数渡しにしているます。
※スミマセンマクロは初心者なモノで・・・
No.1
- 回答日時:
こんばんは。
どうもデフォルトでなっているようで、設定を探してみましたが、見つかりません。
それなので、一旦吐き出した後に、そのファイルを取り込んで、Replace で、align=center をalign=left に、書き換えてしまったらどうですか?
今調べてみましたが、align=*** は、そのファイル(シート)で一意のようですから、問題ないと思います。
そうですか・・・・
取り込んでReplaceとなると、面倒そうですね。
とにかく動かすことが先決ですから、エクセルで横幅をすごく長くして、無理やり左寄せにすることで、一時しのぎにします。(フレームの幅に入りきらない部品HTMLは左寄せになるらしい)
その後でじっくりご提案のやり方を作りこんでいきます。
(もちろん、平行して他の方法の検索も探してみます)
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
エクセルのマクロでアクティブシートをhtml保存
Visual Basic(VBA)
-
VBA/指定の複数シートをHTML化するマクロ
Excel(エクセル)
-
エクセルをHTML化するときに1行目に空白が入るのですが・・
Excel(エクセル)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA 指定したファイルが...
-
ファイルを開かずにマクロを実行
-
【マクロ】名前を保存する際に...
-
エクセルのシートの数を数えた...
-
データ参照先が別ファイルの場...
-
VBAでワークブックの名前を変数...
-
accessフォルダを移動したらフ...
-
エクセルマクロで不特定なファ...
-
秀丸:あらかじめ設定した複数...
-
ファイルの保存場所を変えたら...
-
Excelのマクロについてご教授く...
-
Excelのマクロでファイルを開く...
-
【Excel VBA】ファイル名が一...
-
ACCESS VBAでファイルを開くダ...
-
vba初心者です。 質問です。 毎...
-
エクセル(マクロ)のファイル...
-
フォルダ内のexcelファイルを順...
-
エクセルのxls形式からxlsx形式...
-
新規 xlsmファイルにする方法...
-
フォルダ内のブック全部にパス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 指定したファイルが...
-
エクセルマクロで不特定なファ...
-
【マクロ】名前を保存する際に...
-
ファイルを開かずにマクロを実行
-
【Excel VBA】ファイル名が一...
-
フォルダ内のブック全部にパス...
-
フォルダ内のexcelファイルを順...
-
エクセルのシートの数を数えた...
-
VBAでワークブックの名前を変数...
-
データ参照先が別ファイルの場...
-
エクセル(マクロ)のファイル...
-
vlookup関数の引数を変数で指定...
-
エクセル 複数ファイルの一括...
-
ファイルの保存場所を変えたら...
-
accessフォルダを移動したらフ...
-
EXCELマクロを無効にして開く方法
-
リンク切れチェックを行うマクロ
-
Accessのaccdbファイルを起動で...
-
エクセルのxls形式からxlsx形式...
-
エクセルマクロ 異なるファイ...
おすすめ情報