C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: ファイル名の変更


(過去ログ 72 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■42008 / inTopicNo.1)  ファイル名の変更
  
□投稿者/ MON (4回)-(2009/10/06(Tue) 16:09:32)

分類:[VB.NET/VB2005 以降] 

度々申し訳ありません。
また分からないことが出てきたので質問させていただきます。

VBからテキストファイルの名前を変更したいのですが、
ファイル自体を「.txt」形式から「.bak」というファイルに変換したいです。

Microsoft.VisualBasic.FileSystem.Rename(HDTSYUK.txt, HDTSYUK_01.bak)

このようにプログラムを書くと
「プロシージャ呼び出しまたは引数が有効ではありません。」
というエラーメッセージが出てしまいます。

どのようにしたらよろしいでしょうか?
よろしくお願いします。

開発言語はVisual Basic2005.NETです。
引用返信 編集キー/
■42009 / inTopicNo.2)  Re[1]: ファイル名の変更
□投稿者/ ごう (50回)-(2009/10/06(Tue) 16:19:51)
> Microsoft.VisualBasic.FileSystem.Rename(HDTSYUK.txt, HDTSYUK_01.bak)

単純に、引数が「文字列型ではない」ですね。

こうしてあげましょう。↓
Microsoft.VisualBasic.FileSystem.Rename("HDTSYUK.txt", "HDTSYUK_01.bak")

文字列を直接代入するときは、「""」で囲むのを忘れずに!
引用返信 編集キー/
■42011 / inTopicNo.3)  Re[2]: ファイル名の変更
□投稿者/ MON (5回)-(2009/10/06(Tue) 16:54:22)
No42009 (ごう さん) に返信
>>Microsoft.VisualBasic.FileSystem.Rename(HDTSYUK.txt, HDTSYUK_01.bak)
>
> 単純に、引数が「文字列型ではない」ですね。
>
> こうしてあげましょう。↓
> Microsoft.VisualBasic.FileSystem.Rename("HDTSYUK.txt", "HDTSYUK_01.bak")
>
> 文字列を直接代入するときは、「""」で囲むのを忘れずに!

早速ありがとうございます。

一度教えていただいた通りにコードを修正してみたのですが、同じエラーが出ました。

ちなみに、実際のプログラム内には、

Microsoft.VisualBasic.FileSystem.Rename("" & My.Settings.IrData & "", _
"" & My.Settings.BackUpText & "01" & My.Settings.BackupExt & "")

と書いています。

「My.Settings.IrData」の中に「D:\_RKS_SHIPCHK_SYS\HDTSYUK.txt」
「My.Settings.BackUpText」の中に「HDTSYUK_」
「My.Settings.BackUpExt」の中に「.bak」

が入っています。

何がおかしいのか、調べてはみたのですがイマイチ分かりませんでした。
申し訳ありませんが、もう一度ご回答の方お願いします。
引用返信 編集キー/
■42012 / inTopicNo.4)  Re[3]: ファイル名の変更
□投稿者/ ごう (51回)-(2009/10/06(Tue) 17:05:32)
2009/10/06(Tue) 17:06:30 編集(投稿者)

No42011 (MON さん) に返信

Microsoft.VisualBasic.FileSystem.Rename("" & My.Settings.IrData & "", _
"" & My.Settings.BackUpText & "01" & My.Settings.BackupExt & "")

ちがうよー(汗


Microsoft.VisualBasic.FileSystem.Rename(My.Settings.IrData, My.Settings.BackUpText & "01" & My.Settings.BackupExt)

こうしてみてください。

文字列型の変数に文字列を代入するときは
Dim strTest As String
strTest = "文字列" って入力しますよね。

関数の引数に直接文字列を入力するときは
たとえば、以下のような感じで「""で囲んで」記述するんです。
Microsoft.VisualBasic.FileSystem.Rename("D:\_RKS_SHIPCHK_SYS\HDTSYUK.txt", "D:\_RKS_SHIPCHK_SYS\HDTSYUK.bak")

※文字列は""で囲む必要がありますが、  ※
※文字列型変数は""で囲んではいけません。※

MONさん、失礼ながら、文字列と文字列型の変数の認識があやふやな感じに見えました。
その辺のところ、復習しておいてください。
もし言ってることの意味が良く分からなかったら質問してください。
 

引用返信 編集キー/
■42013 / inTopicNo.5)  Re[4]: ファイル名の変更
□投稿者/ MON (6回)-(2009/10/06(Tue) 17:11:43)
No42012 (ごう さん) に返信
> ■No42011 (MON さん) に返信
>
> Microsoft.VisualBasic.FileSystem.Rename(My.Settings.IrData, My.Settings.BackUpText & "01" & My.Settings.BackupExt)
> ↑
> こうしてみてください。

