インターネットの初心者です。

郵便番号のCSVファイルをネットからパソコンに取り込むことをVBで行いたいのですが、プログラムでどのように記述すればよいのでしょうか?

ダイアルアップ接続で接続する方法と、ファイルを取り込む方法を教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

インターネットに接続していない状態から


VBでネットに触ろうとすればたぶん自動的に
ダイアルアップ接続画面が出ると思います。
(やったこと無いので自信は無いですが・・・)

ファイルの取得方法についてはいろいろとありますが、
いちばん簡単な方法とすればフリーウェアのBASP21.DLLを
使うのが簡単だと思います。
そのDLLにW3Get関数という関数があるのでそれを使用すれば
ファイルのダウンロードが簡単にできます。
ちなみにこの関数を実行した瞬間に
ダイアルアップ接続画面が出ると思います。
切断の仕方は手作業になってしまいますが・・・。
ちなみにこの関数ではファイルのダウンロードしか行わないので、
ダウンロード完了次第、Openステートメント等で
普通にファイル操作すれば取り込むことも可能です。

BASP21.DLL
http://www.hi-ho.ne.jp/babaq/basp21.html
W3Get関数の説明
http://www.hi-ho.ne.jp/babaq/basp21.html#0041
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qvb.netでCSVファイルを変換して新しいCSVファイルを作りたいの

vb.netでCSVファイルを変換して新しいCSVファイルを作りたいのですが、どのようにすれば良いかヒントを教えていただけないでしょうか?

A組,10代,10
A組,20代,20
A組,30代,30
B組,10代,40
B組,20代,50
B組,30代,60
C組,10代,70
C組,30代,80

この様なCSVファイルを変換して

,A組,B組,C組
10代,10,40,70
20代,20,50,
30代,30,60,80

という表のようなCSVファイルを作りたいのです。
データベースなどに入れずに、ファイルtoファイルでの変換がしたいです。
最初のファイルの1列目と2列目の項目をそれぞれ配列に入れて重複をなくす位までは思いつくのですが、そこから先がどの様にすれば良いかよく分かりません。
ヒントだけでも良いのでよろしくお願いいたします。

Aベストアンサー

SortedDictionaryを使うのは如何でしょう?
Dim Q As New SortedDictionary(Of String, _
    SortedDictionary(Of String, Integer))
Qのキーは10代、20代、等の項目になります。
QのデータはSortedDictionaryで、キーはA組、B組等、
データは数値(3列目)です。
ランダムに書き込んでも、ソートされて記録されますので、
ファイルの入力処理後にFor Each文でデータを出力すれば
目的のように出力できます。

Dim A As New StreamReader("C:~.csv", _
    Encoding.GetEncoding("shift_jis"))
Dim B As New SortedDictionary(Of String, Integer)
Dim C As New SortedDictionary(Of String, _
    SortedDictionary(Of String, Integer))
Dim D As String
Dim E
Do Until A.EndOfStream
    D = A.ReadLine
    E = D.Split(",")
    If Not B.Keys.Contains(E(0)) Then B.Add(E(0), 0)
    Dim F As SortedDictionary(Of String, Integer)
    If C.Keys.Contains(E(1)) Then
        F = C(E(1))
        If F.Keys.Contains(E(0)) Then
            F(E(0)) = F(E(0)) + E(2)
        Else
            F.Add(E(0), E(2))
        End If
    Else
        F = New SortedDictionary(Of String, Integer)
        F.Add(E(0), E(2))
        C.Add(E(1), F)
    End If
Loop
A.Close()
Dim G = New StreamWriter("C:\~.csv", False, _
    Encoding.GetEncoding("shift_jis"))
For Each H As String In B.Keys
    G.Write("," & H)
Next
G.WriteLine("")
For Each H As String In C.Keys
    G.Write(H)
    Dim F As SortedDictionary(Of String, Integer) = C(H)
    For Each D In B.Keys
        If F.Keys.Contains(D) Then
            G.Write("," & F(D).ToString())
        Else
            G.Write(",0") '省略時はコメントアウト
        End If
    Next
    G.WriteLine("")
Next
G.Close()

SortedDictionaryを使うのは如何でしょう?
Dim Q As New SortedDictionary(Of String, _
    SortedDictionary(Of String, Integer))
Qのキーは10代、20代、等の項目になります。
QのデータはSortedDictionaryで、キーはA組、B組等、
データは数値(3列目)です。
ランダムに書き込んでも、ソートされて記録されますので、
ファイルの入力処理後にFor Each文でデータを出力すれば
目的のように出力できます。

Dim A As New StreamReader("C:~.csv", _
    Encoding.GetEncoding("shift_jis"))
Dim B As...続きを読む

QVBでCSVファイルを取り込み、Accessに格納する方法

VBから、csvファイルを取り込んで、Accessのテーブルに格納したいので
すが、Input# でうまくいきません。
csvファイルは、基本的に,区切りですが
1)値の両端を"でくくる。
2)値として"がある場合は、""に変換する。
という仕様です。(ExcelでCSVファイルを作るときと同じ)
3)先頭13列が、上記のような仕様
  さらに14列目から290列目までは数値データで、値を""でくくらない。
データ例として、
"aaa","""値""",""",,","""値2,,""","bbb",・・・"ccc",0,1,2,・・・,276
=== ====== ==== ========== === === = = = ===
 1 2 3 4 5 13 141516 290
1の値:aaa
2の値:"値","
3の値:",,
4の値:"値2,,"
5の値:bbb
としてテーブルに取り込みたいです。
Access2000では、255列以上は取り込めないため、
14列目以降の値を9個ずつ別レコードに分けています。
つまり、22列のテーブルにレコード化しています。
レコード1:列1~13の値+列14~22の値
レコード2:列1~13の値+列23~31の値
・・・
255列の制限は仕方ないとしても、上記のようなCSVファイルを
VBでAccessテーブルに取り込む良い方法を教えてください。

VBから、csvファイルを取り込んで、Accessのテーブルに格納したいので
すが、Input# でうまくいきません。
csvファイルは、基本的に,区切りですが
1)値の両端を"でくくる。
2)値として"がある場合は、""に変換する。
という仕様です。(ExcelでCSVファイルを作るときと同じ)
3)先頭13列が、上記のような仕様
  さらに14列目から290列目までは数値データで、値を""でくくらない。
データ例として、
"aaa","""値""",""",,","""値2,,""","bbb",・・・"ccc",0,1,2,・・・,276
=== ====== ==...続きを読む

Aベストアンサー

すいません。ちゃんと読んでませんでした。もう一度。

"aaa","""値""",""",,","""値2,,""","bbb"
をSplitでばらすと

配列0の値:"aaa"
配列1の値:"""値"""
配列2の値:"""
配列3の値:
配列4の値:"
配列5の値:"""値2
配列6の値:
配列7の値:"""
配列8の値:"bbb"

