お世話になります。
現在 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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの特定行の削除
-
Excel: ファイル名になぜ、[...
-
vbsからのExcelマクロ呼び出し...
-
VBAにおいて、ファイルの移...
-
FTPのgetとputの使いわけ。
-
共有エクセルファイルでのユー...
-
5000個のtiffファイルをpdfへ変...
-
複数のExcelファイルにある同名...
-
ファイルを別のフォルダに移動...
-
docxをmht形式で保存したファイ...
-
このファイルは外部のエディタ...
-
VBSでフォルダ内の最新のファイ...
-
batでファイル名を変更したい(...
-
Excelファイルを開くとメッセー...
-
excel vbaのdir関数で正しいフ...
-
エクセルのファイル:「自分」が...
-
ファイルが移動してもリンクの...
-
htmlファイルを結合して一つの...
-
EXCELVBAにて文字列にして「01...
-
Delphi
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの特定行の削除
-
彼女の過去の恋愛に嫉妬してし...
-
OneDrive必要なものでしょうか
-
EXCELVBAにて文字列にして「01...
-
vbsからのExcelマクロ呼び出し...
-
複数のExcelファイルにある同名...
-
Excel: ファイル名になぜ、[...
-
ファイルが移動してもリンクの...
-
FTPのgetとputの使いわけ。
-
iCloud for Windowsをアンイン...
-
VBAにおいて、ファイルの移...
-
docxをmht形式で保存したファイ...
-
Excelに貼り付けた画像を圧縮す...
-
5000個のtiffファイルをpdfへ変...
-
[Unity]シーンファイルの中が消...
-
自動で.xlsを閉じて指定フォル...
-
エクセルのファイル:「自分」が...
-
Googleドライブについて
-
htmlファイルを結合して一つの...
-
エクセルの固定範囲にCSVを貼り...
おすすめ情報