- ベストアンサー
マクロでExcelシートの内容をHTMLに出力する方法
- マクロを使用して、Excelシートの内容をHTML形式で出力する方法についての質問です。
- 質問1:現在のコードではセルV列にhtmlが表示されるようになっていますが、エクセルシートが置いてあるフォルダに各htmlを出力したい場合、どこを変更すればよいか教えてください。
- 質問2:フォルダ名を指定して、そのフォルダに出力する方法も教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>回答番号:No.5 この回答への補足 プロシージャの中にプロシージャを入れることはできません。 Sub htmlを作成() '---プロシージャの開始 ・ ・ End Sub '---プロシージャの終了 sirakuさんのオリジナルコードでは、下記の部分でセルに書き込んでいます。 sht.Cells(i, 22).Value = Mid(st, 1, Len(st) - 1) そこを、htmlファイルに出力するようにすれば良いのです。 f5d6c3d3さんのコードで、htmlファイルに出力するのが下記部分です。 Open ThisWorkbook.Path & "\ " & Range("B" & i).Value For Output As #1 Print #1, Range("A" & i).Value Close #1 ThisWorkbook.Path で、作業中の(このマクロを保存している)ファイルのパスを使っています。 Range("B" & i).Value がファイル名です。 Range("B" & i)が記述されているセルです。 実際にファイル名が記述されている、セルに合うように、書き換える必要があります。 Print #1, Range("A" & i).Value で、Range("A" & i).Valueを書き込んでいます。 Range("A" & i).Value を、html文に置き換えればよいことになります。
その他の回答 (5)
- xls88
- ベストアンサー率56% (669/1189)
>回答番号:No.4 この回答への補足 >いろいろと試しているのですがどうしても失敗します。 ということで済まさずに、 どこまで出来ているのか、どこで躓いているのか教えてください。 トライ中のコードを提示されるのが一番アドバイスし易いです。 エラーになるなら、エラー発生行、エラー内容も教えてください。
補足
マクロが分からないでどこを直せばいいかわかりませんのでとりあえず指摘があった場所 sht.Cells(i, 22).Value = Mid(st, 1, Len(st) - 1) '//結果を V列に入れる(他の場合はそのように変更する) これを削除して f5d6c3d3さん の Private Sub CommandButton1_Click() Dim i As Integer For i = 1 To 10 Open ThisWorkbook.Path & "\ " & Range("B" & i).Value For Output As #1 Print #1, Range("A" & i).Value Close #1 Next i End Sub をとりあえず挿入してみました。 そしてマクロ実行 コンパイルエラー End Subが必要です。 とでます。 他にもいろいろとやみくもにやってみましたがマクロが分かっていない為、どうすればいいかお手上げ状態です。
- xls88
- ベストアンサー率56% (669/1189)
進んでいますか? >質問1 htmlをV列に書き出している部分 sht.Cells(i, 22).Value = Mid(st, 1, Len(st) - 1) を、f5d6c3d3さんのコードに置き換えれば希望が叶うと思います。
補足
xls88さん 回答ありがとうございます。 いろいろと試しているのですがどうしても失敗します。
- xls88
- ベストアンサー率56% (669/1189)
回答番号:No.2で紹介した エクセル マクロ(VBA?)で、htmlファイルをまとめて作成したい。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1213131032... 上記のベストアンサー、f5d6c3d3さんの回答をお借りすればできるように思います。 頑張ってみてください。
- xls88
- ベストアンサー率56% (669/1189)
>回答番号:No.1 この回答への補足 Web検索でヒットしました。 ピッタリではないかも知れませんが、こういうことでしょうか? エクセル マクロ(VBA?)で、htmlファイルをまとめて作成したい。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1213131032?fr=rcmd_chie_detail
補足
だいたいそのような感じです。 マクロを1回実行して、エクセルファイルが入っているフォルダに複数のhtmlを作成したいと言う意味です。
- xls88
- ベストアンサー率56% (669/1189)
フォルダに出力しても受け取ってもらえません。 フォルダにあるファイル(Excelブック)ということですね。 出力先ブックがExcelで開かれているなら簡単です。 現状のコードでブック名とシート名を指定してやれば良いです。 Excelブックを開く操作を「マクロの記録」すれば参考コードが得られます。
補足
補足 上記のコードを実行すると セルV2~ v1 各項目 v2(html~/htmlのデータ) v3(html~/htmlのデータ) v4(html~/htmlのデータ) v5(html~/htmlのデータ) 各セルには別々のhtmlが入ります。 今回は、セルの中にhtmlを入れるのではなく、各htmlのファイルを出力すると言う意味です。 仮にエクセルファイルが【テスト】というフォルダ名に入っていれば、その中に各htmlファイルを作成すると言うことです。 セルC列にはファイル名が入っているのでその名前でhtmlを作成したいのです。 説明不足で申し訳ありません。
お礼
xls88さん ご回答ありがとうございます。 やっと出来ました! 本当にありがとうございました! Sub htmlを作成() Const LFeed As String = vbCrLf Dim st As String Dim sht As Worksheet, i As Long, obj Set sht = ActiveSheet '//現在のシートを設定 Dim MaxRow As Long MaxRow = Range("A65536").End(xlUp).Row For i = 1 To MaxRow If Cells(i, 1) <> "" Then Set Grammar = Nothing 'HTML1行ずつ記載 st = "" st = st & "<html lang='ja'>" & LFeed st = st & "<head>" & LFeed st = st & "</head>" & LFeed st = st & "<body>" & LFeed 途中省略 st = st & "</body>" & LFeed st = st & "</html>" & LFeed st = Replace(st, "'", Chr(34), 1, -1, 1) Open ThisWorkbook.Path & "\ " & Range("C" & i).Value For Output As #1 Print #1, Range("V" & i).Value Close #1 End If Next i End Sub