このように記述しましたが、また同じエラーが発生しました。(汗
何が間違っているんでしょうか…。
エラー内容を調べたのですが、

「使用できる値の範囲を超えている引数がないかどうかを確認します。」

とされていて、何をどうしたらいいのかよく分からないです…。

> MONさん、失礼ながら、文字列と文字列型の変数の認識があやふやな感じに見えました。
> その辺のところ、復習しておいてください。
> もし言ってることの意味が良く分からなかったら質問してください。

おっしゃっていることは分かります。
確かに基本知識の薄い中で開発を行っているため、このような初歩的なミスを
何度もしてしまい、お恥ずかしいです…。
もっと基本的なことをしっかり勉強したいと思います。
引用返信 編集キー/
■42014 / inTopicNo.6)  Re[5]: ファイル名の変更
□投稿者/ ごう (52回)-(2009/10/06(Tue) 17:23:37)
No42013 (MON さん) に返信
> ■No42012 (ごう さん) に返信
>>■No42011 (MON さん) に返信
>>
>>Microsoft.VisualBasic.FileSystem.Rename(My.Settings.IrData, My.Settings.BackUpText & "01" & My.Settings.BackupExt)
>>↑
>>こうしてみてください。
>
> このように記述しましたが、また同じエラーが発生しました。(汗
> 何が間違っているんでしょうか…。
> エラー内容を調べたのですが、
>
> 「使用できる値の範囲を超えている引数がないかどうかを確認します。」
>
> とされていて、何をどうしたらいいのかよく分からないです…。

なぜでしょう???
私にも分からないです・・・
直接文字列で指定した場合はどうなりますか?
(これに成功した場合、文字列変数の演算をする部分で間違っている可能性が高いです)

Microsoft.VisualBasic.FileSystem.Rename("HDTSYUK.txt", "HDTSYUK_01.bak")

後もう一つ確認です。
「D:\_RKS_SHIPCHK_SYS\HDTSYUK.txt」と同じディレクトリ(フォルダ)に「HDTSYUK_01.bak」を保存したいんですよね?



> もっと基本的なことをしっかり勉強したいと思います。
がんばってください o(^_^)o
引用返信 編集キー/
■42015 / inTopicNo.7)  Re[6]: ファイル名の変更
□投稿者/ MON (7回)-(2009/10/06(Tue) 17:31:22)
No42014 (ごう さん) に返信
> 直接文字列で指定した場合はどうなりますか?
> (これに成功した場合、文字列変数の演算をする部分で間違っている可能性が高いです)
> ↓
> Microsoft.VisualBasic.FileSystem.Rename("HDTSYUK.txt", "HDTSYUK_01.bak")

直接文字列で指定した場合も同じエラーが発生しました;;

> 後もう一つ確認です。
> 「D:\_RKS_SHIPCHK_SYS\HDTSYUK.txt」と同じディレクトリ(フォルダ)に「HDTSYUK_01.bak」を保存したいんですよね?

そうです!!

>>もっと基本的なことをしっかり勉強したいと思います。
> がんばってください o(^_^)o

ありがとうございます^^
引用返信 編集キー/
■42016 / inTopicNo.8)  Re[6]: ファイル名の変更
□投稿者/ ごう (54回)-(2009/10/06(Tue) 17:39:19)
> 後もう一つ確認です。
> 「D:\_RKS_SHIPCHK_SYS\HDTSYUK.txt」と同じディレクトリ(フォルダ)に「HDTSYUK_01.bak」を保存したいんですよね?

もしこれがYesだとしたら、(確認してないので恐縮ですが)

Dim strOldFileName As String
strOldFileName = CStr(My.Settings.IrData) ' 文字列型(String型)変数かどうか確認してください

