dポイントプレゼントキャンペーン実施中!

先日、マクロの件で質問した者です。
http://oshiete1.goo.ne.jp/qa4473686.html
良回答のlulさんのコードを参考にしています。

質問1

下記のコードではV列にhtmlが表示されるようになっています。
(エクセルにはAからTまでデータが入っています)

今回はセルV列にhtmlを表示するのではなくエクセルシートが置いてあるフォルダに各htmlを出力したいのですがどこをどのように変更すればいいのでしょうか?

(ちなみに、C列にあるものをファイル名とします)

質問2

また、フォルダ名を指定してそのフォルダに出力する場合も教えてください。

よろしくお願いします。

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)
sht.Cells(i, 22).Value = Mid(st, 1, Len(st) - 1) '//結果を V列に入れる(他の場合はそのように変更する)
End If
Next i

End Sub

A 回答 (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文に置き換えればよいことになります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/16 20:23

>回答番号: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が必要です。

とでます。

他にもいろいろとやみくもにやってみましたがマクロが分かっていない為、どうすればいいかお手上げ状態です。

補足日時:2008/11/16 16:59
    • good
    • 0

進んでいますか?



>質問1
htmlをV列に書き出している部分
sht.Cells(i, 22).Value = Mid(st, 1, Len(st) - 1)
を、f5d6c3d3さんのコードに置き換えれば希望が叶うと思います。

この回答への補足

xls88さん
回答ありがとうございます。
いろいろと試しているのですがどうしても失敗します。

補足日時:2008/11/16 11:18
    • good
    • 0

回答番号:No.2で紹介した


エクセル マクロ(VBA?)で、htmlファイルをまとめて作成したい。
http://detail.chiebukuro.yahoo.co.jp/qa/question …
上記のベストアンサー、f5d6c3d3さんの回答をお借りすればできるように思います。
頑張ってみてください。
    • good
    • 0

>回答番号:No.1 この回答への補足



Web検索でヒットしました。
ピッタリではないかも知れませんが、こういうことでしょうか?

エクセル マクロ(VBA?)で、htmlファイルをまとめて作成したい。
http://detail.chiebukuro.yahoo.co.jp/qa/question …

この回答への補足

だいたいそのような感じです。

マクロを1回実行して、エクセルファイルが入っているフォルダに複数のhtmlを作成したいと言う意味です。

補足日時:2008/11/15 16:06
    • good
    • 0

フォルダに出力しても受け取ってもらえません。


フォルダにあるファイル(Excelブック)ということですね。

出力先ブックがExcelで開かれているなら簡単です。
現状のコードでブック名とシート名を指定してやれば良いです。

Excelブックを開く操作を「マクロの記録」すれば参考コードが得られます。

この回答への補足

補足

上記のコードを実行すると

セルV2~
v1 各項目
v2(html~/htmlのデータ)
v3(html~/htmlのデータ)
v4(html~/htmlのデータ)
v5(html~/htmlのデータ)

各セルには別々のhtmlが入ります。

今回は、セルの中にhtmlを入れるのではなく、各htmlのファイルを出力すると言う意味です。


仮にエクセルファイルが【テスト】というフォルダ名に入っていれば、その中に各htmlファイルを作成すると言うことです。

セルC列にはファイル名が入っているのでその名前でhtmlを作成したいのです。

説明不足で申し訳ありません。

補足日時:2008/11/15 14:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!