No.1
- 回答日時:
<第1ステップ>
エクセルで、マクロの記録モード(ツールーマリロー新しいマクロの記録)にして、質問の1.、2.の操作をしてください。
それでエクセルVBAのコードはどんなものになるか分かります。
操作は
(1)シートコピー
問題のコピー元のシートのシートタブ部で右クリック
「異動またはコピー」を選ぶ。
「コピーを作成する」にチェックを入れること
(2)シート名変更
問題のシートのシートタブ部で右クリック
「名前の変更」を選択。
シートタブ部で新の名前を入力
ーー
以上で記録されたコードを変数とかで相対化するのはできるでしょう。
>COMコンポーネントを用いた、とおっしゃっているレベルだから。
ーーー
<第2ステップ>
エクセルのアプリケーションオブジェクトをつかむ
Set xlApp = CreateObject("Excel.Application")
それを頭につけて、順次、ブック、シートのオブジェクトをつかむ。
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
そしてエクセルVBAのDefaltに頼ったコードの書き方でなく、
サブおオブジェクトには親(上位)オブジェクト名を必ず先頭にかぶせる。
そのようにマクロの記録のコードを改良してください。
参考
http://www.bcap.co.jp/hanafusa/VBHLP/excel1.htm
環境を付け忘れましたが、VB2005を用いています。
また、MSDNをよく探すと詳しい情報が出ており自己解決致しました。
すぐに質問文を消したかったのですが、24時間経たないと消せないようなので放っておいた次第です。
ありがとうございました。
No.2ベストアンサー
- 回答日時:
お世話になります。
VB.NET(.NET Framework 2.0 及び Excel 2003 で動作確認)
から操作したい場合です。
1) 参照設定の追加
ソリューションエクスプローラから
該当するプロジェクトを選択し、右クリックして「参照の追加」を選ぶ。
表示されたダイアログで、COM を選択して、
Microsoft Excel x.x Object Library
を選択して、OK を押下。
2) コーディング
Imports Microsoft.Office.Interop
Public Class Form1
' デザイナで Button を張りつけてある
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 必要な変数は Try の外で宣言する
Dim xlApplication As Excel.Application
Dim saveFileName As String = "D:\" & DateTime.Now.ToString("yyyyMMddHHmmss") & ".xls"
' COM オブジェクトの解放を保証するために Try ~ Finally を使用する
Try
xlApplication = New Excel.Application()
xlApplication.Visible = True
' 警告メッセージなどを表示しないようにする
xlApplication.DisplayAlerts = False
Dim xlBooks As Excel.Workbooks = xlApplication.Workbooks
Try
' 新規にファイルを開く場合
Dim xlBook As Excel.Workbook = xlBooks.Add()
' 既存ファイルを開く場合
'Dim xlBook As Excel.Workbook = xlBooks.Open(Filename:="xlsファイルのパス")
Try
Dim xlSheets As Excel.Sheets = xlBook.Worksheets
Try
Dim xlSheet As Excel.Worksheet = DirectCast(xlSheets(1), Excel.Worksheet)
'' 最初のシートの名前を変える
xlSheet.Name = "aaa"
'' 最初のシートをコピーする
xlSheet.Copy(After:=xlSheet)
Finally
If Not xlSheets Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
End If
End Try
Finally
If Not xlBook Is Nothing Then
Try
xlBook.SaveAs(Filename:=saveFileName)
xlBook.Close()
Finally
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
End Try
End If
End Try
Finally
If Not xlBooks Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
End If
End Try
Finally
If Not xlApplication Is Nothing Then
Try
xlApplication.Quit()
Finally
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication)
End Try
End If
End Try
MessageBox.Show(saveFileName & "に保存しました")
End Sub
End Class
上記コードを実行し、Button をクリックすると
aaa というシートがコピーされて D:\yyyyMMddHHmmss.xls に
保存されるはずです。
COM を扱う場合の注意点についてはこちらをどうぞ。
http://jeanne.wankuma.com/tips/programing/releas …
VB6 から Excel を扱う場合はこちらを参考にして下さい。
http://naoko.wankuma.com/tips/tips_0001_vb6excel …
環境を付け忘れましたが、VB2005を用いています。
また、MSDNをよく探すと詳しい情報が出ており自己解決致しました。
すぐに質問文を消したかったのですが、24時間経たないと消せないようなので放っておいた次第です。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
重複するidをデータごとにまと...
-
エクセルVBA Ifでシート名が合...
-
エクセルVBA 変数への代入がう...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBAで次の様にデーター...
-
同じ作業を複数のシートに実行...
-
VBA オートフィルター繰り返し
-
VBAで同じシート名のコピー時は...
-
別のシートから値を取得するとき
-
エクセルのシート名変更で重複...
-
エクセルのマクロでアクティブ...
-
VBA ユーザーフォーム上のチェ...
-
【エクセル】オプションボタン...
-
Worksheet_Changeの内容を標準...
-
別のシートを参照して計算する方法
-
Excel VBA で自然対数の関数Ln...
-
Excel VBA 複数行を数の分だけ...
-
Excel VBAシートの色を一気に変...
-
Excel VBA 文字列のセルを反映...
-
VBA 入力月で該当シートを選択...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
別のシートから値を取得するとき
-
ブック名、シート名を他のモジ...
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
実行時エラー1004「Select メソ...
-
VBAで同じシート名のコピー時は...
-
エクセルで通し番号を入れてチ...
-
同じ作業を複数のシートに実行...
-
Excel VBA リンク先をシート...
-
ExcelのVBAのマクロで他のシー...
-
Vba UserformからExcelシートの...
-
【Excel VBA】Worksheets().Act...
-
VBA 存在しないシートを選...
おすすめ情報