ExcelのデータでA列(日付データ)、C列(名前)、E列(電話番号)とある会員の電話番号を管理しているデータがあります。毎回このデータをテキストファイルに値貼付けしているのですが、マクロで作成できないでしょうか?
このデータは毎回会員数が違うので、データが入力されている行までを選択してテキストファイルへ値貼付けできればありがたいです。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

#2のものです。

CSVファイルを作るとして述べます。
シートにコマンドボタンを1つ貼りつける。
そのコマンドボタンをダブルクリックして出てくる
コマンドボタンのClickイベントプロシージュアに下記を貼りつける。
デザインモードを脱して、
保存したいシートのセルの範囲を範囲指定して、ボタンをクリック。
Private Sub CommandButton1_Click()
Open "c:\my documents\aabb1.csv" For Output As #1
t = Selection.Row
b = Selection.Rows.Count
For i = t To t + b - 1
a = Cells(i, "A")
c = Cells(i, "C")
e = Cells(i, "E")
Write #1, a, c, e
Next i
Close #1
End Sub
sss",444,"京都"
"ddd",555,"名古屋"
"ddd",666,"浜松"
と言うようなファイルが出来ました。
「シートのセルの範囲を範囲指定させて」保存実感を持たせていますが、それをさせないで、最下行まで保存するなら
(略)
b = Range("a1").CurrentRegion.Rows.Count
For i = 1 To b
(略)
のようにしてください。
    • good
    • 0

下記のどれがご希望ですか。


(1)エクセルの1シートデータの「全部を」1本のテキストファイルに保存。
(2)エクセルの1シートデータの「一部を」、1本のテキストファイルに保存。本日分のみなど。
(3)今あるテキストファイルの中間行または最後行以後に、エクセルの1シートデータを全部または一部を挿入。
前日までのテキストファイルに追加。
(4)メモ帳のようなエディタに既存テキスト文書を開いて、任意の行に挿入。
「値貼りつけ」と言う表現からすると(4)のようにも取れるがどれでしょう。
(1)から(4)にしたがって、プログラムが難しくなりそう。#1のご回答は(1)のようですが。

この回答への補足

回答ありがとうございます。
(2)が希望です。会員データがありその中のA列,C列,E列のデータを貼り付けたいのです。ただ日によって会員数(行)が違います。データが入っている分だけテキストファイルに貼りつけたいのです。

補足日時:2003/09/09 13:50
    • good
    • 0

こんにちは



手続き的な部分をかなり端折っていますが・・・

Sub TXT_Create()
Open "Dirve名:Path名\File名" For Output As #1
Do
i = i + 1
日付データ = Sheets("シート名").Range("A" & i)
名前 = Sheets("シート名").Range("C" & i)
電話番号 = Sheets("シート名").Range("E" & i)
If 日付データ = "" Then Exit Do
Print #1, 日付データ, 名前, 電話番号
Loop
Close #1
End Sub

でいかがでしょう?
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテキストボックスのコピー

テキストボックスの中に、テキストボックスを挿入したものを、コピーして貼り付けようとすると、一つのテキストボックスしかコピーできません。

結果、いちいち、テキストボックスを一ずつコピーする事態になってしまいます。

全てコピーするにはどうしたらいいでしょうか?

Aベストアンサー

lily913 さん、こんばんわ。

「テキストボックスを挿入したものを、コピーして貼り付けようとすると、一つのテキストボックスしかコピーできません。」とのことですが、テキストボックスを作成し、中に文章を記入し、CTRLキーを押しながら、所定のところへ貼り付け、今度はそのテクストボックスの縁にマウスを置き、一回左クリックして縁や角に丸が出てきたら、右クリックしてグループ化を選択して、下のテキストボックスにも同じことをする。
そして、今度はCTRLキーを押しながら、マウスを左でドラッグ(長押し)ながら、所定の場所に張り付ける。こうすれば、手間をかけずに同じテキストボックスを多く貼り付けることができます。

QExcel関数  A列の値とC列の値の間であればD列の値が抽出される関数

いつもお世話になっております。
F1にある数値を入れ、その数値が一覧表の中の範囲にマッチすればその数値を集計表シートのセルG1に反映したいのです。
例えば
A B C D E F G
1    1 ~ 1000  70 1200 ?
2  1001 ~ 1500  85
3  1501 ~ 2000  92
というような表があるとします。
F1に「1200」と入力するとG1には「85」と出るようにするにはG1にどのような関数を入れたらいいでしょうか。
必要があれば左の数値と~、右の数値は便宜上3列に分けて入力しています。
宜しくお願い致します。

