• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで、出来そうなのですが、教えてください。)

エクセルで出勤数が上がっている人のリンク先を印刷する方法について

このQ&Aのポイント
  • エクセルで勤怠表と給与明細を作成しているが、特定の条件を満たす人のリンク先を一括して印刷したい。
  • 必要なデータはA列の出勤数とE列の名字のリンク先で、VLOOKUPやIFでの解決が難しい。
  • マクロを使用してリンク先を印刷する方法を模索中だが、具体的な解決策が分からない。

質問者が選んだベストアンサー

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.5

>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ページ固定ではなければ、必要なページを印刷するようなロジックを組み込まないとだめですが…

07535373
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.4

お疲れさまです。 > 教えていただいたマクロにどのようにして ページ指定すればよろしいでしょうか。 PrintOut のパラメタは以下の通りです。 PrintOut (From,To,Copies,Preview,ActivePrinter,PrintToFile,Collate,PrToFileName) ページ指定なら最初に3つを指定すれば良いかと思います。 From :印刷を開始するページの番号を指定します。 To   :印刷を終了するページの番号を指定します。 Copies:印刷部数を指定します。

07535373
質問者

お礼

何度も教えていただいて恐縮です。 上手く動かないので、今いろんな、パターンを試してますが、 上手くゆきません・・・・・ スミマセン 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)のあとから書けばよいのでしょうか、  ご迷惑かけます。  今自力で色々かいてます。なんとかがんばります。  ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>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に熟達してから、良くわかってあえて使うべきのことで、コンなのに初めから道を求めるのは邪道とおもう。

07535373
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.2

マクロは下記の通りです。 ・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

07535373
質問者

お礼

お礼がおしくなりました。 ありがとうございます。途中たぶんこちらの問題で、 マクロが使えないブック・・・・や・・ スパイラルエラーなど  分からない所も出てきましたが、 なんとか動きました。 印刷の部分で つまずき 止まっていましたので、 驚きと感謝でいっぱいです。 背伸びしすぎだと反省してます。 以前 プリントのマクロを作ったのですが、    教えていただいたマクロにどのようにして ページ指定すればよろしいでしょうか。    よろしければ おねがいします。 ExecuteExcel4Macro "PRINT(2,1,1,1,,,,,,,,2,,,TRUE,,FALSE)" ExecuteExcel4Macro "PRINT(2,3,3,1,,,,,,,,2,,,TRUE,,FALSE)"

全文を見る
すると、全ての回答が全文表示されます。
  • sumer45
  • ベストアンサー率17% (52/294)
回答No.1

ここで教えられるのには限界がありますね 単に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 となりますが オートフィルターで抽出して手印刷ではダメなのですか?

