• ベストアンサー

配列をテキストファイルに書き込むことは不可能でしょうか?

Sub Macro1() Dim No As Long No = FreeFile 文字列 = "1234" Open "D:\Test.txt" For Output As #No Print #No, 文字列 Close #No End Sub 上記のMacro1の文字列の書き込みは可能なのですが Sub Macro2() Dim No As Long Dim 配列 As Variant Range("a1").Value = "1☆2☆3☆4☆" No = FreeFile 配列 = Split(Range("A1").Value, "☆") Open "D:\Test.txt" For Output As #No Print #No, 配列 Close #No End Sub だと「Print #No, 配列」で「型が一致しません」とエラーになってしまいます。 テキストファイルに配列を書き込みたいのですがどうすればいいのでしょうか? よろしくお願い致します。

  • 1hdthd
  • お礼率97% (239/244)

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

For i = LBound(配列) To UBound(配列)  Print #No, 配列(i) Next i などとすれば、書き出せます。 For Eachとか Whileとかいろいろ書き方はあると思うけど…

1hdthd
質問者

お礼

どうもありがとうございました。書き込めました!

その他の回答 (2)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

お示しの例でしたら、 配列 = Split(Range("A1").Value, "☆") の部分を 配列 = Replace(Range("A1").Value, "☆", vbCrLf) とか 配列 = Replace(Range("A1").Value, "☆", ",") にすればよいのでは?

1hdthd
質問者

お礼

どうもありがとうございました。たくさんの方法があるのですね! 勉強になります。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim No As Long Dim 配列 As Variant Range("a1").Value = "1☆2☆3☆4☆" No = FreeFile Open "D:\Test.txt" For Output As #No For Each 配列 In Split(Range("A1").Value, "☆") Print #No, 配列 Next Close #No End Sub こうゆう事ではなくて?

1hdthd
質問者

お礼

そうです! どうもありがとうございました。

