2

特定のファイルに対して機能するマクロがあります。

すべてのファイルで機能させるにはどうすればよいですか? 具体的には、開いているファイルを保存するようにファイルの名前を変更するにはどうすればよいですか?

Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+m
'
    Range("A:A,B:B").Select
    Range("B1").Activate
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLineStacked
    ActiveChart.SetSourceData Source:=Range( _
        "'cwapp5_MemCPU-Date-Mem'!$A:$A,'cwapp5_MemCPU-Date-Mem'!$B:$B")
    ChDir "D:\WayneCSV"
    ActiveWorkbook.SaveAs Filename:="D:\WayneCSV\cwapp5_MemCPU-Date-Mem.xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub
4

4 に答える 4

3
With ActiveSheet.Shapes.AddChart
    .ChartType = xlLineStacked
    .SetSourceData Source:=Range( _
    "'cwapp5_MemCPU-Date-Mem'!$A:$A,'cwapp5_MemCPU-Date-Mem'!$B:$B")
End With

ChDir "D:\WayneCSV"
ActiveWorkbook.SaveAs Filename:="D:\WayneCSV\" & *YourFileNameHere* &".xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

YourFileNameHereを、ファイルを保存する名前に置き換えます。

または、アクティブなワークブックを変更して保存するだけの場合

ActiveWorkbook.SaveAs Filename:=ThisWorkbook.FullName, _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

"D:\WayneCSV" 内のすべての可能なワークブックまたはファイルをループしたい場合はmake it work for all my files?、Excel シート、ワークブック、または "D: \WayneCSV"

編集:

Dim StrFile As String

StrFile = Dir("D:\WayneCSV\*.CSV") ' Looks up each file with CSV extension

Do While Len(StrFile) > 0 ' While the file name is greater then nothing
     Workbooks.Open Filename:= "D:\WayneCSV\" & StrFile ' Open current workbook

 ActiveSheet.Shapes.AddChart.Select ' Add a chart
 ActiveChart.ChartType = xlLineStacked ' Add a chart type
 ActiveChart.SetSourceData Source:=Range("$A1:$B1", Range("$A1:$B1").End(xlDown)) ' Set the source range to be the used cells in A:B on the open worksheet 
 With ActiveChart.Parent
     .Height = .Height*1.5 'Increase Height by 50% 
     .Width = .Width*1.5   'Increase Width by 50%
 End With 

'Note the setting of the source will only work while there are no skipped blank if you 
'have empty rows in the source data please tell me and i can provide you with another
' way to get the information 


ActiveWorkbook.SaveAs Filename:="D:\WayneCSV\" & StrFile & ".xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False  ' Save file as excel xlsx with current files name 

ActiveWorkbook.Close ' Close when finished before opening next file this can be removed if you'd like to keep all open for review at the end of loop.

StrFile = Dir ' Next File in Dir
Loop

フォルダーとデータがないとテストできないので、うまくいくかどうか教えてください。しかし、それはうまくいくはずです。

于 2013-04-09T20:02:07.147 に答える
0

どこに書いてあるか

ファイル名:="D:\WayneCSV\cwapp5_MemCPU-Date-Mem.xlsx"

それはあなたのファイル名です。これを ThisWorkbook.FullName に置き換えることができます

したがって、このようなものが得られるはずです。

Filename:=ThisWorkbook.FullName,

また、その部分がわかりません

ChDir "D:\WayneCSV"

パスの次にフルネームを入れる理由

私はExcelよりもアクセスプログラマーなので、間違っている可能性があります。

于 2013-04-09T20:00:22.607 に答える
0

あなたのマクロは、私が知る限り、いくつかのデータに基づいてグラフを追加し、シートを保存しています。

これは非常に特殊なマクロですが、他のリストにあるディレクトリをローカル ドライブのディレクトリに変更する必要がありますが、チャートを作成するデータがどこに保存されているかも確認する必要があります。

Sub Macro1()
' ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+m '  '<<< This is the naming convention and hotkey if you goto Tools > Macros in Excel 2003 or Developer > Macros in 2010

'Range("A:A,B:B").Select      '<<< This is where you are selecting all data in columns A and B and is not needed so I commented it out
'Range("B1").Activate   '<<< This code is 'activating' a cell, but not sure why, so I commented it out as it should not be needed
ActiveSheet.Shapes.AddChart.Select    '<<< You are adding a chart here
ActiveChart.ChartType = xlLineStacked    '<<<Defining a chart type
ActiveChart.SetSourceData Source:=Range( _ "'cwapp5_MemCPU-Date-Mem'!$A:$A,'cwapp5_MemCPU-Date-Mem'!$B:$B") '<<< Setting it's source data from a worksheet called 'cwapp5_MemCPU-Date-Mem' with header information from Column B and Data from Column A
ChDir "D:\WayneCSV" 
ActiveWorkbook.SaveAs Filename:="D:\WayneCSV\cwapp5_MemCPU-Date-Mem.xlsx", _         
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False   '<<< You are saving a copy of your workbook
End Sub

他のワークブックでこれを機能させるには、すべての範囲の名前をデータの場所に変更し、タブの名前をタブの名前に変更し、ワークブックの名前を保存したい名前と場所に変更する必要があります。

于 2013-04-09T20:26:51.487 に答える
0

このSOリンクをチェックしてください

あなたがしたいことは、インラインで置き換えることだ:="D:\WayneCSV\cwapp5_MemCPU-Date-Mem.xlsx"ActiveWorkbook.FullName思いActiveWorkbook.SaveAsます

于 2013-04-09T20:02:43.907 に答える