Aベストアンサー

VLOOKUP関数でできます。

求める数値がD列にあるとします。
F1の値を $A$1:$D$3の範囲の左端の列から検索して、D列(検索範囲の4列目)の値を求めます。
セルG1に
=VLOOKUP(F1,$A$1:$D$3,4,TRUE)

一覧表を分かりやすくするために3列に分けているのだと思いますが、
値を求めるだけなら、B列、C列の「~1000」などは不要です。
B列、C列を削除して、「70,85,92・・・」をB列にしておけば
=VLOOKUP(F1,$A$1:$B$3,2,TRUE)
で求められます。

VLOOKUP関数をヘルプで参照していただくとわかると思いますが、
>TRUE を指定するか省略すると、検索値 が見つからない場合に、検索値 未満で最も大きい値が使用されます。
検索値が1200の場合、1200はA列にありませんが、1200未満でもっとも大きい値「1001」に対応する「85」が得られます。

Qテキスト形式でコピーアンドペーストする方法

 ワードのファイルからワードのファイルへコピーアンドペーストする際には、フォントや文字の大きさなどの情報も一緒にコピーされてしまいます。テキストだけをコピーアンドペーストするために、いったんエディタを開きテキストファイルにする、という面倒な操作をしていましたが、テキストだけをコピーアンドペーストする簡単な方法はないでしょうか? 

Aベストアンサー

No3さんのお礼欄をみると、Wordのバージョンが2002以降のようですね。

1回でテキスト貼り付けならマクロを使ってみては。
作ったマクロをツールバー上にボタンにすれば、
ワンクリックで出来ますから。


テキスト貼り付け後の改行あり
=================================================

Sub テキスト貼り付けと改行()
'貼り付け後に改行
Selection.PasteAndFormat (wdFormatPlainText)
Selection.TypeParagraph
End Sub

=================================================


テキスト貼り付けのみ
================================================

Sub テキスト貼り付け()
'貼り付け後の改行なし
Selection.PasteAndFormat (wdFormatPlainText)
End Sub

================================================

上記の2つのマクロは[新しいマクロの記録]で記録したものです。

No3さんのお礼欄をみると、Wordのバージョンが2002以降のようですね。

1回でテキスト貼り付けならマクロを使ってみては。
作ったマクロをツールバー上にボタンにすれば、
ワンクリックで出来ますから。


テキスト貼り付け後の改行あり
=================================================

Sub テキスト貼り付けと改行()
'貼り付け後に改行
Selection.PasteAndFormat (wdFormatPlainText)
Selection.TypeParagraph
End Sub

=================================================


テ...続きを読む

Qエクセルの関数です。一列目で指定した値の間で、二列目で指定した値を示す、一列目の最初の値を求める。

エクセルの関数です。
一列目で指定した値の間で、二列目で指定した値を示す、一列目の最初の値を求める関数を教えてください。
添付した図で、具体的に説明します。
A列に値(時間)、B列に値があります。
この配列の中から、
F4の値(時間)と同じ値(時間)を示すA列の行から、F5の値(時間)と同じ値(時間)を示すA列の行までの中で、
F3の値と同じ値がB列にある、A列の値(時間)の内、
A列で上から最初の値(時間)
です。

min、offset、index、match を組み合わせてみるのですが、うまくいきません。
どうぞよろしくお願いします。

Aベストアンサー

こんにちは!

画像の配置でF6セルに「7」という結果が返れば良い訳ですかね?

少し長くなりますが、
=INDEX(INDIRECT("A"&MATCH(F4,A:A,0)&":A"&MATCH(F5,A:A,0)),MATCH(F3,INDIRECT("B"&MATCH(F4,A:A,0)&":B"&MATCH(F5,A:A,0)),0))
という数式を入れてみてください。

※ F3セルは質問に載っていないので余計なお世話かもしれませんが
同じようなやり方で
=MAX(INDIRECT("B"&MATCH(F1,A:A,0)&":B"&MATCH(F2,A:A,0)))
という数式になると思います。

※ エラー処理はしていません。m(_ _)m

Qフォルダ名やファイル名、テキストドキュメント名のタイトルだけコピーする方法?

