- ベストアンサー
VBAで2変数の差分を取る方法 その2
- VBAで2変数の差分をシートに入れる方法がわからない
- fumufumuさんの変数bufをシートに一行ずつ入れる方法を教えてください
- Splitを使って試したが上手くいかなかった
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>OpenAsTextStreamで開きReadAllで読み込んだbufの中身は配列になっているのでしょうか。 bufは文字列です。(Dim buf As String で宣言してます) >Splitで色々やってみたんですが、旨くいかいなです。 Split(buf, vbCrLf)または、Split(buf, Chr(13) & Chr(10)) で文字列配列にできます。 Windowsのテキスト文章は、CR+LFで改行されます。 MacやLinux(UNIX)では違ったりします。 >この中身をシートに一行ずつ入れるにはどうするのでしょう。 Dim d() As String Dim i As Integer d = Split(buf, vbCrLf) 'bufを改行を区切り文字にして、配列へ For i = 0 To UBound(d) Sheet1.Cells(i + 1, 1) = d(i) '配列は0からで、セルは1から Next '列方向限定ですが、以下の方法もあります Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(1, UBound(d) + 1)) = d >Dim fso As New FileSystemObjectでは動かなかったので VBAの画面で、[ツール]→[参照設定]で Microsoft Scripting Runtime の参照にチェックを入れて下さい。 CreateObject("Scripting.FileSystemObject")でもいいのですが、後が楽になります。 ちなみに、VBEの入力支援機能は知ってますか? dim i as inと入力した後に、[Ctrl]+[スペース]で候補が出るとか、cellsの後に.(ドット)を押すと候補が出る機能です。 Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") では、入力画面ではどんなオブジェクトか分からず、入力支援機能は働きません。 Dim fso As New FileSystemObject と宣言した後の行で、fsoの後に.(ドット)を押すと、入力支援機能が働きます。 特に覚えていない候補が出ると楽です。
お礼
fumufumuさん、たびたびすみません。 改行コードvbCrLfですね。有り難うございます。 Scripting Runtimeにしてなかったです。 >と宣言した後の行で、fsoの後に.(ドット)を押すと、入力支援機能が働きます。 >特に覚えていない候補が出ると楽です。 そういう違いが出るんですか。 いつも一覧が出たり出なかったりするんですよね。 ありがとうございました。