Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


22 / 3841 ページ ←次へ | 前へ→

【82048】Re:PDF出力した際のファイル名につきまし...
お礼  hamil  - 22/6/23(木) 22:14 -

引用なし
パスワード
   ▼マナ さん:
>▼hamil さん:
>
>Dim 管理番号 As String
>
>でどうなりますか

マナさん

出来ました!!!ありがとうございます!!!
後学のために教えて欲しいのですが、これは何故変更したことで出力可能になったのですか??
・ツリー全体表示

【82047】Re:PDF出力した際のファイル名につきまし...
発言  マナ  - 22/6/23(木) 21:48 -

引用なし
パスワード
   ▼hamil さん:

Dim 管理番号 As String

でどうなりますか
・ツリー全体表示

【82046】Re:PDF出力した際のファイル名につきまし...
回答  hamil  - 22/6/23(木) 21:30 -

引用なし
パスワード
   ▼マナ さん:
>▼hamil さん:
>>
>>↓の「管理番号=ws台帳、、、」の箇所にデバッグで表示でます。
>
>そのときの ws台帳.Cells(i, 1).Value の値はどうなっていますか

マナさん

「1001」や「100」とかの数字のみであれば問題なく動くのですが、「予備01」など、文字プラス数字などにすると、エラーが出てしまいます。
・ツリー全体表示

【82045】Re:PDF出力した際のファイル名につきまし...
発言  マナ  - 22/6/23(木) 21:23 -

引用なし
パスワード
   ▼hamil さん:
>
>↓の「管理番号=ws台帳、、、」の箇所にデバッグで表示でます。

そのときの ws台帳.Cells(i, 1).Value の値はどうなっていますか
・ツリー全体表示

【82044】Re:PDF出力した際のファイル名につきまし...
回答  hamil  - 22/6/23(木) 20:17 -

引用なし
パスワード
   ▼マナ さん:
>▼hamil さん:
>
>エラーになったコードを教えてください。

マナさん

↓の「管理番号=ws台帳、、、」の箇所にデバッグで表示でます。

PDF出力処理
  Dim 管理番号 As Long
  For i = 2 To 台帳最終行
    If ws台帳.Cells(i, 2).Value = "Y" Then
      管理番号 = ws台帳.Cells(i, 1).Value
      ws帳票.Cells(2, 1).Value = 管理番号
・ツリー全体表示

【82043】Re:PDF出力した際のファイル名につきまし...
発言  マナ  - 22/6/23(木) 18:15 -

引用なし
パスワード
   ▼hamil さん:

エラーになったコードを教えてください。
・ツリー全体表示

【82042】Re:PDF出力した際のファイル名につきまし...
回答  hamil  - 22/6/23(木) 9:34 -

引用なし
パスワード
   ▼マナ さん:
>▼hamil さん:
>
>>マクロにてエラーが出てしまいました。
>
>どんなマクロですか。。


マナさん
ありがとうございます!以下となります。

Option Explicit

Sub 一括PDF出力()

  ' 変数宣言
  Dim ws帳票 As Worksheet: Set ws帳票 = Worksheets("帳票")
  Dim ws台帳 As Worksheet: Set ws台帳 = Worksheets("台帳")
  Dim 台帳最終行 As Long: 台帳最終行 = ws台帳.Range("A1").CurrentRegion.Rows.Count
  Dim i As Long
  
  ' 一括出力対象データ数の確認
  Dim 出力データ数 As Long: 出力データ数 = 0
  For i = 2 To 台帳最終行
    If ws台帳.Cells(i, 2).Value = "Y" Then
      出力データ数 = 出力データ数 + 1
    End If
  Next
  
  ' ユーザーに処理続行の確認
  If 出力データ数 > 0 Then
    Dim rc
    rc = MsgBox(出力データ数 & "件のデータをPDF出力します。よろしいですか?", vbYesNo)
    If rc = vbNo Then
      MsgBox ("処理を中断しました。")
      Exit Sub
    End If
  Else
    ' 対象データなしの場合は処理終了
    MsgBox ("出力対象のデータがありません。")
    Exit Sub
  End If
  
  ' PDF出力処理
  Dim 管理番号 As Long
  For i = 2 To 台帳最終行
    If ws台帳.Cells(i, 2).Value = "Y" Then
      管理番号 = ws台帳.Cells(i, 1).Value
      ws帳票.Cells(2, 1).Value = 管理番号
      ws帳票.ExportAsFixedFormat _
          Type:=xlTypePDF, _
          Filename:=ThisWorkbook.Path & "\PDF\" & 管理番号 & ".pdf"
    End If
  Next
  
  ' 完了メッセージの表示
  MsgBox (ThisWorkbook.Path & "\PDF" & " にPDFファイルを出力しました。")
End Sub
・ツリー全体表示

【82041】Re:PDF出力した際のファイル名につきまし...
発言  マナ  - 22/6/23(木) 9:17 -

引用なし
パスワード
   ▼hamil さん:

>マクロにてエラーが出てしまいました。

どんなマクロですか。。
・ツリー全体表示

【82040】PDF出力した際のファイル名につきまして
質問  hamil  - 22/6/22(水) 1:10 -

引用なし
パスワード
   仕事で、Excelで差し込み印刷をPDFにて連続出力する必要があり、下記のサイトにて公開されているマクロを使用しました。

web-breeze.net/excel-inset-pdf/

無事、PDF出力できたのですが、ファイル名に文字を入れたく(例: 表1など)、Excelの該当セルを入力して、再出力したところ、マクロにてエラーが出てしまいました。

どのようにマクロを修正すれば良いのかご教示頂きたく、宜しくお願い致します。
・ツリー全体表示

【82039】Re:Sheet1からSheet 2に日付を条件として...
発言  マナ  - 22/6/11(土) 11:20 -

引用なし
パスワード
   ▼りんたろ さん:

>Sheet2はSheet1の日付と項目欄を縦横逆にしただけです。

形式を選択して貼り付けで行列入れ替えではだめですか?
あるいは、マクロでなく、数式(transpose関数)でも。


>
・ツリー全体表示

【82038】Sheet1からSheet 2に日付を条件として数...
質問  りんたろ  - 22/6/11(土) 5:14 -

引用なし
パスワード
   Sheet1(Blank)のB列に日付が入力されており。その横のC〜AA列までその日の数値が入力されます。
Sheet2(2022)の1行目に一年分の日付が入力されているのですが、そこの日付と同じ列に転記したいです。
現在、Sheet1よりSheet2に行と列の入れ替えなしで下記のVBAを使用し、転記しているのですが、上記に書かせて頂いたように行と列を入れ替えて転記できるようにしたいです。
できることならば下記のものを流用する形でここに行と列の入れ替えを追加したいのですが、知識不足により上手くできませんでした。
お知恵を貸して頂けないでしょうか?

Sub 転記()
   Dim wsBIO As Worksheet
   Dim r As Range
   Dim lastRW As Long
   Set wsBIO = Sheets("2022")
   With wsBIO.Range("B2", wsBIO.Cells(Rows.Count, "A").End(xlUp))
     On Error Resume Next
       Set r = .SpecialCells(xlCellTypeBlanks)
     On Error GoTo 0
   End With
   If Not r Is Nothing Then
      lastRW = Sheets("Blank").Cells(Rows.Count, "B").End(xlUp).Row
     r.Formula2R1C1 = "=XLOOKUP(RC[-1],INT(Blank!R2C2:R" & lastRW & "C2),Blank!R2C3:R" & lastRW & "C27,"""")" '日付で検索 XLOOKUP
     wsBIO.UsedRange = wsBIO.UsedRange.Value
   End If
End Sub


Sheet2はSheet1の日付と項目欄を縦横逆にしただけです。
イメージ的には各シートは以下のようになっています。

Sheet1(Blank)
     B列  C列  D列・・・AA列
1行目  日付 温度  温度   電流
2行目  1/1  20   33    5
3行目  1/8  30   20    6

Sheet2(BIO)
     A列  B列  C列 ・・・NB列
1行目  日付  1/1  1/2 ・・・12/31    
2行目  温度  20   30     
3行目  温度  1/8   30     
4行目  電流  5    6

よろしくお願い致します。
・ツリー全体表示

【82037】Re:テーブルのソートをマクロで行いたい
発言  マナ  - 22/6/6(月) 22:00 -

引用なし
パスワード
   ▼トリコ さん:
、、
>テーブル名などを取得する方法がわかったので、


シートにテーブルが1つしかないなら
名前でなく、インデックス番号で。
ActiveSheet.ListObjects(1)
・ツリー全体表示

【82036】Re:検索結果で出た値の列だけを表示したい
発言  マナ  - 22/6/4(土) 21:28 -

引用なし
パスワード
   ▼しまじ さん:

サンプルデータ(進捗管理表)を
行列番号がわかるように提示してください。
・ツリー全体表示

【82035】Re:テーブルのソートをマクロで行いたい
回答  トリコ  - 22/6/4(土) 15:19 -

引用なし
パスワード
   ▼トリコ さん:
自己レスですが、、、
テーブル名などを取得する方法がわかったので、
具体的な名前になってるところを変数にして取得した値を代入すればいけるかなと思いました。
やってみます。
・ツリー全体表示

【82034】テーブルのソートをマクロで行いたい
質問  トリコ  - 22/6/4(土) 8:02 -

引用なし
パスワード
   同じフォーマットの表のシートが多数あります。
シートの表を日付でソートするマクロ(A)を組んでいたのですが、表をテーブルに変換することにしました。
すると、テーブルにソートマクロを使うとエラーで止まるようになりました。
改めて「マクロを記録」で記録してみたところ(B)、表の時は具体的なシート名等はなかったのですが、
テーブルでマクロを記録するとテーブル名が固定されて記録されてしまいます。

これをどのシートのテーブルでも使える汎用のマクロにすることはできないでしょうか。
よろしくお願いします。

(A)
  ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Clear
  ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Add2 Key:=Range( _
    "D4"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
    xlSortNormal
  With ActiveWorkbook.ActiveSheet.AutoFilter.Sort
    .header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With

(B)
  ActiveWorkbook.Worksheets("シート (5)").ListObjects("テーブル11").Sort.SortFields.Clear
  ActiveWorkbook.Worksheets("シート (5)").ListObjects("テーブル11").Sort.SortFields.Add2 _
    Key:=Range("テーブル11[[#All],[記録日時]]"), SortOn:=xlSortOnValues, Order:= _
    xlDescending, DataOption:=xlSortNormal
  With ActiveWorkbook.Worksheets("シート (5)").ListObjects("テーブル11").Sort
    .header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
・ツリー全体表示

【82033】Re:検索結果で出た値の列だけを表示したい
質問  しまじ  - 22/6/3(金) 16:08 -

引用なし
パスワード
   コメントありがとうございます🙇‍♂️
Hiddenを使ったマクロを調べながら組んでいるのですが
思うようにできないです💦
いまいち理解できていない面もあると思います。

例えばどんなふうに組むといいみたいなのはあるのでしょうか?
・ツリー全体表示

【82032】解決しました。
お礼  ken E-MAIL  - 22/6/3(金) 14:00 -

引用なし
パスワード
   ▼ken さん:
自分なりに考えたら解決する事が出来ました。

  Dim myShape as Shape
  Dim ShapeName as String

  For Each myShape In ActiveSheet.Shapes
    ShapeName = myShape.Name
    If ShapeName = "Picture 2467" Then
      myShape.Delete
    End If
  Next

失礼いたしました。
・ツリー全体表示

【82031】Shapeの削除について
質問  ken  - 22/6/3(金) 12:14 -

引用なし
パスワード
   いつもお世話になっております。

図の削除について教えてください。
図形("Picture 2467")が無ければ何もしない、あったら削除したいのですが
下のマクロをではない時にエラーになってしまいます。
どの様に記述したら良いのかお教え下さい。

Sub test()
If ActiveSheet.Shapes.Range(Array("Picture 2467")) Is Nothing Then

Else
  ActiveSheet.Shapes.Range(Array("Picture 2467")).Delete
End If
End Sub
・ツリー全体表示

【82030】Re:検索結果で出た値の列だけを表示したい
発言  マナ  - 22/6/2(木) 14:05 -

引用なし
パスワード
   ▼しまじ さん:

>オートフィルターを使わずに上記のような条件で表示、非表示することは可能なのでしょうか?

行を非表示(Hidden=True)にしてはどうですか。
・ツリー全体表示

【82029】検索結果で出た値の列だけを表示したい
質問  しまじ  - 22/5/29(日) 23:17 -

引用なし
パスワード
   はじめまして、困っている事があるので助けていただきたいです。
今現在業務で進捗管理表を作っているのですが、作業項目や担当者が多い為絞り込みをして見やすくできないかと考えてます。
例えばですが
作業項目  担当者
改善    鈴木
掃除    武田
パソコン  宮崎
というようなデータの中であいまい検索を使って鈴木さんの列だけを表示したい時に"鈴"と値を入力して(ワイルドカードを使用して)、鈴木さんの列だけを表示できるようなコードを作っているのですが、
中々上手く自分が思い通りにしたいマクロが作れません。
ちなみになんですが、作業項目の下の改善、掃除…はセルを結合しているためオートフィルターでの抽出ができない状態です。
オートフィルターを使わずに上記のような条件で表示、非表示することは可能なのでしょうか?
・ツリー全体表示

22 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free