前から面倒でタイトルのようにフォルダ名やファイル名をコピーする方法
がないのかなと思っていたのですが、なにか良い方法はないでしょうか?
またテキストドキュメントもよく利用するのですが、そのままテキストドキュメントの
コピーではなくタイトルだけコピーして、別のテキストドキュメントのタイトルにタイトルだけ
コピーする方法はないのでしょうか?

よく、一部だけ変更して別のテキストドキュメントに保存するのですが
そうするとタイトルが長くなり、タイトルつけるだけでも結構面倒に
なるので、タイトルだけコピーしてタイトルを一部変更して
保存できれば楽だなと思ったのですが、なにか良い方法は
ないでしょうか?

つまり、新規テキストドキュメント>タイトル消す>別に作成したテキストドキュメントから
タイトルだけコピー>さっき消した新規テキストドキュメントのタイトルに貼り付け>
>タイトル一部変更保存>という流れでやりたいのですが。

応用してフォルダ名だけコピーファイル名だけコピーとかできれば面倒でなくなるのですが。

説明がわかりづらいと思いますが良い方法があれば回答よろしくお願いします。

前から面倒でタイトルのようにフォルダ名やファイル名をコピーする方法
がないのかなと思っていたのですが、なにか良い方法はないでしょうか?
またテキストドキュメントもよく利用するのですが、そのままテキストドキュメントの
コピーではなくタイトルだけコピーして、別のテキストドキュメントのタイトルにタイトルだけ
コピーする方法はないのでしょうか?

よく、一部だけ変更して別のテキストドキュメントに保存するのですが
そうするとタイトルが長くなり、タイトルつけるだけでも結構面倒に
なる...続きを読む

Aベストアンサー

[名前を付けて保存]ダイアログで、既存のファイルから[ファイル名]を
コピーしたいのですね。
以下で説明する私が使っている方法でよければ試してみてください。

[名前を付けて保存]→[名前を付けて保存]ダイアログにて保存をしたい
フォルダが開いた状態にする→[ファイル名]でカーソルが点滅した状態
でコピーしたいファイル名を右クリック→[ファイル名]に名前がコピー
されたら一部を変更して[保存]。

上記手順で右クリックしたときに右クリックメニューが表示されますが
そのまま[ファイル名]のところをクリックすれば消えますので変更する
部分だけ追加などをします。

Q(Excel)範囲中のデータのうち条件に該当するデータのセルの行番号・列番号を取得したいのですが

例えば、B2からF5の範囲にデータが入力されていて、このうち条件に該当するデータ(最大値)のセルの行番号・列番号を取得したいのですが何か良い方法はありますでしょうか。
最大値のセルをアクティブにする方法が分かれば問題は解決するのですが、調べてみても答えが見つかりませんでした。
また、他に良い方法があればぜひともよろしくお願いします。
回答はVBAでもワークシート関数でも、どちらでも結構です。

ExcelはExcel2000、OSはWindows2000を使用しています。

Aベストアンサー

最大値のセルをアクティブにするんですよね?
では関数では無理なのでVBAで。

Sub test()
Dim x, c
x = Application.Max(Range("B2:F5"))
Set c = Range("B2:F5").Find(What:=x, LookIn:=xlValues, LookAt:=xlWhole)
MsgBox c.Address(0, 0) & "セルが最大値です。セレクトします。"
c.Select
End Sub

QホームページビルダーV9 ver9030でテキストコピー&ペースト

ホームページビルダーV9 ver9030をつかってます。

・編集スタイル、エディターで、ページ編集メニューを使って編集していますが、ページ編集メニュー内のテキストデータを右クリックコピーしたら、バックのタグごとコピーされてしまって、そのままペーストするとタグがそのままテキスト化されて貼り付けされてしまいます。

「テキスト」という文字をコピーしてペーストすると

<A href="#" class="hpb-vmenu1-link1">テキスト</A>

というようなタグが付いてくる


<質問>

タグなしでテキストコピー&ペーストする方法はありますか?

よろしくお願いいたします。

Aベストアンサー

リンクのある文字列なら、
選択-コピーした後、
編集メニューの 形式を指定して貼り付け の HTMLとして
を選ぶとテキストだけ貼り付けることが出来ます。
(リンクは付きます)。

Q【EXCEL】条件付き書式、A列、C列、D列、E列が同じ値の時にB列の背景色を変えたい

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青になると思うのですが実際の結果は画像の通りです。

先の話の通りA列、C列、D列、E列の値が同じ時だけ
B列のセルの背景を青にしたい場合はどうい数式になるのでしょうか?

すいませんが、詳しい方、数式(関数?)で説明できる方よろしくお願い致します。

