• 締切済み

指定ファイル内の指定場所へセルの内容を記載したい

エクセルマクロ初心者です。 今、指定ファイル内の指定場所へセルの内容を記載するマクロを考えています。 指定ファイルは.txtではなく、Notepadやメモ帳等で開くことができるファイルです。 仮にtest.abc(拡張子が.abc)とします。 先ほどセルといいましたが、正確にはA列、B列です。行は複数ありA列とB列の行数は同一です。 i=1から始まり、空白行まで進んだら処理は終了です。 指定ファイルの存在場所は決まっています(C:\temp\test.abc)。 test.abcは下記のようにフォーマットとして決まっており、セルA1の内容、セルB1の内容を記載したらセルA2、セルB2の内容を記載していく・・・。としたいです *set(1) *creat(1) "" *input("#abc"," セルA1の内容 ",1,2,3) *mark(1) *name(comp,"abc"," セルB1の内容 ") *sel(0) *set(1) *creat(1) "" *input("#abc"," セルA2の内容 ",1,2,3) *mark(1) *name(comp,"abc"," セルB2の内容 ") *sel(0) *set(1) *creat(1) "" *input("#abc"," セルA3の内容 ",1,2,3) *mark(1) *name(comp,"abc"," セルB3の内容 ") *sel(0) セルの内容をベタ書きするというのは検索すると出てくるのですが、ファイル内の指定場所に書き込むというのが、応用が利かずどうにも分かりません。 どうぞご教示下さい。宜しくお願い致します。

みんなの回答

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.1

サンプルで示されているデータが、多分、1つ目をコピー&ペーストした物だと思われるので、以下のプログラムは参考程度にしてください。 なお、同じファイル名で読み書きするのは、出来ないと思いますので、以下のプログラムでは、ファイル名を変えて、書き出しています。 もし、ファイル名を変えてはいけないのでしたら、いったん、ファイルを別名で書き出しておき、元ファイルを削除し、ファイル名を元ファイルと同じに、書き直すしかないのではないでしょうか? Option Explicit Sub Test() Dim l As Integer Dim q, r, s() As String Open "C:\temp\test.abc" For Input As #1 Open "C:\temp\Result.abc" For Output As #2 l = 0 Do Until EOF(1) Line Input #1, q If InStr(q, "*input(") > 0 Then l = l + 1 s = Split(q, ",") q = s(0) & "," & Chr(34) & ActiveSheet.Cells(l, 1).Value & Chr(34) & "," & s(2) & "," & s(3) & "," & s(4) ElseIf InStr(q, "*name(comp,") > 0 Then s = Split(q, ",") q = s(0) & "," & s(1) & "," & Chr(34) & ActiveSheet.Cells(l, 2).Value & Chr(34) & ")" End If Print #2, q Loop Close #1 Close #2 End Sub

関連するQ&A

  • セルの指定方法

    セルに入力されている値で、セルを指定したいのです。 たとえば セルA1に"ABC"、A2には"DEF"という文字列が入ってるとします。 B1のセルは手動で入力します。 セルC1に何か式を入れて、セルB1にA1と入力したら"ABC"、A2と入力したら"DEF"と表示するようにしたいのです。 説明がうまくできなくて住みませんがよろしくお願いします。

  • 【Excel】指定先のセルの内容に応じた表示方法

    【Excel】指定先のセルの内容に応じた表示方法 今ここに、2つのエクセルファイルがあります。 αはデータ出力用、βはデータ入力用です。 αのA列にβのB列に入力されたものを指定の形式に変換して出力させることは可能でしょうか。 例えば、βのB列には数字、★などの記号と空白セルがあります。 それをαのA列に、βのB列が数字なら○、★なら★、空白セルなら×と変換をさせた状態で表示させたいのです。 αのデータにβのデータを入れる場合は、「=指定のセルをクリック」で出来るのですが、指定の変換方式で出力できればと思い質問させていただきました。 乱文駄文で失礼致しますが、皆さん宜しくお願い致します。

  • HYPERLINKで指定セル内容で曖昧検索したい

    エクセルのHYPERLINK関数で検索文字をB2セルにを入力した場合、B2セル+*のようにセル内容で曖昧検索出来ないのでしょうか? 例えばC列にABC123、ABC-123、ABC 123、・・・のどれかで入力されているような場合、検索セルにABCと入れると該当するセルにジャンプするようにしたいのですが。 現在フィルタを使用しているのですが使い勝手が悪く何とかできないかと。 VBAでの対応でも良いのですが当方永遠のVBA初心者なのでご了承くださいませ。 検索値が「該当なし」もあり得ますのでご配慮お願いします。

  • エクセルで2つの列のセルの内容の比較と取り出し方法

    はじめまして。 エクセルの使い方を教えてください。 2つのエクセルファイル(または同じファイルの異なった)列にあるセルの内容を比較してどちらにも共通する内容のセルまたはどちらにも含まれてないセルの内容を取り出して適当なところに置く。セルの内容は文字または数字とします。 又、共通するセルは、そのセルの背景に色をつけるなどを行う。列の長さは任意とします。実際の一列の長さは1000行を超えることもあります。    例 列Aはブランクも含めて8行、列Bは3行とします「質問する」とすると列が乱れてしまいますので列の境を¥で示します   ¥ 列A ¥  列B 行1¥ 3-4 ¥ 2-4-3 行2¥ 2-4-3¥ 5-1 : ¥ 4-1 ¥ 3-4 : ¥ 5-1 ¥ : ¥ 2-5 ¥   : ¥   ¥ : ¥ 3-4  ¥ 行8¥ 23  ¥ 演算の結果 色付けは此処ではできませんのでつけません。              -並べる順序は適当とします---    ¥列A  ¥ 列B  ¥ 共通セル¥不一致セル 行1¥ 3-2 ¥ 2-4-3  ¥ 2-4-3 ¥    3-2 行2¥ 2-4-3 ¥ 5-1 ¥ 3-4 ¥ 4-1 : ¥ 4-1 ¥ 3-4 ¥ 5-1 ¥ 2-5 : ¥ 5-1 ¥ ¥ ¥ 23 : ¥ 2-5 ¥ ¥ ¥ (Blank)    : ¥(Blank)¥ : ¥ 3-4 ¥ 行8 ¥ 23   ¥ 以上よろしくお願いします。 

  • エクセルでセルを指定する方法

    A列 B列 (1)   5 (2)   10 (3)   15 (4)   7 (5)  12 エクセルでB列の最大値(この場合15)が入っているセル(B3)から2つ上のデータ(B1なので5)と2つ下のデータ(B5なので12)を足すといったセルを指定する式を教えてください。

  • ファイル名に特定の文字列を含むファイルを開きたい

    セルに「abc」という文字列があります。 このセルをダブルクリックすると、特定のフォルダ内にある abcを含むファイル(たとえば090507 abc)を開く というようなことをしたいのですが、どのようにしたらよいでしょうか。 対象セルはA列です。 たとえばA2に「abc」とあれば、A2をダブルクリックすると 特定フォルダ内のabcをファイル名に含むファイルを開く A3に「xyz」とあれば、A3をダブルクリックすると 特定フォルダ内のxyzをファイル名に含むファイルを開く といった具合です。 文字列の指定はダブルクリック以外の方法でも構いません。 知識がないものでどのようにしたらよいかわかりません。 どなたかお詳しい方、どうぞよろしくお願い致します。 (ごく簡単なマクロの知識はあります)

  • エクセル セルを参照し同じ内容を複写できずに困っています

    これができると楽になるため、よろしくお願いします。 現状のセル情報が以下の場合。    A    B    C 1 あいう  日本 2 あいう 3 かきく      JAPAN 4 かきく 5 かきく 6 さしす      ニホン 7 さしす 8 さしす 9 さしす B列を参照して入力(例ではB1に”日本”)があるときは、A1を参照する。 A1のセル内容(例では”あいう”)を参照し、A2:A9のセル内容がA1のセル内容と一致する場合は、B2にB1と同じ内容(例では"日本”)を入力するためにはどのよにすればいいでしょうか。 ※C列も同様です。 A1:C9での範囲を指定してでできればベストですが、B列、C列ごとにでもできればうれしいです。 いい方法はないでしょうか。 結果として、以下のとおりなることを望んでいます。    A    B    C 1 あいう  日本 2 あいう  日本 3 かきく      JAPAN 4 かきく      JAPAN 5 かきく      JAPAN 6 さしす      ニホン 7 さしす      ニホン 8 さしす      ニホン 9 さしす      ニホン よろしくお願いします。

  • Excelのセル指定について

    よろしくお願いします。 ************************************ A1セルに"=B4" A2セルに"=B6" A3セルに"=B8" というようにA列にB列の偶数セルを 連続で数千個導入したい。 ************************************** 簡単に入力できる方法を教えてください。

  • Excelでのセルの指定

    Excelで,下記にように セルに数字が入っていたとします.    A  B 1 | 4  3 2 | 5  5 3 | 8  4 | 5 5 | 7 6 | 6  B1に3,B2に5と入っているので,  A列のA3セルから,A5セルまでの和をとる. もし,  B1に2,B2に6と入っていれば,  A列のA2セルから,A6セルまでの和をとる. 以上のような関数は どのように定義すればよいのでしょうか? どなたか教えていただけないでしょうか? よろしくお願いします.

  • VBAの操作

    ↓の事を行いていのでうまくいきません。 アドバイスをお願いできませんか? 変更前(Sheet1); (A列) (B列) 1 ABC010 Data_010 2 ABC020 (同上) 'B1-B2は結合セル 3 ABC030 Data_020 4 ABC040 (同上) 'B3-B4は結合セル . . 変更後(Sheet2); (A列) (B列) 1 ABC010 "OK" 2 ABC020 "OK" 3 Data_010 "Comp" '追加行 4 ABC030 "OK" 5 ABC040 "OK" 6 Data_020 "Comp" '追加行 . . Sheet1(B列)に値があれば、 Sheet2(A列)に結合セルの単位で値をコピーする。 Sheet2(B列)には"OK"コメント その都度、必ず最後に行追加して結合セルの値、"Comp"コメントをコピーする. 現象は毎行、追加行が挿入されてしまいます。 Sub testVBA() Dim i Worksheets("Sheet1").Range("A:B").Copy With Worksheets("Sheet2") .Range("A1").PasteSpecial For i = 1 To 1000 If .Cells(i, 2) <> "" Then .Cells(i + 1, 1) = .Cells(i, 2) .Cells(i + 1, 2) = "Comp"   .Cells(i, 2) = "OK" End If Next i End With End Sub

専門家に質問してみよう