Excel VBA質問箱 IV

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

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


10058 / 13644 ツリー ←次へ | 前へ→

【23910】教えてください。。 なつみ 05/4/7(木) 11:59 質問[未読]
【23913】Re:教えてください。。 Jaka 05/4/7(木) 12:57 回答[未読]
【23916】Re:教えてください。。 なつみ 05/4/7(木) 13:57 質問[未読]
【23917】Re:教えてください。。 Jaka 05/4/7(木) 14:06 回答[未読]
【23928】Re:教えてください。。 kazu 05/4/7(木) 20:43 発言[未読]
【23936】Re:教えてください。。 なつみ 05/4/8(金) 8:57 質問[未読]
【23937】Re:教えてください。。 ウッシ 05/4/8(金) 10:00 回答[未読]
【23951】Re:教えてください。。 なつみ 05/4/8(金) 15:22 質問[未読]
【23952】Re:教えてください。。 ウッシ 05/4/8(金) 15:29 回答[未読]
【23953】Re:教えてください。。 なつみ 05/4/8(金) 15:47 お礼[未読]

【23910】教えてください。。
質問  なつみ  - 05/4/7(木) 11:59 -

引用なし
パスワード
   初心者です。
n列にデータ分だけ支店番号(1〜)を振りたいのですが教えてください。
下記のコードは統合する分だけ書いて見ました。
※ファイルは10あります。宜しくお願いします。

Sub 統合()

Sheets("sheet1").Select
  Range("a2:m200").Select
  Selection.Clear

Workbooks.Open FileName:="\\・・・\・・・\・・・\売上01.SLK"
  Sheets("売上01").Select
  Range("a2:m300").Select
  Selection.Copy
  Windows("統合.xls").Activate
  Sheets("sheet1").Select
  Range("a2").Select
  ActiveSheet.Paste
  Application.CutCopyMode = False
  Selection.NumberFormatLocal = "G/標準"
  Windows("売上01.SLK").Activate
  ActiveWindow.Close

Workbooks.Open FileName:="\\・・・\・・・\・・・\売上02.SLK"
  Sheets("売上02").Select
  mimi    
  Application.CutCopyMode = False
  Selection.NumberFormatLocal = "G/標準"
  Windows("売上02.SLK").Close
   Windows("統合.xls").Activate


          以下省略

【23913】Re:教えてください。。
回答  Jaka  - 05/4/7(木) 12:57 -

引用なし
パスワード
   こんにちは。

こんな感じでいいのでしょうか?
ループさせようと思いましたが、貼り付け先が同じなので意味がありません。
一応処理1回だけの意味無しループの形で残しました。

Sub 統合()

Sheets("sheet1").Range("a2:m200").Clear

For i = 1 To 1
  NO = Format(i, "00")
  Workbooks.Open FileName:="\\・・・\・・・\・・・\売上" & NO & ".SLK"
  Range("a2:m300").Copy

  With Workbooks("統合.xls").Sheets("sheet1")
    .Range("a2").PasteSpecial
    .Range("a2:m300").NumberFormatLocal = "G/標準"

    EdR = .Range("a65536").End(xlUp).Row
    .Range("N2") = 1
    .Range("N2:N" & EdR).DataSeries Rowcol:=xlColumns, Step:=1
    
  End With
  Workbooks("売上" & NO & ".SLK").Close
Next
End Sub

【23916】Re:教えてください。。
質問  なつみ  - 05/4/7(木) 13:57 -

引用なし
パスワード
   Jakaさま

ありがとうございます。
また質問なのですが売上01.SLKの場合はN列に支店コードの1のみ、売上02.SLKの場合はN列に2のみとしたのですがこれが売上10.SLKまであります、これらをsheet1にすべて統合したいのですが…・
度々すみませんが宜しくお願いします。

【23917】Re:教えてください。。
回答  Jaka  - 05/4/7(木) 14:06 -

引用なし
パスワード
   全体像が全く解ってませんが。

    EdR = .Range("a65536").End(xlUp).Row
    .Range("N2") = 1
    .Range("N2:N" & EdR).DataSeries Rowcol:=xlColumns, Step:=1
       ↓
    EdR = .Range("a65536").End(xlUp).Row
    .Range("N2:N" & EdR).Value = i

【23928】Re:教えてください。。
発言  kazu  - 05/4/7(木) 20:43 -

引用なし
パスワード
   なつみ さん

こんばんは。
こんな感じのことがしたいのかな・・・。と私なりの理解でつくってみました。
以下を試してみて下さい。

Sub 統合()