Dim strDirectoryName As String
strDirectoryName = System.IO.Path.GetDirectoryName(strOldFileName)
Dim strOldFileName As String
Dim strNewFileName As String
strNewFileName = strDirectoryName & "\" & My.Settings.BackUpText & "01" & My.Settings.BackupExt
' ↑
' strNewFileName = "D:\_RKS_SHIPCHK_SYS\HDTSYUK_01.bak"と同じ意味

Microsoft.VisualBasic.FileSystem.Rename(strOldFileName, strNewFileName)

次の返信は20時以降になります。

引用返信 編集キー/
■42017 / inTopicNo.9)  Re[7]: ファイル名の変更
□投稿者/ ごう (55回)-(2009/10/06(Tue) 17:41:49)
No42015 (MON さん) に返信
> ■No42014 (ごう さん) に返信
>>直接文字列で指定した場合はどうなりますか?
>>(これに成功した場合、文字列変数の演算をする部分で間違っている可能性が高いです)
>>↓
>>Microsoft.VisualBasic.FileSystem.Rename("HDTSYUK.txt", "HDTSYUK_01.bak")
>
> 直接文字列で指定した場合も同じエラーが発生しました;;

そうですか・・・ 
では、これをためしてみてください。
Microsoft.VisualBasic.FileSystem.Rename("D:\_RKS_SHIPCHK_SYS\HDTSYUK.txt", "D:\_RKS_SHIPCHK_SYS\HDTSYUK_01.bak")

では、お返事は20時以降に書きます。(つきっきりで回答してあげられなくてすみません)
引用返信 編集キー/
■42019 / inTopicNo.10)  Re[8]: ファイル名の変更
□投稿者/ ヴァン (8回)-(2009/10/06(Tue) 17:55:25)
こんにちは。

まず FileExist を使って、
元ファイルがあるか確認して、
次に変更予定のファイル名が無いことを確認してみてはどうでしょうか?


引用返信 編集キー/
■42030 / inTopicNo.11)  Re[7]: ファイル名の変更
□投稿者/ ごう (57回)-(2009/10/06(Tue) 20:24:04)
2009/10/06(Tue) 20:36:39 編集(投稿者)
私のPCのDドライブに「_RKS_SHIPCHK_SYS」ってディレクトリと、
その下に「HDTSYUK.txt」ってテキストファイルと作ってやってみました。

以下のコードで、動きましたよ。

        Dim IrData As Object
        Dim BackUpText As Object
        Dim BackUpExt As Object

        IrData = "D:\_RKS_SHIPCHK_SYS\HDTSYUK.txt"
        BackUpText = "HDTSYUK_"
        BackUpExt = ".bak"

        Dim strOldFileName As String
        strOldFileName = CStr(IrData)  ' 文字列型(String型)変数かどうか確認してください

        Dim strDirectoryName As String
        strDirectoryName = System.IO.Path.GetDirectoryName(strOldFileName)

        Dim strNewFileName As String
        strNewFileName = strDirectoryName & "\" & CStr(BackUpText) & "01" & CStr(BackUpExt)
        ' ↑
        ' strNewFileName = "D:\_RKS_SHIPCHK_SYS\HDTSYUK_01.bak"と同じ意味

        Microsoft.VisualBasic.FileSystem.Rename(strOldFileName, strNewFileName)

コード中の
IrData は My.Settings.IrData
BackUpText は My.Settings.BackUpText
BackUpExt は My.Settings.BackUpExt
に読み替えてください。

たぶん、
My.Settings.IrData
My.Settings.BackUpText
My.Settings.BackUpExt
これらがString型ではないのであれば、CStr関数を使ってString型にしてやればいいと思います。

また、"D:\_RKS_SHIPCHK_SYS\HDTSYUK.txt"が存在しないとき(わざとHDTSYUK.txtを作らなかったとき)は、
「'System.IO.FileNotFoundException' のハンドルされていない例外が Microsoft.VisualBasic.dll で発生しました。
追加情報: ファイルが見つかりません。」というエラーが出ました。

「使用できる値の範囲を超えている引数がないかどうかを確認します。」ってエラーはでなかったので
当方では再現できませんでした。
まだ、エラーが発生する場合は、エラーの内容をもう少し鮮明に書いてもらえませんか?
よろしくね。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -