|
▼Kein さん:
Kein さん、こんにちは。
>LANを構築した方が楽ですよ。そうすればマクロでデータを引っ張ることも...
私も前の会社では、LANが当たり前の世界に居たので、歯痒い程解っているのですが、何せ業界が変わり、中小になると、これが現実なんです。(辛い!(T_T))
また、今回は外部(事務所から12〜3Km)倉庫なので簡単にはいきません。
>>日々毎朝その日分を作っていきながら回す
>という作業から、開放されそうだからです。
されません、ひとまず、毎朝その日分を作っていきながら回さざるを得ません。
>>雛形が大きな表になってしまい、まして、日々、シートを印刷までしているの
>>で、ここも頭が痛いんです
>この場合「データ未入力の行を一気に非表示...」というマクロを組むだけです。
>例えば B列を基準とするなら
>
>Sub R_Hidden_Change()
> Static Hck As Boolean
>
> On Error Resume Next
> If Hck = False Then
> If WorksheetFunction.CountA(Range("B:B")) = 0 Then
> MsgBox "B列に値がありません", 48: Exit Sub
> End If
> Range("B1", Range("B65536").End(xlUp)) _
> .SpecialCells(4).EntireRow.Hidden = True
> Hck = True
> Else
> Cells.EntireRow.Hidden = False
> Hck = False
> End If
>End Sub
>
そうですね!、近頃どうも頭が固くなって来てるなーー...いかん!いかん!
ありがとうございます。
>シートを丸ごとコピーすると、シートモジュールのコードは付いてくる筈です。
>こちらでもテストで確認しています。標準モジュールについては無理ですから、
>定数 Mdl に指定します。するとコードによってActiveWorkbookにインポートされ>ます。
これは解決しました。 でも、1つ疑問があります。
と言うのは、作成されたBook(9月.xls)を開いて、VBEでシート名をダブルクリックすると、原紙(非表示にされています)のシートモジュールは、コードが表示されますが、今回のマクロで作成した日付のシートをダブルクリックしてもコードが表示されません、それで、コピーされていないと思っていたのですが、今回標準モジュールをMdlで取り込んだら、何と、シートモジュールがない日付のシートでも動作するのです!、これはどういう事でしょうか?
>>今回の各シートはセル幅、高さともコピーされていません。
>これはこちらでも確認しました。UsedRangeでコピーしていたためのようです。
>Cells全体をコピーするコードに変えた結果、行高・列幅も反映されています。
これもバッチリでした!(CellsとUsedRangeの違いも勉強になりました)
さて、何とか Kein さんからごご提示頂いた当月一ヶ月分の、新しいブックを作成するマクロは完成しました。
これを元に、日々回していく運用のマクロを考えてみます。
(まだまだ、先は遠いなーー)
チョットしたヒントをご提示して頂けたら幸いです。
よろしくお願いします。m(_ _)m
>
>Sub ThisMonth_Make_NewBook2()
> Dim MkFile As String
> Dim Ans As Integer, Scnt As Integer, NewS As Integer
> Dim SDay As Date
> Dim WS As Worksheet
> Const Mdl As String = _
> "C:\Documents and Settings\User\My Documents\モジュール\Module1.bas"
>
> MkFile = Application.DefaultFilePath & _
> "\" & Month(Date) & "月.xls"
> If Dir(MkFile) <> "" Then
> Ans = MsgBox("今月のブックは既に存在します" & vbLf & _
> "削除して新規にブックを作成しますか", 36)
> If Ans = 7 Then Exit Sub
> End If
> NewS = Day(DateSerial(Year(Date), Month(Date) + 1, 1) - 1)
> SDay = DateSerial(Year(Date), Month(Date), 1)
> With Application
> Scnt = .SheetsInNewWorkbook
> .SheetsInNewWorkbook = NewS
> .ScreenUpdating = False
> End With
> Workbooks.Add
> With ActiveWorkbook
> For Each WS In .Worksheets
> WS.Name = CStr(Format(SDay, "m月d日"))
> SDay = SDay + 1
> Next
> ThisWorkbook.Sheets("test").Copy Before:=.Worksheets(1)
> .Sheets.FillAcrossSheets .Sheets("test").Cells
> .Sheets("test").Visible = False
> .VBProject.VBComponents.Import Mdl
> .SaveAs MkFile
> '.Close
> End With
> With Application
> .ScreenUpdating = True
> .SheetsInNewWorkbook = Scnt
> End With
>End Sub
|
|