csvファイルを動かすには?


ブイビー  2007-04-13 03:35:32  No: 136049

以下のプログラムを動かすには、どうしたらよいのでしょうか?
作成環境は、windows xp home,visual studio 2005-visual basic 2005です。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim xlapp As Excel.Application
        Dim strFileName As String
        Dim intFileNo As Integer
        Dim strRecBuff As String

        '読み込むCSVファイル名
        strFileName = "C:\test.csv"
        '空いているファイル番号を取得
        intFileNo = FreeFile()
        'ファイルを開く
    xlApp.Workbooks.Open(My.Application.Info.DirectoryPath & strFileName) For Input As intFileNo

        'ファイルの最後に達するまでループ
        Do Until EOF(intFileNo)
            'ファイルから読み込んだ内容を変数に保存
        Input #intFileNo, strRecBuff
            '変数の内容をイミディエイトウィンドウに表示
            Debug.Print(strRecBuff)
        Loop

        'ファイルを閉じる
        Close(intFileNo)
    End Sub

現在のところ、
For Input As intFileNo
の場所で、ステートメントの終わりを指定してくだいとのエラーがでます。

Input #intFileNo, strRecBuff
の  #  の場所でメソッドの引数は、かっこで囲む必要があります。
と、式が必要です。

Close(intFileNo)
の  intfileNo  の場所で public sub close()に対する
引数が多すぎますとのエラーがでます。

CSVファイルを読むプログラムを作ろうとしているのですが、
なかなかエラーが解消できません。
どなたか、アドバイス御願いします。


ガッ  2007-04-13 05:00:33  No: 136050

コンパイルすら通らないプログラムを実行するのには無理があるので、
こちらのサイトで勉強してください:
http://homepage1.nifty.com/rucio/main/main.htm


大吉末吉  2007-04-13 05:44:34  No: 136051

根本的な間違いをしていませんか?

> For Input As intFileNo
とか
> Input #intFileNo, strRecBuff

って、VB6とかの古いバージョンで使用していた機能や書き方ですが・・・

> 作成環境は、windows xp home,visual studio 2005-visual basic 2005です。

VB2005用ではなく、VB6用の(古い)参考書やHPを見ていたりしません?
VB6用のコードは、VB2005では、動作しません。
VB2005でプログラムをするなら、VB2005を対象にした物を使ってください。


もげ  2007-04-13 18:05:47  No: 136052

とりあえず、1行だけ。

>xlApp.Workbooks.Open(My.Application.Info.DirectoryPath & strFileName) For Input As intFileNo
構文がおかしいですが、
CSVファイルを読むだけならExcelのオートメーションは不要です。
また、
C:\test.csv  と  My.Application.Info.DirectoryPath を連結したら、
C:\test.csvC:\Documents and Settings\ユーザ名以下省略〜
みたいな意味不明な文字列になりますよね?

たとえば、
このようにDebug.Printでイミディエイトウィンドウに表示してみると、
誤りを発見できると思いますよ。
Dim strFileName As String = "C:\test.csv"
Dim strDirName As String = My.Application.Info.DirectoryPath
Debug.Print(strDirName)
Debug.Print(strFileName)
Debug.Print(strDirName & strFileName)

Debug.Print(System.IO.Path.GetFileName(strFileName))
Debug.Print(System.IO.Path.Combine(strDirName, System.IO.Path.GetFileName(strFileName)))


ブイビー  2007-04-13 18:22:49  No: 136053

なるほど。
>大吉末吉
vb6とvb2005では、使用する構文が異なるのですね・・・。

>もげ
こんな検証方法があるんですね。
早速試してみました。なるほどです。
勉強になりました。

目標とするものができたら、解決とさせていただきます。
それまで、少々お待ちを。


特攻隊長まるるう  2007-04-13 19:55:27  No: 136054

VBのバージョンによる構文の違いを間違わないためにも、
まずはヘルプ(MSDN)で確認するクセを付けてください。

[CSVとは]
http://e-words.jp/w/CSV.html
CSVファイルの実体は、テキストファイルです。
(Excelのファイルではありません。)

テキストファイルの入出力は、プログラムの基本ですので
ヘルプにサンプルコードも載ってます。
『テキストファイル』などのキーワードによる検索で
辿り付く事が可能です。
[方法 : ファイルにテキストを書き込む]
http://msdn2.microsoft.com/ja-jp/library/6ka1wd3w(VS.80).aspx
[方法 : ファイルからテキストを読み取る]
http://msdn2.microsoft.com/ja-jp/library/db5x7c0d(VS.80).aspx


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加