戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
VBAで写真付き社員証の作成

    [194773] VBAで写真付き社員証の作成-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ もふもふ -(2022/03/14(00:14))
    □U R L/
      A41枚に10人分の社員証を作成
      写真付き
      作成したい所属部(データのリストで作成済み)を選択しマクロボタンを押すと、
      同ブック内にあるシート「名簿」から氏名・所属、シート「資格」とシート「目標」からぞれぞれ該当の部署に所属する社員の情報が取得され、シート「名札」にデータが貼り付けられるという作り。
      社員のデータはシート「名簿」にあり。
      
      以下、作成したものを貼付します
      
      修正およびもっと簡単な方法あれば教えてください
      ※最初の段階で、所属を選択せずにマクロボタンを押すとエラー!マークで「所属を選択してください」と表示され、何の動作もされないという作りにしたい
      
      Option Explicit
      
      Private Counter As Integer    'データが何件目かを数えるための変数
      Private CounterforCard As Integer 'A4用紙1枚内で何番目のカードか
      Private OffsetX As Integer
      Private OffsetY As Integer
      
      
      
      Sub MakeCard()
      
        Dim i As Long '名簿の行数のカウントアップ用
          Dim j As Long '転記先の行数のカウントアップ用
      
      Dim rw As Long '最終行取得用
      Dim shtMeibo As Worksheet
      Set shtMeibo = Worksheets("名簿")
      Dim nafuda As Worksheet
      Set nafuda = Worksheets("名札")
      
      If Range("AM3").Value <> "" Then
      
      
       shtMeibo.Activate
       rw = Cells(Rows.Count, 1).End(xlUp).Row
          
          j = 4 '初期設定
          
          For i = 2 To rw
              If Cells(i, 2) = Range("AM3").Value Then
                  With nafuda
                      .Cells(j, 7) = Cells(i, 8)
                      j = j + 13
                  End With
              End If
          Next i
          
      
      
      
      
      
      
      
      
      
      
      
      'A4に10枚の名札をつくる
      Dim MaxRow As Long      'データの最終行取得
      MaxRow = shtMeibo.Cells(Rows.Count, 1).End(xlUp).Row
      
      OffsetX = 0
      OffsetY = 0
      For Counter = 1 To MaxRow - 2
          CounterforCard = Counter Mod 10
      
         If CounterforCard Mod 2 = 0 Then
            OffsetX = 10
      Else
        OffsetX = 0
        If CounterforCard = 1 Then
           OffsetY = 0
        Else
           OffsetY = OffsetY + 13
        End If
      End If
      
      '社員各データ取り込む変数
      
      Dim Simei As String              '氏名
      Dim Busho As String              '部署
      Dim HinsitsuMokuhyou As String  '私の品質目標
      Dim KankyouMokuhyou As String    '私の環境目標
      Dim Sikaku1 As String       '資格表の左から
      Dim Sikaku2 As String
      Dim Sikaku3 As String
      Dim Sikaku4 As String
      Dim Sikaku5 As String
      Dim Sikaku6 As String
      Dim Sikaku7 As String
      Dim Sikaku8 As String
      Dim Sikaku9 As String
      
      
          'ワークシート名簿をオブジェクト変数に
      
      Dim mokuhyou As Worksheet
      Set mokuhyou = Worksheets("目標")
      Dim sikaku As Worksheet
      Set sikaku = Worksheets("資格")
      
      
      'リストから変数にデータを格納
      Simei = shtMeibo.Cells(1 + Counter, 8).Value              '氏名
      Busho = shtMeibo.Cells(1 + Counter, 2).Value            '部署
      HinsitsuMokuhyou = mokuhyou.Cells(2 + Counter, 4).Value '私の品質目標
      KankyouMokuhyou = mokuhyou.Cells(2 + Counter, 5).Value  '私の環境目標
      Sikaku1 = sikaku.Cells(3 + Counter, 4).Value    '資格表の左から
      Sikaku2 = sikaku.Cells(3 + Counter, 5).Value
      Sikaku3 = sikaku.Cells(3 + Counter, 6).Value
      Sikaku4 = sikaku.Cells(3 + Counter, 7).Value
      Sikaku5 = sikaku.Cells(3 + Counter, 8).Value
      Sikaku6 = sikaku.Cells(3 + Counter, 9).Value
      Sikaku7 = sikaku.Cells(3 + Counter, 10).Value
      Sikaku8 = sikaku.Cells(3 + Counter, 11).Value
      Sikaku9 = sikaku.Cells(3 + Counter, 12).Value
      
      
      '変数を名札のセルの代入
      nafuda.Cells(4 + OffsetY, 7).Value = Simei
      nafuda.Cells(4 + OffsetY, 4).Value = Busho
      nafuda.Cells(7 + OffsetY, 1).Value = HinsitsuMokuhyou
      nafuda.Cells(9 + OffsetY, 1).Value = KankyouMokuhyou
      nafuda.Cells(12 + OffsetY, 2).Value = Sikaku1
      nafuda.Cells(12 + OffsetY, 3).Value = Sikaku2
      nafuda.Cells(12 + OffsetY, 4).Value = Sikaku3
      nafuda.Cells(12 + OffsetY, 5).Value = Sikaku4
      nafuda.Cells(12 + OffsetY, 7).Value = Sikaku5
      nafuda.Cells(12 + OffsetY, 9).Value = Sikaku6
      nafuda.Cells(12 + OffsetY, 11).Value = Sikaku7
      nafuda.Cells(12 + OffsetY, 14).Value = Sikaku8
      nafuda.Cells(4 + OffsetY, 16).Value = Sikaku9
      
      
      
      Next Counter
      
      Set shtMeibo = Nothing
      
      
      
      Else
      
      
      MsgBox "印刷したい所属を選択してください。", vbExclamation, "削除の確認"
      
      
      
      End If
      
      
      
      End Sub
      
      
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒Windows 2000
      Version⇒OTHER
      ++++++++++++++++++++




    [194774] Re[1]: VBAで写真付き社員証の作成-

    記事引用/メール受信=OFF■

    □投稿者/ マルチやめて -(2022/03/14(10:09))
    □U R L/
      ■書きこむ際の注意
      >マルチポストはご遠慮ください。
      >(同じ内容の質問を、同時に複数の掲示板に投稿 する行為をマルチポストと言います。) 
      >詳しくはこちらをご覧になってください。
      とされています。




    [194775] Re[2]: VBAで写真付き社員証の作成-

    記事引用/メール受信=OFF■

    □投稿者/ これですね -(2022/03/14(12:31))
    □U R L/

      これですね

      社員証を作成したいのですが・・・。
      投稿者: ruto0624 投稿日時: 22/03/14 00:04:33
      h ttps://www.moug.net/faq/viewtopic.php?t=81324



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G