関連するQ&A

  • エクセルからテキストファイルはきだし

    エクセルのひとつのシートの内容をテキスト形式で吐き出すマクロを教えてください。 エクセルでHTMLメルマガの商品名や金額を編集できるようにしたいのですが、その編集後のファイルをテキストで出すマクロのVBAの書き方を教えてください。 現在、以下で書いておりますがエクセルの中にある「$」が消えてしまいます。$が消えないような書き方を教えてください。また、""が余分についてしまう書き方は避けたいです。よろしくお願い致します。 Sub test() Dim StrFN As String StrFN = ActiveWorkbook.Path & "\data.txt" Dim i As Long, LngLoop As Long Dim IntFlNo As Integer Worksheets("HTML").Activate LngLoop = Range("a65536").End(xlUp).Row IntFlNo = FreeFile Open StrFN For Output As #IntFlNo For i = 1 To LngLoop Print #IntFlNo, Cells(i, 1) Next i Close #IntFlNo End Sub

  • 新規テキストファイルを作成して日付名で保存したい。

    すみません誰か、教えて下さい。 新規でテキストファイルを作成して、日付名で保存を しようとしたのですが、ファイル名が不正とのエラーが出ます。 どうすればいいか、教えて頂けませんでしょうか。 また、保存先の指定方法も分かりません。保存先の指定方法も あわせて教えて頂けませんでしょうか。 宜しくお願いします。 Sub 保存() Dim myFileNo As Integer Dim i As Long Dim myLastRow As Long Dim IMA As String IMA = Now & ".txt" Worksheets("内容").Activate myLastRow = Range("A1").CurrentRegion.Rows.Count myFileNo = FreeFile Open IMA For Output As myFileNo For i = 1 To myLastRow Write #myFileNo, Cells(i, 3) Next i Close #myFileNo End Sub

  • エクセル VBA テキストデータ書きだし

    お世話になっております。 エクセルのデータに記入したデータをテキストに書き出したいのですが、検索した結果、 A列だけテキスト化には成功したのですが、複数列(A-U)までコピーしたいのです。 シート名"メール" テキスト名"テキスト" 申し訳ございませんが、よろしくお願いします。 Sub テキスト() Dim StrFN As String StrFN = ActiveWorkbook.Path & "\テキスト.txt" Dim i As Long, LngLoop As Long Dim IntFlNo As Integer Worksheets("メール").Activate LngLoop = Range("a65536").End(xlUp).Row IntFlNo = FreeFile Open StrFN For Output As #IntFlNo For i = 1 To LngLoop Print #IntFlNo, Cells(i, "A") Next i Close #IntFlNo End Sub

  • 以前EXCELで縦に並んだデータをテキストファイルでカンマ、シングルク

    以前EXCELで縦に並んだデータをテキストファイルでカンマ、シングルクォテーションで区切り横一列に並べ変えたい。というような質問をさせていただき下記のサンプルをいただきました。 Sub Sample21()  Dim myArr As Variant  Dim n As Long  myArr = Range("A1:A10")  n = FreeFile  Open "D:\Test.txt" For Output As #n   Print #n, "'" & Join(Application.WorksheetFunction.Transpose(myArr), "','") & "'"  Close #n End Sub 少しrangeの部分など編集して使用できていたのですが2点ほど修正を加えたいのでどなたかお助け下さい。 (1)test.txtと名前が固定ではなく名前を付けて保存させたい。 (2)空白セルの分もシングルクウォーテーションとカンマがついてしまう 例)AAA   BBB   CCC の場合テキストに'AAA','BBB','CCC','','','','','','',''と出てきてしまう。 VBAは初心者です。いろいろなサイトを調べ勉強し、編集していましたが煮詰まってしまっています。 どうかよろしくお願いします。できればロジックの説明も入れていただければ幸いです。

  • テキストファイルを読み込み 偶数行の特定の文字を置換するには?

    お世話になります。 vb6なんですけどテキストファイルを読み込んで 偶数行のある文字を置換したいんですけど このサンプルをどういう風に改変して偶数行の文字列をある文字列に 置換するコードを書いてよいのかわかりません。 置換するのはreplace関数を使うと思うのですが。 教えて下さい。お願いします。 Dim n As Long, tmp As String n = FreeFile Open "D:\Test.txt" For Input As #n Line Input #n, tmp Close #n

  • なぜvbaコードに「#」を付けてもエラーにならないのか?

    なぜvbaコードに「#」を付けてもエラーにならないのか? Sub Sample21() Dim n As Long n = FreeFile Open "D:\Test.txt" For Output As #n Print #n, Now Close #n End Sub というテキストファイルに書き込むマクロですが 「#n」はなぜエラーにならないのですか? 標準モジュールでは、 「#」と書くとコンパイルエラーになるのに For Output As #n だと大丈夫な理由が知りたいです。 あと、気付いた事は 「#」は「&」や「=」と同じ色で表示されます。

  • Open For Output As #nで、

    エクセルで Open For Output As #nで、 自身のファイルに文字を書き込むことはできないのでしょうか? Sub test1() Dim MyFileName As String Dim n As Long Dim i As Long, LastRow As Long MyFileName = ActiveWorkbook.FullName n = FreeFile Open MyFileName For Output As #n ‘(1) Print #n, "test" Close #n End Sub を行うと、(1)の部分で、 書き込みできません。(Error 70)になります。 エクセルに書き込む方法はいくつかありますがこの方法では書き込めないのですか? エクセルの現在のブックのシート1のセルA1に書き込みたいです。

  • ファイル書き出しのエクセルマクロ

    試行錯誤でマクロを作っているのですが、エラーが出てしまいます。 コンパイルエラー 定数式が必要ですと出てしまいます。 Const cnsFILENAME = "C:\" & の & で出ます。 どうすればいいのかお教えねがえませんでしょうか? よろしくお願いします。 (帰りに本を買って帰ります。。。) 'テキストファイル書き出す Dim S5 As Worksheet Set S5 = Worksheets("TEMP") Const cnsFILENAME = "C:\" & S5.Range("D4") & ".TXT" Dim intFF As Integer ' FreeFile値 Dim strREC As String ' 書き出すレコード内容 Dim GYO As Long ' 収容するセルの行 Dim GYOMAX As Long ' データが収容された最終行 ' 最終行の取得 GYOMAX = Range("A65536").End(xlUp).Row ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(出力モード) Open ThisWorkbook.Path & cnsFILENAME For Output As #intFF ' 1行目から開始 GYO = 1 ' 最終行まで繰り返す Do Until GYO > GYOMAX ' A列内容をレコードにセット(先頭は2行目) strREC = Cells(GYO, 1).Value ' レコードを出力 Print #intFF, strREC ' 行を加算 GYO = GYO + 1 Loop ' 指定ファイルをCLOSE Close #intFF End Sub

  • EXCELVBAでファイルにあるデータをtxtファイルに出力しようと考えています。

    EXCELVBAでファイルにあるデータを txtファイルに出力しようと考えています。 txtファイルに出力することはできましたが、 エクセルのデータを参照しません。 どうすればいいのでしょうか。 よろしくおねがいします。 ********************************** 作成したVBA ********************************** Sub test_Click() Dim fNAME As String 'ファイル名格納用 fNAME = "c:\test.txt" Open fNAME For Output As #1 **************************************************** ここにB1からB10までの値をいれようと考えています。 ループのさせ方もよくわかりません。 **************************************************** Print #1, "test1=" & Range("B1").Select & " Print #1, "test2=" & Range("B2").Select & " … Print #1, "test10=" & Range("B10").Select & " Close #1 End Sub

  • エクセルのデータを大量のテキストファイルに書き込みたい。

    エクセルの縦のセルのデータ(下のCells( 4 * j + i, 4))を繰り返しで、400個のテキストファイルに書き込みたいのですが、 下の""内のjは繰り返しせずに、j.txtとなって入力されてしまいます。なにかいい方法がありませんでしょうか。 ご協力お願いします。(ちなみにvbaは初心者です。) Private Sub CommandButton2_Click() Dim n As Long n = FreeFile Dim j As Integer For j = 0 To 399 For i = 1 To 4 a = Cells( 4 * j + i, 4) f2 = ActiveWorkbook.Path & "\j.txt" Open f2 For Append As #n Print #n, a Close #n Next i Next j End Sub 例. 1 2 3 4 5 6 7 8 9 10 12 13 1,2,3,4→1.txt 5,6,7,8→2.txt 9,10,11,12→3.txt

専門家に質問してみよう