過去にtxtを大量に作成することが出来るマクロを作成していただきました。
http://q.hatena.ne.jp/1216705790
久しぶりにこのマクロを使用したところtxt作成が出来ず、困っております。
プログラムを実行すると型が一致しませんというエラーダイアログが出てきます。
多分自分がセルに入れているデータの特性に合った命令文がされていないからだと思うのですが、、、
(なんでもない文字列だったら通常に実行できるので・・)
大変お手数をおかけしますが詳しい方がおりましたらマクロのプログラムを一度見ていただけないでしょうか。
よろしくお願いいたします。
なるほど、ワークシートのエラー値が問題になってましたか。
エラーで止まった場合、iの値にカーソルを合わせるとどの行で止まったかがわかるので
問題解決の近道になったですね。
#N/Aが出た場合を判別するようにすればいいです。
またここではやっていませんが、他のエラーが出た場合はiserror関数で判別すればいいです。
Option Explicit Sub TxtSave() Dim FSO Dim i As Long Dim Shell As Object Dim FolderPath Set Shell = CreateObject("Shell.Application") _ .BrowseForFolder(0, "フォルダを選択してください", 0, "c:\") If Shell Is Nothing Then Exit Sub Else FolderPath = Shell.Items.Item.Path End If Set FSO = CreateObject("Scripting.FileSystemObject") i = 1 While ActiveSheet.Cells(i, 1).Value <> "" With FSO.getfolder(FolderPath).createtextfile(ActiveSheet.Cells(i, 1).Value & ".txt") If Application.WorksheetFunction.IsNA(ActiveSheet.Cells(i, 2)) Then .write "#N/A" Else .write Replace(ActiveSheet.Cells(i, 2).Value, vbLf, vbCrLf) End If End With i = i + 1 Wend Set FSO = Nothing End Sub
ソースを見たところ、[セル内文字列.txt]で保存しようとしていますが、Windowsのファイル名に記号が使用出来ないためにエラーとなっているようです。
具体的には、以下が記号とみなされるようです。
\:*?"<>|
ご回答ありがとうございます。
ファイル名なのですが
セルAに数字が入っており [セル内文字列.txt]で保存は 数字.txt で保存をするということになっています。
そしてセルBに 以下で表示させていただいたHTMLが入っています。
セルに記号が入っている場合は何らかの処理を施さないといけないということでしょうか?
どうにかしてhtmlをそのまま保存したいのですが、、。
なるほど、ワークシートのエラー値が問題になってましたか。
エラーで止まった場合、iの値にカーソルを合わせるとどの行で止まったかがわかるので
問題解決の近道になったですね。
#N/Aが出た場合を判別するようにすればいいです。
またここではやっていませんが、他のエラーが出た場合はiserror関数で判別すればいいです。
Option Explicit Sub TxtSave() Dim FSO Dim i As Long Dim Shell As Object Dim FolderPath Set Shell = CreateObject("Shell.Application") _ .BrowseForFolder(0, "フォルダを選択してください", 0, "c:\") If Shell Is Nothing Then Exit Sub Else FolderPath = Shell.Items.Item.Path End If Set FSO = CreateObject("Scripting.FileSystemObject") i = 1 While ActiveSheet.Cells(i, 1).Value <> "" With FSO.getfolder(FolderPath).createtextfile(ActiveSheet.Cells(i, 1).Value & ".txt") If Application.WorksheetFunction.IsNA(ActiveSheet.Cells(i, 2)) Then .write "#N/A" Else .write Replace(ActiveSheet.Cells(i, 2).Value, vbLf, vbCrLf) End If End With i = i + 1 Wend Set FSO = Nothing End Sub
ご回答ありがとうございます。
ご回答ありがとうございます。