Const Fldpth As String = "C:\"
Const TmpFnm As String = "売上"
Const ShtNm As String = "SHEET1"

Dim i As Long, TmpCnt As Long, R_Cnt As Long
Dim F_Nm As String

R_Cnt = 1
For i = 1 To 10 Step 1
  F_Nm = Fldpth & TmpFnm & IIf(i < 10, "0" & CStr(i), CStr(i)) & ".SLK"
  If Dir(F_Nm) = "" Then
    MsgBox "ファイルが存在しません" & vbCrLf & F_Nm
    ThisWorkbook.Sheets(ShtNm).Cells.ClearContents
    Exit Sub
  End If
  
  Workbooks.Open F_Nm
  With ActiveSheet
    TmpCnt = .Range("A65536").End(xlUp).Row
   .Range("A1:M" & CStr(TmpCnt)).Copy ThisWorkbook.Sheets("sheet1").Range("A" & R_Cnt)
  End With
  
  ActiveWorkbook.Close False
  ThisWorkbook.Sheets(ShtNm).Range("N" & CStr(R_Cnt) & ":N" & CStr(R_Cnt + TmpCnt)) = i
  R_Cnt = R_Cnt + TmpCnt
Next

ThisWorkbook.Sheets(ShtNm).Range("A1:M" & CStr(R_Cnt)).NumberFormatLocal = "G/標準"
End Sub

【23936】Re:教えてください。。
質問  なつみ  - 05/4/8(金) 8:57 -

引用なし
パスワード
   Jaka Kazu さま

おはようございます。
いろいろ教えていただき感謝しています。自分でもうまく表現できず反省しています。下記にもう一度書かしていただきました。
お時間があるときにもう一度教えてください。

各支店(10支店分)のデータが送られてきます。ブック名は売上01.SLK〜売上10.SLKになります。(シート名は売上01〜売上10)
送られてきたデータを、私の統合ブック(シート名sheet1)に統合していき、支店コード(N列)となる番号を振りたいのです。

<理想図>

  A  B  C・・・・     K  L   M   N
 品目            金額 消費税 合計 支店 
1              5000  250  5250  1  

2              10000  500 10500  1

3              2500  125  2625  2

4              4000  200  4200  2
            ・
            ・ 
            ・
95             4000  200  4200  10
 

【23937】Re:教えてください。。
回答  ウッシ  - 05/4/8(金) 10:00 -

引用なし
パスワード
   こんにちは

こんな感じで出来ますでしょうか?

Sub 統合()
  Dim i  As Long
  Dim s  As String
  Dim lstR As Long
  Dim w  As Long
  Dim wBK As Workbook
  
  Application.ScreenUpdating = False
  With Workbooks("統合.xls").Sheets("Sheet1")
    .UsedRange.Offset(1).Clear
    lstR = 2
    For i = 1 To 10
      s = "売上" & Format(i, "00")
      'SLKファイルの有るフォルダへのパス、要変更
      Set wBK = Workbooks.Open( _
            FileName:="\\・・・\・・・\・・・\" & s & ".SLK")
            
      wBK.Worksheets(s) _
        .UsedRange.Offset(1).Copy .Cells(lstR, 1)
        
      w = .Range("A65536").End(xlUp).Row
      .Range(.Cells(lstR, "N"), .Cells(w, "N")).Value = Val(Mid(s, 3))
      
      lstR = w + 1
      
      wBK.Close
    Next
    .UsedRange.Offset(1).NumberFormatLocal = "G/標準"
  End With
  Application.ScreenUpdating = True
End Sub

【23951】Re:教えてください。。
質問  なつみ  - 05/4/8(金) 15:22 -

引用なし
パスワード
   ウッシ さま

こんにちは。
ありがとうございます。(´ー`)
統合はうまくいきましたが支店番号が0表示になってしまいます(T-T )
甘えてばかりですが教えてください。


  A  B  C・・・・     K  L   M   N
 品目            金額 消費税 合計 支店 
1              5000  250  5250  0  

2              10000  500 10500  0

3              2500  125  2625  0

4              4000  200  4200  0
            ・
            ・ 
            ・
95             4000  200  4200   0

【23952】Re:教えてください。。
回答  ウッシ  - 05/4/8(金) 15:29 -

引用なし
パスワード
   こんにちは

.Range(.Cells(lstR, "N"), .Cells(w, "N")).Value = i

ではダメでしょうか?

【23953】Re:教えてください。。
お礼  なつみ  - 05/4/8(金) 15:47 -

引用なし
パスワード
   ウッシさま

できました。ありがとうございましたアリガト!(´▽`)
またなにかありましたらご指導お願いします。

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