- ベストアンサー
テキストへの保存方法
N個(毎回変動します)のテキストファイルがあります。 その中に360行2列のデータがあります。 このN個のテキストを1つのテキストファイルにまとめて、 360行(2×N)列のデータにして保存したいです。 '------------------保存するプログラム------------------------- SaveName = Dir2.Path & "\" & Nam & ".txt" Open SaveName For Output As #1 For i Write #1, V1(1,i),VRMS(1,i),V1(2,i)・・・V1(N,i),VRMS(N,i) next i Close #1 '-------------------------------------- 上のプログラムの4行目 Write #1, V1(1,i),VRMS(1,i),V1(2,i)・・・V1(N,i),VRMS(N,i) ですが毎回変動するため何列になるかわかりません。 行の場合でしたらFor NEXTを使えばよいと思うのですが、 横に増えてい場合どのようにすればよいのでしょうか? VB6で作成しています。 アドバイスよろしくおねがいします。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- エクセル2003のVBAで列を指定
エクセルで特定の列の2~10行目に対して、ある作業をする場合、列を指定する方法は以下のどれがいいでしょうか?あるいはもっといい方法があれば教えてください。 実際には列は約40列(固定)、行は1~2万行(変動)程度で、作業はもっと複雑です。 Sub test01() Dim col Dim i As Long, n As Long For Each col In Array(1, 3, 7, 8, 11) '列番号で指定 For i = 2 To 10 n = n + 1 Cells(i, col).Value = n Next i Next col End Sub Sub test02() Dim col Dim i As Long, n As Long For Each col In Array("A", "C", "G", "H", "K") '列の記号で指定 For i = 2 To 10 n = n + 1 Cells(i, col).Value = n Next i Next col End Sub Sub test03() Dim col Dim i As Long, n As Long For Each col In Range("A2,C2,G2,H2,K2") 'セルで指定 For i = 2 To 10 n = n + 1 col.Offset(i - 2).Value = n Next i Next col End Sub
- ベストアンサー
- その他MS Office製品
- さっきのバイナリ→テクスト
FP1 = FreeFile Open Text1.Text For Binary As #FP1 FP2 = FreeFile Open Text3.Text For Output As #FP2 Do While (Not (EOF(FP1))) For i = 1 To 128 Get #FP1, , Bwk(i) Next i flg = 0 If j(1) <> "" Then Swk = Right("00" & Trim(Hex(Bwk(1))), 2) & Right("00" & Trim(Hex(Bwk(2))), 2) For i = 1 To 5 If j(i) <> "" Then If j(i) = Swk Then flg = 1 Exit For End If End If Next i Else flg = 1 End If If flg = 1 Then Swk = "" For i = 1 To 128 Swk = Swk & Right("00" & Trim(Hex(Bwk(i))), 2) Next i Print #FP2, Swk End If Loop Close MsgBox "完了" End Sub 上のプログラムでどこで変換してるのかがわからないんです。誰か教えてください。
- 締切済み
- Visual Basic
- 0が消える:WRITEを使ってTEXT出力
ワークシートの一部をカンマ区切りのテキストとして出力しようとしています。ワークシートには文字列と数値が混在しています。文字列は"文字列"としてする必要があります。数値はそのまま出力します。 ワークシート上で文字列あらかじめ""を付加しておくと、CSV保存の際に、""文字列""となるので、CSV形式は断念しました。 そこでVBAでWRITEを使い、 Dim i, j As Integer i = 2 j = 1 For i = 2 To 5 Write #1, Worksheets("diff").Cells(i, j).Value, Worksheets("diff").Cells(i, j + 1).Value, Worksheets("diff").Cells(i, j + 2).Value, Next i Close #1 といった感じで挑戦しています。ところが、セルの値が1より小さい数値、つまり0から始まる場合には、始めの0が消えてしまいます。 セルの値 0.**** 出力された値 .**** 「それが仕様だよ」と言う場合には、何か良い方法を教えていただけると幸いです。
- ベストアンサー
- オフィス系ソフト
- 新規テキストファイルを作成して日付名で保存したい。
すみません誰か、教えて下さい。 新規でテキストファイルを作成して、日付名で保存を しようとしたのですが、ファイル名が不正とのエラーが出ます。 どうすればいいか、教えて頂けませんでしょうか。 また、保存先の指定方法も分かりません。保存先の指定方法も あわせて教えて頂けませんでしょうか。 宜しくお願いします。 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
- ベストアンサー
- その他MS Office製品
- 列数の多いエクセルのデータをテキストファイル(スペース区切り)に変換するにはどうしたらいいでしょうか
列数の多い(200列くらい)エクセルのファイルをテキストファイル(スペース区切り)1行に保存したいのですがどのようにしたらいいのでしょうか. エクセルを普通にテキスト形式で保存すると200列 1行で保存されず,適当に折り返して3行くらいになってしまいます. 例えば 2行200列をテキストにすると 1行目 1~100列 2行目 1~100列 1行目 101~200列 2行目 101~200列 と4行になってしまいます.これを 1行目 1~200列 2行目 1~200列 のようにしたいのですが可能でしょうか.
- 締切済み
- その他MS Office製品
- VBAで「,」⇒「.」へ置換後、タグ区切りでテキスト保存したい。
VBAで「,」⇒「.」へ置換後、タグ区切りでテキスト保存したい。 お世話になっております。 VBAで下記を行いたいと考えております。 全体の流れとしては、テキストを読み込み⇒エクセル上で編集⇒テキスト保存です。 そのエクセル上で編集⇒テキスト保存で悩んでおります。 編集した複数のシートを、個別にタブ区切りのテキストファイルに保存したいと考えております。 出力する際に、小数点の「,」⇒「.」に変換します。 ※小数点を「,」として利用しています(海外対応) 編集するシートは全てのセルが文字列形式になっており、列も行も読み込むテキストによって可変なので、統一されているわけではありません。 最終行はA列ではなくB列でカウントします。 全てのセルに値が入っているわけではなく、空白もあります。 また、各セルには「0.00000」や「02.24」等の数値も入っており、数値形式にしてしまうと0が消えてしまうので、全てのセルを文字列形式として編集しています。 なお、小数点以下の桁数も可変です。 つまり、小数点が「,」となっているのを「.」になおし、タブ区切りのテキストファイルとして保存したいのです。 出力する際に、いったん別ブックに保存⇒不要なシートを削除⇒タブ区切りで保存はできたのですが、自分があまりVBAに詳しくないせいか、これでは文字列形式で保存されなかったため、シートを新規ブックにコピー⇒タグ区切りで保存に変更しました。 しかし、これではcells.replace ~で置換すると、「00,000」が「0」になってしまいました。 ※「22,222」等は問題ないのですが……何故かは分かりませんでした。 ファイルとしては20000万行~25000行程度です。 列としては40列前後になります。 あまりVBAには詳しくないので、まとはずれな事を言っているかもしれません。 何か良い方法はありますでしょうか? 宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 改行のない長いテキストをアクセスへ保存する方法
開発環境VB2008を使用しております。Multilineが有効となっているTextBoxに入力された長い文章をアクセスのテーブルへ保存するロジックがわかりません・・・。今までは、1行ごとに入力制限を設けていたので、行単位でフィールドサイズ255以下のテキストデータを保存していたのですが、文章編集の際に、ワードのように連続してるほうが使いやすいとの事から、入力方法を変更しようと思っております。 文字列を255単位で切り出して、保存していく具体的なやり方をご教授願います。
- ベストアンサー
- Visual Basic
- VBAでtextファイルを作成
マクロ・VBA初心者です。 ご教授お願いします!! 経費精算のExcelデータを画像のような「"",]で区切ったテキストファイルを作成するマクロを作りたいと考えてます。 完成イメージ:マクロのボタンを押すとテキストファイルの形でフォルダに作成される。もしくは、マクロボタンを押すとテキストファイルの形で区切ったものが表示されるものを作りたいです。 *経費精算データに関してA列からX列まであり、集計データにより列にデータを埋めていく作業が入っております。なので、A列からX1列まででデータが記入されている範囲で集計できるようにしたいと考えております。 現在は、勉強しつつ組み立てた結果、 CSVのExcelファイルをフォルダの中に作成できるようになりました。 (コードは下記に記載します) ただ、テキストファイルが作れるコードができていないのが問題です。 このコードをどのように変えればよいのか? もしくは、別のコードで出来るようならば教えていただけると嬉しく思います。 宜しくお願いします。 ______________________________ 〈コード〉 Option Explicit Sub ExcelファイルCSV形式作成() '変数宣言 Dim filePath As String Dim i As Long Dim maxRow As Long Dim fileNo As Integer '初期値設定 filePath = ActiveWorkbook.Path & "\経費計算エクセル(CSV保存).csv" maxRow = Range("A1").End(xlDown).Row '最終行取得 fileNo = FreeFile 'FreeFile関数で使用可能なファイル番号取得 'ファイル開く Open filePath For Output As #fileNo '最終行までループ For i = 1 To maxRow '列の数は決め打ち Write #fileNo, Cells(i, 1), Cells(i, 2), Cells(i, 3), Cells(i, 4), Cells(i, 5), Cells(i, 6); Cells(i, 7), Cells(i, 8), Cells(i, 9); Cells(i, 10), Cells(i, 11), Cells(i, 12); Cells(i, 13), Cells(i, 14), Cells(i, 15); Cells(i, 16), Cells(i, 17), Cells(i, 18); Cells(i, 19), Cells(i, 20), Cells(i, 21); Cells(i, 22), Cells(i, 23), Cells(i, 24) Next i 'ファイル閉じる Close #fileNo End Sub ______________________________________ 以上です。 本当に困ってます。よろしくお願します。
- ベストアンサー
- Visual Basic
- マクロの行列の掛け算ができません
エクセルでマクロ勉強中の初心者です。 マクロで行列A(3行4列)、行列B(4行2列)の掛け算のプログラム(下記)を作っているのですが 「インデックスが有効範囲にありません」というエラーメッセージが出てしまいます。 エクセルで関数(MMULT)で同様の計算をするときちんと計算できるのですが・・・。 どなたか教えてください。 よろしくお願いいたします。 Sub s1() ' 次元の設定 Dim A(3, 4), B(4, 2), C(3, 2) N1 = 3: N2 = 4: N3 = 3 ' データの入力 (行列AとBの設定) For I = 1 To N1: For J = 1 To N2 A(I, J) = Worksheets("s1").Cells(I, J) Next J: Next I For I = 1 To N2: For J = 1 To N3 B(I, J) = Worksheets("s1").Cells(I, J + 5) Next J: Next I ' ベクトルの内積 For I = 1 To N1 For J = 1 To N3 For K = 1 To N2 C(I, J) = C(I, J) + A(I, K) * B(K, J) Next K Next J Next I ' 結果の出力 For I = 1 To N1 For J = 1 To N3 Worksheets("s1").Cells(I + 6, J + 7) = C(I, J) Next J Next I End Sub
- ベストアンサー
- オフィス系ソフト
- エクセル 全通り出力
Sub test01() a = Cells(Rows.Count, "A").End(xlUp).Row 'A列最終行取得 b = Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行取得 For i = 1 To a '1行からA列最終行まで繰り返し For n = 1 To b '1行からB列最終行まで繰り返し x = x + 1 Cells(x, "C") = Cells(i, "A") & " " & Cells(n, "B") 'C列に結合して転記 Next n Next i End Sub こちら過去の解答にあったのですが、a,b,c,dに数字が入っていて、 Eに組み合わせを出力する場合どう変えればよいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 質問内容:クラウドに登録してフリーのサウンドパックをUSBにダウンロードしたのですが、ae30にインポート出来ません。「not file」になってしまいます。USBの初期化とfat32のフォーマットは済んでいます。パラメータガイドを見ても分からないので教えてください。
- 質問されている内容は、ae30にクラウドからダウンロードしたサウンドパックをインポートできない問題です。USBの初期化とfat32のフォーマットは済んでいるそうですが、「not file」となってしまいます。パラメータガイドを確認しても解決策が見つからないため、アドバイスを求めています。
- 質問内容:ae30にクラウドからダウンロードしたサウンドパックをインポートする際に問題が発生しています。「not file」となり、解決方法がわからず困っています。USBの初期化とfat32のフォーマットは済んでいます。パラメータガイドを確認しましたが、解決策が見つからず、助言をいただきたいです。
お礼
プログラムを組むことができました。 ありがとうございました。