Excel VBA質問箱 IV

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

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


2394 / 13645 ツリー ←次へ | 前へ→

【68292】Excel表の振り分け処理について2. VBA初心者 11/2/21(月) 10:27 質問[未読]
【68293】Re:Excel表の振り分け処理について2. kanabun 11/2/21(月) 10:43 発言[未読]
【68300】Re:Excel表の振り分け処理について2. VBA初心者 11/2/21(月) 16:22 お礼[未読]

【68292】Excel表の振り分け処理について2.
質問  VBA初心者  - 11/2/21(月) 10:27 -

引用なし
パスワード
   こんにちは。
VBA初心者です。


現在のソースでは「sheet1」で下記のコマンドを実行しているのですが、
「sheet2」に下記のコマンドボックスを作成する場合、「sheet1」のデータ
を見るように指定するにはどうしたらよいでしょうか。

myPath = ActiveWorkbook.Path & "\"の部分かと思い、myPath = ThisWorkbook.Worksheets(1).Activate
などのように記載しても出力されなかったりしてしまいます。

どのうようにしたらよいかご教授をお願い致します。

-----------------------------------VbA-----------------------------------------
Sub Lesson_Print2() 'タイトル2行
  Dim Tbl As Range
  Dim v, i As Long, n As Long, n1 As Long
  Dim myPath As String
  Dim newBook As Workbook
  Dim Bookname As String

  Application.DisplayAlerts = False

  myPath = ActiveWorkbook.Path & "\"
  Set Tbl = ActiveSheet.[A1].CurrentRegion '◆ A列で Sort済み
  n = Tbl.Rows.Count
  v = Tbl.Resize(n + 1, 1).Value
  n1 = 3    '◆変更
  For i = 3 To n '◆変更
    If v(i, 1) <> v(i + 1, 1) Then '下と違えば
      With Workbooks.Add(xlWBATWorksheet) '◆変更 シート1枚のBook
        Tbl.Rows("1:2").Copy .Sheets(1).[A1] '◆見出し行2行をCopy
        Tbl.Rows(n1 & ":" & i).Copy .Sheets(1).[A3] '3行目へ

        .Sheets(1).UsedRange.EntireColumn.AutoFit '◆挿入

     With ActiveSheet.PageSetup
     .PrintTitleRows = "$1:$1"
     .PrintTitleColumns = ""
     End With
  ActiveSheet.PageSetup.PrintArea = ""
  With ActiveSheet.PageSetup
    .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
    .LeftMargin = Application.InchesToPoints(0.787)
    .RightMargin = Application.InchesToPoints(0.787)
    .TopMargin = Application.InchesToPoints(0.984)
    .BottomMargin = Application.InchesToPoints(0.984)
    .HeaderMargin = Application.InchesToPoints(0.512)
    .FooterMargin = Application.InchesToPoints(0.512)
    .PrintHeadings = False
    .PrintGridlines = False
    .PrintComments = xlPrintNoComments
    .PrintQuality = 200
    .CenterHorizontally = False
    .CenterVertically = False
    .Orientation = xlLandscape
    .Draft = False
    .PaperSize = xlPaperA4
    .FirstPageNumber = xlAutomatic
    .Order = xlDownThenOver
    .BlackAndWhite = False
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = False
    .PrintErrors = xlPrintErrorsDisplayed
  End With
        Bookname = v(i, 1) '↓ A列データが日付のときはBook名をFormatする
        If IsDate(Bookname) Then Bookname = Format$(v(i, 1), "yy-mm-dd")
        .SaveAs myPath & v(i, 1) & ".xls", FileFormat:=XlFileFormat.xlExcel8
        .Close False
      End With
      n1 = i + 1
    End If
  Next

  'Application.SheetsInNewWorkbook = nSheet
  
  MsgBox "出力しました"

End Sub

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

【68293】Re:Excel表の振り分け処理について2.
発言  kanabun  - 11/2/21(月) 10:43 -

引用なし
パスワード
   ▼VBA初心者 さん:

>現在のソースでは「sheet1」で下記のコマンドを実行しているのですが、
>「sheet2」に下記のコマンドボックスを作成する場合、「sheet1」のデータ
>を見るように指定するにはどうしたらよいでしょうか。
>
>myPath = ActiveWorkbook.Path & "\"の部分かと思い、myPath = ThisWorkbook.Worksheets(1).Activate
>などのように記載しても出力されなかったりしてしまいます。

Activate Select などになるべく頼らない記述法を身につけましょう。

対象ワークシート用変数 WS1 を追加して、
> Sub Lesson_Print2() 'タイトル2行
   Dim WS1 As Worksheet
>   Dim Tbl As Range
>   Dim v, i As Long, n As Long, n1 As Long
>   Dim myPath As String
>   Dim newBook As Workbook
>   Dim Bookname As String
>
>   Application.DisplayAlerts = False
>
>   myPath = ActiveWorkbook.Path & "\"
   Set WS1 = ActiveWorkbook.Worksheets("Sheet1")
>   'Set Tbl = ActiveSheet.[A1].CurrentRegion '◆ A列で Sort済み
   Set Tbl = WS1.[A1].CurrentRegion '◆ A列で Sort済み

のようにしたら、いかが?

【68300】Re:Excel表の振り分け処理について2.
お礼  VBA初心者  - 11/2/21(月) 16:22 -

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

できました。ありがとうございました。
大変助かりました。


>▼VBA初心者 さん:
>
>>現在のソースでは「sheet1」で下記のコマンドを実行しているのですが、
>>「sheet2」に下記のコマンドボックスを作成する場合、「sheet1」のデータ
>>を見るように指定するにはどうしたらよいでしょうか。
>>
>>myPath = ActiveWorkbook.Path & "\"の部分かと思い、myPath = ThisWorkbook.Worksheets(1).Activate
>>などのように記載しても出力されなかったりしてしまいます。
>
>Activate Select などになるべく頼らない記述法を身につけましょう。
>
>対象ワークシート用変数 WS1 を追加して、
>> Sub Lesson_Print2() 'タイトル2行
>   Dim WS1 As Worksheet
>>   Dim Tbl As Range
>>   Dim v, i As Long, n As Long, n1 As Long
>>   Dim myPath As String
>>   Dim newBook As Workbook
>>   Dim Bookname As String
>>
>>   Application.DisplayAlerts = False
>>
>>   myPath = ActiveWorkbook.Path & "\"
>   Set WS1 = ActiveWorkbook.Worksheets("Sheet1")
>>   'Set Tbl = ActiveSheet.[A1].CurrentRegion '◆ A列で Sort済み
>   Set Tbl = WS1.[A1].CurrentRegion '◆ A列で Sort済み
>
>のようにしたら、いかが?

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