お世話になります。
現在 Excel2003の環境でVBAを使いファイル生成プログラムを書いています。生成されるファイルは、フォルダの中へ階層構造上に生成されていき、第5階層まで生成できます。
下記モジュールは、第4階層目のファイルを生成するモジュールとなっており、第1~3のモジュールと、パスの指定以外違いが無いのですが、
上手く生成できるときと、「実行時エラー '52'」が表示されるときがあり、まったく原因がつかめません。
第1~3のモジュールは何の問題も無く動作します。
エラーが出るのは、下記の
「 Open TargetFile For Output As fno」の部分です。
実行時エラー '52'になりうる原因も調べてみましたが、どれも該当しません。
1.操作しようとしたファイルが存在しなかった。
2.操作しようとしたファイルに対するアクセス権がなかった。
3.操作しようとしたファイルを Open 文で開いていない、または不正なファイルユニット番号を使っている。
4.ネットワーク上のファイル(例. \\Server\Share\hoge.txt)を操作しようとした。
どなたかお知恵をお貸し下さいorz
'<サンプルモジュール>
WBK = ThisWorkbook.Path
'フォルダパスを分割
buf = SH1.OLEObjects("test1").Object.Value
A = Split(buf, " > ")
'ターゲットファイル
Target = WBK & "\..\..\..\..\..\data\sample\" & A(1) & "\" & A(2) & "\" & A(3) & "\" & A(4) & "\" & A(4) & ".txt"
'ファイル生成及び書き込み
fno = FreeFile
Open TargetFile For Output As fno
For i = 0 To 19
If SHDB.Range("O" & i + 3) <> "" Then
Print #fno, SHDB.Range("O" & i + 3); ",";
End If
Next i
Close fno
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
Unicode文字列での長さではなく MBCS(マルチバイト)の長さでの制限のようです
Debug.Print LenB(StrConv( TargetFile, vbFromUnicode) )
これが 当方のWinXPSP3 + Excel2003 ですと 260以上ですと
Error53 ファイルが見つかりません
が発生しました
ちなみに
C:\Program files\新しいフォルダ\ ... 新しいフォルダ\ABCDEFGH\boot.ini
で "新しいフォルダ\" が15個です
この回答への補足
redfox63様 ご回答ありがとうございます。
LenB(StrConv( TargetFile, vbFromUnicode) )で確認したところ、ずばりでした…。
設計自体の見直しを図ってみますorz
ありがとうございました。
No.1
- 回答日時:
変数TargetFileの内容が255文字を超えていませんか?
この回答への補足
redfox63様
回答ありがとうございます。
なるほど、見落としておりました…。
255越えるとエラーが発生するんですね…。
その可能性もありえます。
掲載時に記載ミスしてしまいましたが、
TargetFileには、
TargetFile = WBK & "\..\..\..\..\..\data\sample\" & A(1) & "\" & A(2) & "\" & A(3) & "\" & A(4) & "\" & A(4) & ".txt"
が格納されるようになっております。
A(1)~A(4)の配列には、一つそれぞれ全角12文字を上限とし、文字が入ります。
例)サービス紹介
これを回避するには、階層を浅くする他ないのでしょうか…。
Len(str)でカウントしてみたのですが、
配列内の1つあたりの値を12文字の上限に設定して再度試してみたのですが、195文字となり、255文字以下でもエラーが発生してしまいます・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
準・究極の選択
「年収1000万円で一生カレーライス」か 「年収180万円で毎日何でも食べ放題」 あなたはどちらを選びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
昨日まで動いていたエクセルのマクロが急に動かなくなりました
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの特定行の削除
-
vbsからのExcelマクロ呼び出し...
-
彼女の過去の恋愛に嫉妬してし...
-
ファイルの同一性を判定するID...
-
FTPのgetとputの使いわけ。
-
[Unity]シーンファイルの中が消...
-
複数のExcelファイルにある同名...
-
Excel: ファイル名になぜ、[...
-
秀丸エディタでHTMLの部分のURL...
-
フォルダ内の複数のファイルの...
-
自動で.xlsを閉じて指定フォル...
-
batでファイル名を変更したい(...
-
batファイルで親フォルダのコピー
-
excel vbaのdir関数で正しいフ...
-
共有エクセルファイルでのユー...
-
iCloud for Windowsをアンイン...
-
EXCELVBAにて文字列にして「01...
-
VBAにおいて、ファイルの移...
-
【Excel VBA】ファイルにヘッダ...
-
5000個のtiffファイルをpdfへ変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
彼女の過去の恋愛に嫉妬してし...
-
CSVファイルの特定行の削除
-
vbsからのExcelマクロ呼び出し...
-
[Unity]シーンファイルの中が消...
-
iCloud for Windowsをアンイン...
-
Excel: ファイル名になぜ、[...
-
EXCELVBAにて文字列にして「01...
-
FTPのgetとputの使いわけ。
-
ファイルが移動してもリンクの...
-
このファイルは外部のエディタ...
-
docxをmht形式で保存したファイ...
-
ファイルを別のストレージに移...
-
WINDOWS CMDからゴミ箱のファ...
-
5000個のtiffファイルをpdfへ変...
-
複数のExcelファイルにある同名...
-
エクセルのファイル:「自分」が...
-
mediaplayerの取り込みフォルダ...
-
エクセル保存終了で一時ファイ...
-
OneDrive必要なものでしょうか
-
VBScriptでExcelファイルをDLす...
おすすめ情報