アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで、出来そうなのですが、教えてください。
初心者で、初めて質問します。

私の会社のパートさんや、アルバイトさんの勤怠表と給与明細を作ってるのですが、

下のような スタッフ一覧を作りそのデーダーをもとに各個人名のシートの各項目セルに
 飛ぶように作ってみましたが、

知りたいのは A列の出勤の上がってる方だけ、1つの操作で、印刷したいのです。

A 列の出勤数は、各個人明細所の出勤数に連動してます。

E 列の名前と個人明細書のSheetにリンクさせてます。

田中太郎さんは、sheet1、田中花子さんは、sheet2に、なっているので、

A列が、0より多い時は、5番目の氏名のリンクを印刷する。 等 VLOOKUPやIFでやれないかと
考えましたが、 答えが出ません、マクロも自動登録しかできないので、困ってます。

スミマセンとても分かりずらいのですが・・・・A列出勤数 B列週払い(チェツクリスト)
c列個人シートのデーターを読ますためのNO、D列 会社の個人コード、 
E列 名字(シートへリンクさせてます。) F 名前・・・・G.H.・・・と他のデータがあります。
行は、 60行位です。
   A.............B.....,,...,,..C............D...................E.............F...........G

1..........出勤数.......週払..........No..............コード............氏名..............勤務地

2...........20.............................1 ..............35982.......... 田中 太郎......... 日本会社

3...........1.............................2 ...............358055..........田中 花子.........日本会社

4............2.............................5...............39488........林 太郎.......... 日本会社.....



リンク先を印刷するマクロは、こんな感じでよいのでしょうか?
あと どのようにしてA列を検索してE列のリンク先を、印刷させるのかわかりません。

Range("E3").Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
ExecuteExcel4Macro "PRINT(1,1,2,,,TRUE,,FALSE)"
End Sub

印刷だけクリアー出来れば、出来上がりにしようと思っていますが、
いろいろ ネットや本で探しても 基本の検索や質問の仕方が 分からないので
お手上げ 状態です。 力を貸してください。  お願いします。

A 回答 (5件)

ここで教えられるのには限界がありますね


単にA列が該当するデータかどうかという判定は

Dim Endrow As Long
Dim C As Range
Endrow=Range("A65536").End(Xlup).Row
For Each C In Rnage("A2:A" & Endrow)
If Val(C.Value)>=1 Then
  印刷処理
 End If
Next

となりますが オートフィルターで抽出して手印刷ではダメなのですか?

この回答への補足

さきほどは、スミマセンでした。
回答ありがとうございます。

補足日時:2010/06/11 23:20
    • good
    • 0

マクロは下記の通りです。


・2行目からA列の最終行まで処理しています。
・A列(出勤数)が0の場合、印刷していません。
・E列(氏名)は必ずハイパーリンク(シート)が貼ってあるとしています。
※テストの時は「PrintOut」ではなく「PrintPreview」にした方が紙の無駄がないと思います。
 
Sub 印刷()
 Dim I As Integer
 Dim リンクシート As String

 For I = 2 To Cells(Rows.Count, "A").End(xlUp).Row
   If Cells(I, "A") <> 0 Then
     リンクシート = Cells(I, "E").Hyperlinks(1).SubAddress
     リンクシート = Left(リンクシート, InStr(リンクシート, "!") - 1)
     Sheets(リンクシート).PrintOut
   End If
 Next I
End Sub
    • good
    • 0
この回答へのお礼

お礼がおしくなりました。
ありがとうございます。途中たぶんこちらの問題で、 マクロが使えないブック・・・・や・・
スパイラルエラーなど 
分からない所も出てきましたが、 なんとか動きました。
印刷の部分で つまずき 止まっていましたので、 驚きと感謝でいっぱいです。
背伸びしすぎだと反省してます。

以前 プリントのマクロを作ったのですが、
   教えていただいたマクロにどのようにして ページ指定すればよろしいでしょうか。
   よろしければ おねがいします。

ExecuteExcel4Macro "PRINT(2,1,1,1,,,,,,,,2,,,TRUE,,FALSE)"
ExecuteExcel4Macro "PRINT(2,3,3,1,,,,,,,,2,,,TRUE,,FALSE)"

お礼日時:2010/06/11 23:39

