過去ログ

                                Page     284
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼現在カーソルがある行のデータを別のシー...  moon 02/10/29(火) 15:03
   ┗Re:現在カーソルがある行のデータを別のシー...  コロスケ 02/10/30(水) 17:35
      ┗Re:現在カーソルがある行のデータを別のシー...  moon 02/10/30(水) 20:22
         ┗Re:現在カーソルがある行のデータを別のシー...  コロスケ 02/10/31(木) 9:29
            ┗できました\(^o^)/  moon 02/11/1(金) 14:47

 ───────────────────────────────────────
 ■題名 : 現在カーソルがある行のデータを別のシー...
 ■名前 : moon
 ■日付 : 02/10/29(火) 15:03
 -------------------------------------------------------------------------
   VBA全くの初心者です。
ずっっと昔にロータスのマクロ(違いすぎ)を組んだことがある程度です。
今現在顧客データの管理をエクセルで行ごとにしています。
例えばA列に顧客番号、B列に名前、C列に郵便番号、D列、E列に住所1、2、F列に電話番号といった具合です。
これを名前、郵便番号、住所1,2の所だけ封筒に印刷したいのです。

このデータで顧客の名前を番号から検索し(今現在はCtrl+F)、Wordで作った封筒の宛名印刷用のフォームにデータを読み込んで使っています。
今の方法では、いちいちExelにある顧客の行番号-1をWordのデータの番号に入力して画面で表示させてから印刷をスタートさせています。
これが少し面倒になってきたのと、番号を入力し間違ったら全く違ったデータを読み込んでしまうことになるので、全てExelで、しかもできれば一枚のSheetの中で済ませてしまいたいのです。それが無理なら別のSheetででも可。
「マクロの記録」等をしてみましたが、今現在カーソルがあるところを起点にして、等というのができない(わからない)ので、困っています。私のやり方ですと、どこにカーソルを置いていようが、毎回同じデータが来てしまいます。

どうかお教えくださいませ。
 ───────────────────────────────────────  ■題名 : Re:現在カーソルがある行のデータを別のシー...  ■名前 : コロスケ <corosuke@chan.co.jp>  ■日付 : 02/10/30(水) 17:35  ■Web : http://www.interq.or.jp/sun/puremis/colo/  -------------------------------------------------------------------------
   ▼moon さん:
こんにちは。すべてエクセルで済ませるのが簡単かもしれません。

まず、別シートに封筒に印刷するレイアウトを作成します。
レイアウトが出来上がりましたら、データを流し込みたいセル番地に任意のデータを
転記するだけで可能だと思います。
レイアウトができたら詳細をカキコしてください。

また、
>私のやり方ですと、どこにカーソルを置いていようが、毎回同じデータが来てしまいます。
ですが、この場合、Selectionからコードが始まるはずですが、その前に特定のセルを選択
しているコードはありませんか? Range("A1").Selectなど...。

ではー♪
 ───────────────────────────────────────  ■題名 : Re:現在カーソルがある行のデータを別のシー...  ■名前 : moon  ■日付 : 02/10/30(水) 20:22  -------------------------------------------------------------------------
   早速のお返事をありがとうございます。
VBAの命令の形式さえも分かっていない超初心者なので、エクセルの「マクロの記録」ボタンでなんとか自動記録させた程度です。
以下は自動記録させた物を持って来ました。
これを相対参照、つまり現在カーソルがある位置からの作業にしたいのです。

どうかよろしくお願いしますm(_ _)m

-----------------------------------------------------------------

Sub 宛名印刷()
  Range("C225").Select
  Selection.Copy
  Sheets("Sheet2").Select
  Range("A4").Select
  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
  Sheets("Sheet1").Select
  Range("E225").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("Sheet2").Select
  Range("A1").Select
  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
  Sheets("Sheet1").Select
  Range("F225").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("Sheet2").Select
  Range("A2").Select
  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
  Sheets("Sheet1").Select
  Range("G225").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("Sheet2").Select
  Range("A3").Select
  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
  Application.CutCopyMode = False
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
 ───────────────────────────────────────  ■題名 : Re:現在カーソルがある行のデータを別のシー...  ■名前 : コロスケ <corosuke@chan.co.jp>  ■日付 : 02/10/31(木) 9:29  ■Web : http://www.interq.or.jp/sun/puremis/colo/  -------------------------------------------------------------------------
   ▼moon さん:
一応纏めてみました。不明点はまた質問してくださいね。ではー♪

Sub 宛名印刷_Modified()
'// Written By Colo 31st Oct 2002
'// コピー元のシートはSheet1
'// コピー先のシートはSheet2
'// 相対参照になるのはSheet1のセルに対してのみと解釈しました。
'// 値(Value)のみを転記する場合はCopy メソッドの代わりに下記のように
'// Valueプロパティを使って代入することができます。
'// セルがいくつ選択されているか?またSheet1のセルが選択されているかなどの
'// エラーチェックは、ややこしくなるので今回の回答からは省いています。
  With Selection '選択したセルを基準にして動きます。
    Sheets("Sheet2").[A4].Value = .Value
    Sheets("Sheet2").[A1].Value = .Offset(, 2).Value
    Sheets("Sheet2").[A2].Value = .Offset(, 3).Value
    Sheets("Sheet2").[A3].Value = .Offset(, 4).Value
  End With
  Application.Goto Sheets("Sheet2").[A1]
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
 ───────────────────────────────────────  ■題名 : できました\(^o^)/  ■名前 : moon  ■日付 : 02/11/1(金) 14:47  -------------------------------------------------------------------------
   お返事が大変遅くなり、申し訳ありませんでした。
ご回答いただいた内容をコピペし、自分なりに足したり引いたりしながら、ようやく完成し、失敗もありましたが、完璧になりました!
どうもありがとうございましたm(_ _)m
下記のようなものになりました。

**********************************************************************
Sub 宛名印刷()
<途中省略>

' Keyboard Shortcut: Ctrl+q
'
  With Selection
    Sheets("Sheet2").[B1].Value = .Offset(, 4).Value
    Sheets("Sheet2").[B2].Value = .Offset(, 5).Value
    Sheets("Sheet2").[B3].Value = .Offset(, 6).Value
    Sheets("Sheet2").[B4].Value = .Offset(, 2).Value
  End With
  Application.Goto Sheets("Sheet2").[A1]
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
  Sheets("Sheet1").Select
End Sub
**********************************************************************

2枚のsheetで作業を行いました。
sheet1は顧客データのリスト、sheet2は宛名印刷の雛型
あれから宛名印刷の雛型を少し変えて、[A1]に郵便番号の記号を入れたため、全体的に1つ列をずらしました。
印刷が済んだら、sheet1に戻るだけで、セルの指定はしないようにしました。

というわけで、とても助かりました。
重ね重ね、ありがとうございました!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 284