追記
可能でしたらA列、C列、D列、E列が空白の時はB列の背景色をなしにしたいと思っております。
→A列、C列、D列、E列に値があって、かつ同じ値の場合のみB列の背景を青にしたいです。

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青にな...続きを読む

Aベストアンサー

AND関数を使えば判定ができるのでは?
 =AND(A2<>"",A2=C2,C2=D2,D2=E2)

A列には常に判定する数値が入っているなら「A2<>""」は不要です。

参考サイト
http://www.relief.jp/itnote/archives/003940.php

QWord2007で、テキストボックスのコピー

Word2007で、テキストボックスに一人一行で60名の氏名を並べています。ほぼA4縦置きにして
左側に上から下まで続いています。ここまで希望通りになっています。
次に、このテキストボックスを別のファイルにコピーすると、文字サイズと行間が大きくなり、10名分が表示範囲から外れてしまいます。

コピーの要領は
二つのWord2007ファイルを読み込み、一方は最小化し、もう一方を表示させて、表示―整列から
二つを同時表示し、コピーするテキストボックスをクリックし、「ここにコピー」し、それをもう一方へドラッグしております。
A4に収まっていたのが収まらなくなりました。ここで、コピーの場合はコピー元かコピー先に合わすのを選択できましたが、このテキストボックスではこの選択ができません。やり方が悪いのでしょうか?よろしくお願いします。

Aベストアンサー

>60枚を印刷してすぐに1枚ずつに印を付けて、その名前の人に渡しております。
>この名前をテキストボックスに入れて、次の月用にコピーしております。
>それで、この意図はお分かりでしょうか?

>名簿は古い場合があるので、今までは、最新版がある他の月のものをコピーしてきました。
>問題にしているのはこの名簿のテキストボックスを他のファイルにコピーするときの問題です。

根本的には名簿を次月用に残したいということですね
恐らくこの不具合はWordのページ設定で、余白(少なくする)・行間(行数を増やす)などの設定で直るとは思いますが、
質問者さんのWord文書がどのような構成になっているかが解りませんので代案です。

1.来月用は(先の回答に加え)ファイルごとコピーしたものを、不要な部分を削除しテキストボックスだけ残す。
2.又は、テキストボックスの中だけをコピーして新しいWord文書に貼りつけておき、次月はその部分を(テキストボックスが必ずしも必要ではないように感じますが)新たにテキストボックス内に貼りつけする。

もう一つ、こういう場合は差し込み印刷という手法を使うと、一枚一枚チェックし印を付けるなどの手順が不要になります。こちらも覚えると便利ですよ。
よねさんの差し込み印刷参考にどうぞ、
http://www.eurus.dti.ne.jp/~yoneyama/Word2007/word2007-sasikomi.html
質問者さんの場合お名前だけでいいのでしたら、一列に名前だけを(既存の名簿を貼り付け)すれば。

>60枚を印刷してすぐに1枚ずつに印を付けて、その名前の人に渡しております。
>この名前をテキストボックスに入れて、次の月用にコピーしております。
>それで、この意図はお分かりでしょうか?

>名簿は古い場合があるので、今までは、最新版がある他の月のものをコピーしてきました。
>問題にしているのはこの名簿のテキストボックスを他のファイルにコピーするときの問題です。

根本的には名簿を次月用に残したいということですね
恐らくこの不具合はWordのページ設定で、余白(少なくする)・行間(...続きを読む

QEXCELの表、組[A列]:番号[B列] を 組[A列]:番号[行]に変換する方法

EXCELに
A列に組、B列に番号がそれぞれ反映されている表があります。
これを
A列に組、同行に番号が横並びに配置された状態に変更したいと考えております(添付画像)。

D列にはA列の組名を「重複なし」で貼り付けます。
このとき、E列~K列にどのような数式を入力すればよろしいでしょうか?
E1に入力する数式を教えていただけるとありがたいです。
何卒よろしくお願いいたします。

Aベストアンサー

こんばんは!

画像の配置だとE1セルに
=IF($D1="","",IFERROR(INDEX($B$1:$B$1000,SMALL(IF($A$1:$A$1000=$D1,ROW($A$1:$A$1000)),COLUMN(A1))),""))

配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → E1セルを選択 → 数式バー内に貼り付け →そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。

最後にE1セルのフィルハンドルで列・行方向にずぃ~~~!っとフィル&コピーします。

こんな感じではどうでしょうか?m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング