VBAでのCSV ダウンロードに方法ついて(文字列)
つい最近VBAを勉強し始めた素人ですが、コードの作成にあたり早くも難航しております。VBAにお詳しい方、よろしければ下記内容にてファイルを作成する場合の方法をご教示いただけないでしょうか?
CSV…カンマ区切り
データ数 46列(A~AT) レコード数 4万件(概算)
そのうち、全部のセルにデータが入っているだけではなく、空白のセルもあり。
エクセル…2003
VBAで指定ファイルを開き、CSVファイルをダウンロードしたいのですが
その際に7,8列(G,H列)のみを文字列としてダウンロードしたいです。
またファイルを読み込む際はOPEN TEXTなどの別ファイルで開くのではなく、あくまで同ファイルの違うシート内に落としたいと思っております。
一応、拙いながらに途中までは自力でコードを組んでみたのですが。。。
*******************************************************
Sub CSVダウンロード()
Const conTitle = "テキストファイルの読み込み処理"
Const conFilter = "全てのファイル(*.*),*.*"
Dim xlAPP As Application
Dim csv As String
Dim Freef As Long
Dim X(1 To 46) As Variant
Dim Gyo As Long
Dim rec As Long
Set xlAPP = Application
xlAPP.StatusBar = "読み込むファイルを選んでください"
csv = xlAPP.GetOpenFilename(Filefilter:=conFilter, _
Title:=conTitle)
If StrConv(csv, vbUpperCase) = "FALSE" Then Exit Sub
Freef = FreeFile
Open csv For Input As #Freef
Gyo = 1
Do Until EOF(Freef)
rec = rec + 1
xlAPP.StatusBar = "読み込みちゅうです。。。(" & rec & "レコード目)"
Input #Freef, X(1), X(2), X(3), X(4), X(5), X(6), X(7), X(8), X(9), X(10), X(11), _
X(12), X(13), X(14), X(15), X(16), X(17), X(18), X(19), X(20), X(21), X(22), X(23), _
X(24), X(25), X(26), X(27), X(28), X(29), X(30), X(31), X(32), X(33), X(34), X(35), _
X(36), X(37), X(38), X(39), X(40), X(41), X(42), X(43), X(44), X(45), X(46)
Gyo = Gyo + 1
Range(Cells(Gyo, 1), Cells(Gyo, 46)).Value = X
Loop
Close #Freef
xlAPP.StatusBar = False
MsgBox "ファイル読み込み終了しました!" & vbCr & _
"レコード件数=" & rec & "件", vbInformation, conTitle
End Sub
**************************************************
これを実行するとエラーコード62『ファイルにこれ以上データがありません』と表記され、デバックで
Input #Freef, X(1), X(2), X(3), X(4), X(5), X(6), X(7), X(8), X(9), X(10), X(11), _
X(12), X(13), X(14), X(15), X(16), X(17), X(18), X(19), X(20), X(21), X(22), X(23), _
X(24), X(25), X(26), X(27), X(28), X(29), X(30), X(31), X(32), X(33), X(34), X(35), _
X(36), X(37), X(38), X(39), X(40), X(41), X(42), X(43), X(44), X(45), X(46)
の部分が黄色くなります。また、途中でなぜか列がズレてしまいます。元データを見ると全て綺麗に指定のセルに収まっているのですが。
どのように書き換えるべきか思いつきません。
お手数ですが、宜しくお願いいたします。
お礼
>1番は、途中途中に元のコピーを挟む文字数がランダムなら、かなり硬いPassになると思います。 >2番は、入力文字数が解析されれば、あっさりクリアされます。(解析プログラムが作りやすい。) >3番も、1文字ずつ増えていくなら、いつかクリアされます。 増える文字数がランダムならかなり硬>いものになると思います。 一定の規則性をパスワードに持たせると破られやすくなるのですね。 見た目的には3番が一番バラバラに見えますが、解析する分には余り意味がないのですね。 >サンプルは記号が入っていますが、英数だけの物を作ってみてチェッカーにかけてみて下さい。 >多分文字数が多いので、高得点が出ると思われます。 おっしゃる通りに高得点となりました。 文字数を重要視しているみたいですね。 >変数にランダムを使わないと、解析プログラムは作りやすいです。(1文字ずつっと言うのは、安易な>考えです。) >2・3・1の順で容易<->困難と言った所でしょうか・・・・ 長くて破られにくく覚えやすいパスワードを作りたかったのですが、 1番が良いとの事なのでこれを応用して作成したいと思います! 回答ありがとうございました。