となりますので、配列0番目から順にダブルクゥオートの数
をチェックしていくことになると思います。
配列0はaaaでOK
配列1も""値""でOK(後で""を"に変換する必要あり)
配列2は"が一つなのでおかしい。
よって、配列2と3をカンマでつなぐ。(""",)
でもまだおかしいので、配列2と3と4をカンマでつなぐ。(""",,")
配列2,3,4は"",,でOK
・・・
という風に処理していくことになるかと思います。

どうでしょうか?

QVBを2008を用いてCSVを取り込む ””で区切られていない数値混入

VBを2008を用いてCSVを取り込む ””で区切られていない数値混入 文字列に,が含まれている場合がある。

題名どおりなのですが、以下のようなCSVファイルをVB2008で取り込もうと考えています。
"AAAAA",BBBBB,CCCCC,"DDDD,DDD","EEEEE","FFFFF"

(同じアルファベットが本来同じ項目のデータ、BとCは0-9の数字のみ入ります
またBCには常に””が含まれません。
Dは文字列なのですが、まれに「,」が含まれます)

下のものが現在使用しているソースですがsplitで「,」を指定しているので
当然Dが2つのデータとして認識されています。
BやCが””で囲まれていれば「”,”」で区切ればすむのですが一部が””なしなので
どうやろうか迷っています。

実現したいこととしては
""なしの時は必ず、コンマまでが1つのデータ、
""があれば""で区切られたデータが1つのデータとできればいいんですが。。。


以下ソースです。 ちなみにASPXファイルです。
(replaceDoubleQuotesというのは”を削除するための関数で無視していただいて結構です。
また以下のソースでは取り込み自体はせずにタイトル行がはいっているCSVファイルを弾く作業をしているのですが
CSVからデータを取り出す作業は同じなので短いソースを使用させてもらっています)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

Dim Reader2 As New IO.StreamReader("C:\UploadedFiles\Uriage.txt", System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim Items2() As String 'CSVの各項目を表す配列
Dim Line2 As String = Reader2.ReadLine 'CSVの一行
Items2 = Line2.Split(",")
Dim num_hantei As String = "^[0-9]+$"


If Not (Regex.IsMatch(replaceDoubleQuotes(Items2(3)), num_hantei)) Then


Dim objFSO As Object
objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile("C:\UploadedFiles\Uriage.txt", True)
objFSO = Nothing
Label1.Text = "取り込みエラー。タイトル行がはいっている可能性があります。"
Exit Sub

End If
Reader2.Close()
End Sub
Function replaceDoubleQuotes(ByVal apdata As Object) As String
'文字列に変換する
Dim tmp As String = String.Format("{0}", apdata)
'1つのダブルクォーテーションを0個に置換する つまり消去する
replaceDoubleQuotes = tmp.Replace("""", "")
End Function

VBを2008を用いてCSVを取り込む ””で区切られていない数値混入 文字列に,が含まれている場合がある。

題名どおりなのですが、以下のようなCSVファイルをVB2008で取り込もうと考えています。
"AAAAA",BBBBB,CCCCC,"DDDD,DDD","EEEEE","FFFFF"

(同じアルファベットが本来同じ項目のデータ、BとCは0-9の数字のみ入ります
またBCには常に””が含まれません。
Dは文字列なのですが、まれに「,」が含まれます)

下のものが現在使用しているソースですがsplitで「,」を指定しているので
当然Dが2つのデータとして...続きを読む

Aベストアンサー

自力でやるよりTextFieldParserクラスがお勧め
http://www.atmarkit.co.jp/fdotnet/dotnettips/487csvparser/csvparser.html

QVBでCSVファイルを読み込む方法(最速方法は?)

こんにちは。VB6.0(SP5)、Windows2000でVBの勉強をしています。
VBのテキストボックスに入力したデータをCSVファイルに保存する時、もうすでに登録されていたらエラーを出したいと思っています。
そこで、CSVファイルを読み込み、同じかどうか確認したいと思っていますが、どの方法で処理するのが早く効率的なのでしょうか。

ファイル形式・・・csvで50行×3列
-----------
aaa,1,2
bbb,3,4
・・・50行程度のデータ
-----------
テキストボックスに入力したデータ・・・例えば"ccc"

1.Open ファイル名 For Input As #fileNum でEOFまで読み、配列に入れ、その後1列目のデータが"ccc"かどうか確認する
2.Open ファイル名 For Input As #fileNum で読みながら、1列目のデータが"ccc"かどうか確認し、EOFまで繰り返す
3.DAOを利用し、SELECT文であるかないか確認する(DAO2.5)
の3つの方法を試してみましたが、あるパソコンで行うとDAOが早いのに別のパソコンだとDAOが1番遅いなど、どれが効率的なのかよくわかりませんでした。
このような処理をしたい場合、みなさんはどのような方法で処理されますか?
上記以外の方法でも構いません。アドバイスよろしくお願いします。

こんにちは。VB6.0(SP5)、Windows2000でVBの勉強をしています。
VBのテキストボックスに入力したデータをCSVファイルに保存する時、もうすでに登録されていたらエラーを出したいと思っています。
そこで、CSVファイルを読み込み、同じかどうか確認したいと思っていますが、どの方法で処理するのが早く効率的なのでしょうか。

ファイル形式・・・csvで50行×3列
-----------
aaa,1,2
bbb,3,4
・・・50行程度のデータ
-----------
テキストボックスに入力したデータ・・・例えば"ccc"

1.Open ファイ...続きを読む

Aベストアンサー

まず1はデータを一度に読み込んで作業するならバイナリ形式で読んできた方が早いと思います。

1.2はデータの取込方法をどのようにしているかによりますが、

Line Input などで読んでいるなら、配列分割方法は Splitを使えば早いと思います(instrとMID$などを利用していたら遅いので)。

3.DAOで直接ファイル操作するって事ですか? DAOはアクセス相手には早いですが、CSVなどを操作するのには向かないような……。やるならADOの方が早い気がします。やったことないので推測ですが。

あと、SELECT分の書き方によっても速度が変わると思いますが、CSVだとIndexをはってる訳ではないので、そんなに早くない気もします。

たぶんとにかくスピードを優先するなら1の方法で、かつバイナリでデータを一気にとりこんだあとにバイト単位で処理するのが一番早いと思われますが……。ま、面倒かもしれません。いまいちVBチックではないですしね。

2は最近ディスクI/Oも早くなったので、さほど差はないかと思われますが、毎回ディスクアクセスする訳なので、それほど早くはないと思われます。

ただし 同じ for Input でよむなら、2の方が早いです。


でもこの辺りの処理ですが、VBの文字列操作はとにかく遅いので、文字列操作処理を少なくするのが速くするこつだと思われます。

まず1はデータを一度に読み込んで作業するならバイナリ形式で読んできた方が早いと思います。

1.2はデータの取込方法をどのようにしているかによりますが、

Line Input などで読んでいるなら、配列分割方法は Splitを使えば早いと思います(instrとMID$などを利用していたら遅いので)。

3.DAOで直接ファイル操作するって事ですか? DAOはアクセス相手には早いですが、CSVなどを操作するのには向かないような……。やるならADOの方が早い気がします。やったことないので推測ですが。

あと、SELECT...続きを読む

QVBで別ファイルで定義したフォームを取り込むことは可能でしょうか

VBで別ファイルで定義したフォームを取り込むことは可能でしょうか

いつもお世話になります。

VBのwindowsフォームアプリケーションで開発する際、他のファイルで定義しておいたフォームレイアウトを
別のフォームに取り込むことは可能でしょうか。
やりたいことは、JavaでいうJSPのincludeのような仕組みを実現したいのです。

VBは2010です。

宜しくお願いします。

Aベストアンサー

ユーザー コントロールでは?
Java は分からないです。


人気Q&Aランキング

おすすめ情報