>A列の出勤の上がってる方だけ


この整理表にもとづいて各人のシートを印刷するのでなく、元の各人シートの出金数が>=1を印刷すれば良いのでは。それが入っているセルは各シートで一定ではないのかな。
Sub test01()
Dim sh As Worksheet
For Each sh In Worksheets
MsgBox sh.Range("D10")
If (sh.Range("D10")) <> "" Then
'sh.Range("a1:E15").PrintOut
MsgBox sh.Name
End If
Next
End Sub
これで各人シートが同一ブックにあれば、全員のD10セルの値ををチェックして、D10が空白でなければシートを印刷することが出来る。
ーー
ハイパーリンクに持ち込んだり、特にExecuteExcel4Macroを使ったりするのは、もっと十分VBAに熟達してから、良くわかってあえて使うべきのことで、コンなのに初めから道を求めるのは邪道とおもう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
遅くなりスミマセン おっしゃるとうり 初めは、各シートごとに個人明細がありますので、
そこを 検索して、印刷させようと考え、他の皆さんの質問など、拝見していたのですが、
どうしても 分からなくて、 その時に他の方の質問で、ハイパーリンクを読み込んで開くと言う
のを、発見したので、 ひょっとして これかなと 思い質問してみたのですが、
背伸びし過ぎでしたね!  さっぱり分かりません。

ちなみに明細のあるシートには、 C12 ・・・作業時間
                C47・・・・ 出勤数 が、表示されます。
たとえば印刷したいシートのページを指定した時は、どうすればよいでしょうか?
よろしければ 教えてください。
   ありがとうございました。

お礼日時:2010/06/12 00:10

お疲れさまです。



> 教えていただいたマクロにどのようにして ページ指定すればよろしいでしょうか。

PrintOut のパラメタは以下の通りです。

PrintOut (From,To,Copies,Preview,ActivePrinter,PrintToFile,Collate,PrToFileName)

ページ指定なら最初に3つを指定すれば良いかと思います。
From :印刷を開始するページの番号を指定します。
To   :印刷を終了するページの番号を指定します。
Copies:印刷部数を指定します。
    • good
    • 0
この回答へのお礼

何度も教えていただいて恐縮です。
上手く動かないので、今いろんな、パターンを試してますが、
上手くゆきません・・・・・ スミマセン
1ページと3ペジをプリントさせていのですが・・・
あと 

   From1TO2Copies1
  For I = 2 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(I, "A") <> 0 Then
リンクシート = Cells(I, "E").Hyperlinks(1).SubAddress
リンクシート = Left(リンクシート, InStr(リンクシート, "!") - 1)
     PrintOut(From:1,To:3,Copie2,Preview,ActivePrinter,PrintToFile,Collate,PrToFileName)
Sheets(リンクシート).PrintPreview

(リンクシート, "!") - 1)のあとから書けばよいのでしょうか、
 ご迷惑かけます。 
今自力で色々かいてます。なんとかがんばります。  ありがとうございます。

お礼日時:2010/06/12 02:42

>1ページと3ペジをプリントさせていのですが・・・


一度のPrintOutでは飛びページは指定できないと思いますので、単純に1ページと3ページを印刷します。

Sub 印刷()
 Dim I As Integer
 Dim リンクシート As String

 For I = 2 To Cells(Rows.Count, "A").End(xlUp).Row
   If Cells(I, "A") <> 0 Then
     リンクシート = Cells(I, "E").Hyperlinks(1).SubAddress
     リンクシート = Left(リンクシート, InStr(リンクシート, "!") - 1)
     Sheets(リンクシート).PrintOut From:=1,to:=1
     Sheets(リンクシート).PrintOut From:=3,to:=3
   End If
 Next I
End Sub

※1,3ページ固定ではなければ、必要なページを印刷するようなロジックを組み込まないとだめですが…
    • good
    • 0
この回答へのお礼

お礼が遅くなりました。明日会社で、
テストしてみます。 上手く行きそうです。
ありがとうございました。 この式を見本にして、他の事もやってみます。
ホームページのほうも、 勉強になるので、お気に入りに登録させていただきました。

何度も 付き合ってもらい感謝してます。 ありがとうございました。

お礼日時:2010/06/12 22:42

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