[リストへもどる]
一括表示

投稿時間:2003/11/23(Sun) 21:17
投稿者名:舘山照夫
URL :
タイトル:
EXCEL操作について
以前、Excel操作について、教えていただき大変助かりました、ありがとうございます。
今回はそのつずきですが
約、50ファイルのExcelファイルのデータにアクセスしそのデータを一個のExcelファイルに入力し
グラフ化しようとしていますが、うまくいきません。
Excelのマクロを利用しようとしましたが、かなりのコードになり、なかなスムーズに動きません。
良い方法はありますでしょうか

private Sub Command1_Click()
  
            Dim xlApp    As Excel.Application
            Dim xlBook   As Excel.Workbook
            Dim xlSheet As Excel.Worksheet
            Set xlApp = CreateObject("Excel.Application")
            Set xlBook = xlApp.Workbooks.Open("C:\WINDOWS\デスクトップ\四半期.xls")
            Set xlSheet = xlBook.Worksheets(1)
            
            'Excel のセルに値を代入します。
            Dim i As Integer
            Dim j As Integer
            Dim FormulaR1C1 As Integer
            '下部は、EXCELのマクロをなんとかループで作成できればと思い1個だけ作成してみましたが
            j = 4
                For i = 2 To 9
                   'xlSheet.Cells(j, i) = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県.xls]Sheet1'!R1C1)"
                    xlSheet.Cells(j, i) = ActiveCell.FormulaR1C1
                        For FormulaR1C1 = 1 To 3
                           ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県.xls]Sheet1'!R3C8:R5C8)"
                           'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県.xls]Sheet1!R6C8:R7C8)" 'エラーとなったので削除
                           'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県.xls]Sheet1!R8C8:R13C8)" 'エラーとなったなったので削除
                        Next FormulaR1C1
                Next i
                
            '下部がExcelのマクロで作成したコード(一部分抜粋)で、 他50ユーザ分の同じような作業を投入
            'Range("C4").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[仙台市.xls]Sheet1'!R3C8:R5C8)"
            'Range("D4").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[仙台市.xls]Sheet1'!R6C8:R7C8)"
            'Range("E4").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[仙台市.xls]Sheet1'!R8C8:R13C8)"
            'Range("F4").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[仙台市.xls]Sheet1'!R14C8:R19C8)"
            'Range("G4").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[仙台市.xls]Sheet1'!R20C8:R25C8)"
            'Range("H4").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[仙台市.xls]Sheet1'!R26C8:R30C8)"
            'Range("I4").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[仙台市.xls]Sheet1'!R31C8:R34C8)"
            'Application.WindowState = xlNormal
            'Application.Left = 54.25
            'Application.Top = -9.5
            'Application.Width = 547.5
            'Application.Height = 442.5
            'Windows.Arrange ArrangeStyle:=xlTiled
            'Windows("四半期まとめtst.xls").Activate
            'ActiveWindow.SmallScroll ToRight:=-3
            'Range("C5").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[太白区役所xls]Sheet1'!R3C8:R5C8)"
            'Range("D5").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[太白区役所.xls]Sheet1'!R6C8:R7C8)"
            'Range("E5").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[太白区役所.xls]Sheet1'!R8C8:R13C8)"
            'Range("F5").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[太白区役所.xls]Sheet1'!R14C8:R19C8)"
           ' Range("G5").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[太白区役所.xls]Sheet1'!R20C8:R25C8)"
            'Range("G6").Select
            'ActiveWindow.SmallScroll ToRight:=1
            'Range("H5").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[太白区役所.xls]Sheet1'!R26C8:R30C8)"
            'Range("I5").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[太白区役所.xls]Sheet1'!R31C8:R34C8)"
            'Range("I6").Select
            'Application.Left = 51.25
            'Application.Top = -9.5
            'Windows.Arrange ArrangeStyle:=xlTiled
            'Windows("四半期まとめtst.xls").Activate
            'Range("C6").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県農協.xls]Sheet1'!R3C8:R5C8)"
            'Range("D6").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県農協.xls]Sheet1'!R6C8:R7C8)"
            'Range("E6").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県農協.xls]Sheet1'!R8C8:R13C8)"
            'Range("F6").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県農協.xls]Sheet1'!R14C8:R19C8)"
            'Range("G6").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県農協.xls]Sheet1'!R20C8:R25C8)"
            'Range("H6").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県農協.xls]Sheet1'!R26C8:R30C8)"
            'Range("I6").Select
            'ActiveCell.FormulaR1C1 = "=SUM('C:\WINDOWS\デスクトップ\smgyoumu\smplan\[宮城県農協.xls]Sheet1'!R31C8:R34C8)"
            'Range("I7").Select
            'xlApp.Visible = True  
            
            '標準モジュール内に記入されている場合
            'xlApp.Run ("Macro2")
            xlApp.Visible = True
            xlApp.DisplayAlerts = False  
            xlSheet.SaveAs "C:\WINDOWS\デスクトップ\smgyoumu\四半期まとめtst2.xls"  'ファイルを保存
            xlApp.Quit            
            Set xlApp = Nothing
            Set xlBook = Nothing
            Set xlSheet = Nothing
    
End Sub

投稿時間:2003/11/24(Mon) 23:07
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: EXCEL操作について
当然このような作業が発生する場合は、その事を想定したシステムにしておくべきかと
思います。
例えば、ファイル名にしたって、後で For 〜 Next で読み込みやすいように連番にするとか。
ある程度規則性をもって作成しておかなければ、簡単に集計する方法なんてないのでは。
VBでデータを作成して管理するとか。1年分のデータを一気に整理するよう事をせず月々集計
するようなやり方(工夫)をすれば、50ファイルを一気に処理しなくても済むかと思います。

又、このような処理ならVBを使う必要もないしメリットもないかと思います。
(ExcelのマクロをVBで作成しているようなものかと思います)
Excelの統合等の機能を使ってデータをまとめてグラフにした方が簡単で早いのでは
統合でなくても串刺し計算でグラフの表を作っておく方法もありますし、それともVBから
しなければならない理由でもあるのでしょうか?
それでもExcelでマクロを作っておきVBからそのマクロを実行すればいいのでは、Excelで
出来る事はExcelの方で実行した方が簡単で早いかと思います。
Excelの便利な機能を有効に活用して下さい。
VBで作ったデータをまとめてExcelのグラフに表示したいと言うなら話は別ですが。

投稿時間:2003/11/28(Fri) 18:54
投稿者名:舘山照夫
URL :
タイトル:
Re^2: EXCEL操作について
いろいろとご指導有難うごじます。
再度、中身を精査して、検討したいと思います。