07535373
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelで集計の方法

    A列に名前が入っています。 B列に数字(個数)が入っています。 A列にある名前は重複しています。(同じ名前が何回も出現します。) このA列にあるリストを同じシートのD列に表示し、更にE列に名前ごとの合計を出したいのですが、どうすればよいでしょうか? つまり A列   B列 太郎   50 一郎   20 花子   30 太郎   40 花子   50 一郎   50 太郎   20 これを 太郎=110 一郎=70 花子=80 としたいのです。 よろしくお願いします。

  • エクセルで同じ日に2回出勤したデータ数を数えたい

    同じ人が同じ日に2回出勤しているデータ数を知りたいです。 2 山田太郎 1/21 10:00 13:00 2 山田太郎 1/21 18:00 24:00 1 山田太郎 1/22 10:00 17:00 1 山田太郎 1/23 14:00 22:00 1 鈴木花子 1/21 10:00 17:00 1 鈴木花子 1/23 17:00 24:00 2 鈴木花子 1/24 10:00 15:00 2 鈴木花子 1/24 18:00 24:00 ↑のようなタイムカードがあります。 上の例だと、2もしくは4という数値がほしいです。 今までは図のようにA列に countifs関数を記入し、同一人物が同一日付に2回出勤 しているかをチェック、その数を数えていました。 今後は、 同一人物が同一日付に2回出勤している件数を1つの関数で知りたいと考えています。 ↑の例だと、4件 という数を1つの関数で出したいです。 どのようにすればよいのかアドバイスをお願いいたします。

  • リンク貼り付けをマクロで簡素化したい

    1)個人票ブック(太郎シート 花子シート 次郎シー・・・・・)の各シートのA1からA5まで、値や公式がはいっています。 2)このシートのA1からA5までの値等を、別の総括表ブック(一枚のシートしかない)にリンク貼り付けをします。 3)まず、太郎シートのA1~A5までは、総括表ブックのB列にリンク貼り付けするマクロボタンを、太郎シートに設置します。 4)さらに、花子シートのA1~A5までは、総括表ブックのC列にリンク貼り付けするマクロボタンを、花子シートに設置します。 5)そして、次郎シートのA1~A5までは、総括表ブックのD列にリンク貼り付けするマクロボタンを、次郎シートに設置します。 6)こうしてマクロボタンを順次貼り付けていきます。 7)各シートの貼り付け場所は列に貼り付けていきますが、上から順番ではなく、任意に飛んでいますが、  各シートの行は、みな一律で同じ行です。 列は違っても皆おなじ行にリンク貼り付けしたいです。 このような操作をマクロ記録でつくりましたが、膨大な作業が必要です。これをなんとかVBAで簡素化したいのですが・・よろしくお願いします。

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • エクセル2003のフォームを作成しています。

    エクセル2003のフォームを作成しています。 2点質問があります。 (1) UserForm1にテキストボックス1と2 マルチページの中にテキストボックス3と4があります。 エクセルのシート名はSheet1です。 一例) マルチページ1 テキストボックス1:A100 テキストボックス2:山田太郎 テキストボックス3: テキストボックス4: マルチページ2 テキストボックス1:A100 テキストボックス2:山田太郎 テキストボックス3: テキストボックス4: マルチページ3 テキストボックス1:A100 テキストボックス2:山田太郎 テキストボックス3: テキストボックス4: マルチページ4 テキストボックス1:A100 テキストボックス2:山田太郎 テキストボックス3: テキストボックス4: マルチページ5 テキストボックス1:A100 テキストボックス2:山田太郎 テキストボックス3: テキストボックス4: エクセルのシート(Sheet1)には A     B    C    D   E A100 山田太郎 木村 5000円 担当1 A100 山田太郎 村田 6000円 担当2 A100 山田太郎 江崎 3000円 担当3 A200 田中花子 吉田 4000円 担当1 A200 田中花子 鈴木 1000円 担当2 とデータが続いています。 UserForm1に読込というボタンがあるのですが、クリックしたらシートの A列でA100、B列で山田太郎、かつE列で「担当1」の行の C列の名前をテキストボックス3、D列の金額をテキストボックス4 に表示させるにはどのように書けば良いのでしょうか。 ページ2は、ボタンではなく、ページをクリックした時に 上記と同様のイベント A列でA100、B列で山田太郎、かつE列で「担当2」の行のC列の名前を テキストボックス3、D列の金額をテキストボックス4に表示、 ページ3は、2と同様ページをクリックした時に A列でA100、B列で山田太郎、かつE列で「担当3」の行の C列の名前をテキストボックス3、D列の金額をテキストボックス4 に表示、 以降のページも上記と同様のことをさせたいと思っています。 マルチページは5ページありますが、必ずしもシートに担当5まで あるわけではなく、A100 山田太郎のように、担当が1から3しか シートにデータがない場合は、マルチページの4と5は空欄に ならなければなりません。 (2)ページのタブをクリックした時のイベントの書き方が分かりません。 ページをクリックした時のイベントは、こちらで同じような質問を されている方のを見て、タブをクリックした時のコードをコピーして みまして試してみましたが、無反応でした。 Private Sub MultiPage1_Click(ByVal Index As Long)  'Page2がクリックされた場合  If Index = 1 Then   Load UserForm1   With UserForm1    .StartUpPosition = 0    .Top = 50    .Left = 20    .Show   End With  End If End Sub 分かりづらい説明で申し訳ありませんが、どなたか教えていただけ ませんでしょうか。よろしくお願いいたします。

  • エクセルの計算の仕方について

    生徒が複数の模試を受けます。 シートIに生徒名一覧と、各自が受ける模試あ~いに対してフラグが立っています。どれを受けるかは生徒によってバラバラです。 A列      B列       C列     D列    E列 氏名     模試あ    模試い    模試う   代金合計 山田太郎   1                 1     3000 田山花子   1                       1300 海山次郎   1        1        1     4500 次に、シートIIには次のようにイメージの表を作りたいのです。 A列      B列       C列     D列    E列 氏名     模試名     模試名   模試名  代金合計 山田太郎  模試あ     模試う          3000 田山花子  模試あ                   1300 海山次郎  模試あ     模試い    模試う  4500 つまり、シートIにフラグを立てると同時に、シートIIには「模試名」と合計金額が出るようにしたいのです。できるのでしょうか?シートIIの氏名の横にはどんな数式を入力したらいいのでしょうか? よろしくお願いします。

  • エクセルの関数について

    エクセルの関数についてです。 シート1の1行目には見出しが入っています。A列うには 店名  B列には  氏名(店長名) がはいっています。 A2には、 あ店   B2には、田中 太郎。 A3には、い店 B3には、小林 明子、   A4には、 あ店   B4には、田中 太郎。 A5には、う店 B5には、佐藤 誠 A6には、 あ店   Bには、田中 太郎。 と ランダムに入っています。  店名は、 あ店~を店まであります。 しかし 500行までランダムに店名はバラバラに入っています。 シート2に、A2:A42 と B2:B42 にあ店~を店まで 順番に 並べたいのです どうやってやったらいいか教えてください

  • エクセルで頻度の集計をする方法について

    A列に日付(1日からその月の末日まで)、B列にその日に訪れた会員氏名が入っています。 ある1日に訪れる人は当然複数人います。(つまりある1日の行は複数ある事になります) これを前出のシートとは別のシートで個人ごとにいつ来たかを集計したいのです。 A列に会員氏名、B列以降に来た日付を表示したい。 (例) 田中太郎  7/3 7/9 7/10 7/12 山田太郎  7/1 7/10 7/15 のようなイメージです。 どなたか良い方法を教えてください。

  • Excelで頭数を算出する関数?

    こんにちは。 C列3行目から20行目に氏名があり、D列には個数があります。氏名欄には同一人物も載っているので、メンバーの人数を知るにはどの関数がありますか。 例えば3行目から6行目まではメンバーが3人という結果が出るようにしたいのです。 3 山田太郎 3個 4 佐藤花子 5個 5 田中次郎 6個 6 山田太郎 2個 メンバーは相当の数なので誰が何個売ったかは問題にしません。 宜しくお願いします。

  • エクセルのCOUNTIF関数について質問です。

    エクセルのCOUNTIF関数について質問です。 例えば下記のように入力されているとき、「田中」が含まれるセルを数えるとき、Sheet2のB1の列には「=COUNTIF(Sheet1!A:A,"*田中*")」と入力すればいいと思いますが、「"*田中*"」の部分を「A1」、上田の場合は「A2」とする場合はどうすれば良いでしょうか? <Sheet1>   A 1 上田夫妻 2 田中兄弟 3 田中太郎 4 田中さん 5 鈴木姉妹 <Sheet2>   A   B 1 田中 2 上田 3 鈴木

専門家に質問してみよう