人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAについて質問です。
過去にtxtを大量に作成することが出来るマクロを作成していただきました。
http://q.hatena.ne.jp/1216705790
久しぶりにこのマクロを使用したところtxt作成が出来ず、困っております。
プログラムを実行すると型が一致しませんというエラーダイアログが出てきます。
多分自分がセルに入れているデータの特性に合った命令文がされていないからだと思うのですが、、、
(なんでもない文字列だったら通常に実行できるので・・)
大変お手数をおかけしますが詳しい方がおりましたらマクロのプログラムを一度見ていただけないでしょうか。
よろしくお願いいたします。


●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:VBA エラー セル ダイアログ データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ammunition
●35ポイント

ソースを見たところ、[セル内文字列.txt]で保存しようとしていますが、Windowsのファイル名に記号が使用出来ないためにエラーとなっているようです。

具体的には、以下が記号とみなされるようです。

\:*?"<>|

◎質問者からの返答

ご回答ありがとうございます。

ファイル名なのですが

セルAに数字が入っており [セル内文字列.txt]で保存は 数字.txt で保存をするということになっています。

そしてセルBに 以下で表示させていただいたHTMLが入っています。

セルに記号が入っている場合は何らかの処理を施さないといけないということでしょうか?

どうにかしてhtmlをそのまま保存したいのですが、、。


2 ● SALINGER
●100ポイント ベストアンサー

なるほど、ワークシートのエラー値が問題になってましたか。

エラーで止まった場合、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
◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