プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります。

VB2010を使用してExcelのある1行をコピーして、コピーしたものを同じシートに挿入したいのですが方法がわかりません。

画像のように、35と36の行をコピーして、37と38に全く同じ物を挿入したいです。


サイトをしらみつぶしに探しましたが、私に理解できるサイトがヒットしませんでしたので、できればサンプルコードを教えていただけると嬉しいです。

下記のようにコードを書きましたが、コピペ状態でほとんど理解していません。

Imports Microsoft.Office.Interop
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Shown
Me.Visible = False
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

'Excelブックを起動
xlBook = xlApp.Workbooks.Open("C:\test1.xls")
'Excelを表示
xlApp.Visible = False
'シートを指定
xlSheet = DirectCast(xlBook.Worksheets(1), Excel.Worksheet)
xlSheet.Activate()

'ここから
'
'
'
'
'ここまでがわかりません

' xlBook.Save() '上書き保存
xlBook.SaveAs("c:\test2.xls") '名前をつけて保存

xlBook.Close()
xlApp.Quit()
'終了処理

xlSheet = Nothing
xlBook = Nothing
xlApp = Nothing
'テストが完了したらループ処理に変更する
Dim p() As Process = Process.GetProcessesByName("Excel")
p(0).Kill()
End Sub
End Class


エクセルのバージョンはExcel 2003です。

お手数おかけしますがよろしくお願いします。

「VB2010でExcelの行をコピーして」の質問画像

A 回答 (2件)

エクセル開放とエクセルを起動のSetの部分は、


.Netでは外してOKです。

解決できて良かったです(^o^)

答えが同じでも、いろいろなやり方がありますので、

これからいろいろチャレンジしてみて下さい。

この回答への補足

お返事ありがとうございます。

>エクセル開放とエクセルを起動のSetの部分は、.Netでは外してOKです。
さらなる情報をありがとうございます。


>答えが同じでも、いろいろなやり方がありますので、
本当にそうですね。



今までは、仕事ではPCなどは使ったことがありませんが、これから少しずつ使う場面がでてきそうです。
でも、その前に「エクセル」本体の操作方法を少し覚えないといけませんね。

自宅にあるPCは「エクセル」が入っていませんでしたので、会社から古い未使用のCDがありそれをインストールしましたので、これから少し「エクセル」本体の学習もしたいと思います。

補足日時:2012/11/11 10:48
    • good
    • 0
この回答へのお礼

あの~

感謝の言葉がありません。

for i as integer =0 to 99
listbox1.items.add(感謝!)
next

お礼日時:2012/11/11 10:54

こんにちは。


VB2008でテスト済みですが。

Imports Microsoft.Office.Interop

以下、使用するプロシージャ内に入れて下さい。

Dim xlsApp As New Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet

'Excel起動
xlsApp = CreateObject("Excel.Application")
xlsBook = xlsApp.Workbooks.Open("C:\test1.xls")
xlsSheet = xlsBook.Sheets(1)

With xlsBook.Worksheets(1)
.Range("35:36").Copy Destination:=.Range("37:38")   '35、36行目をコピーして、37、38行目に貼り付け
end With

'保存時のダイアログボックスを非表示 (同じ名前がある場合の上書きしますか?のメッセージを出さない様に)
xlsApp.DisplayAlerts = False

'エクセル保存 (同じ名前がある場合は上書きされる)
xlsBook.SaveAs("C:\test1.xls")

'エクセル閉じる
xlsBook.Close
xlsApp.Quit

'エクセル開放
Set xlsSheet = Nothing
Set xlsBook = Nothing
Set xlsApp = Nothing

'エクセルファイルを再読込み
'エクセルを起動
Set xlsApp = CreateObject("Excel.Application")
Set xlsBook = xlsApp.Workbooks.Open("C:\test1.xls")
Set xlsSheet = xlsBook.Sheets(1)

'エクセル表示
xlsBook.Worksheets(1).Activate
xlsApp.Visible = True

'保存時のダイアログボックスを表示に戻す
xlsApp.DisplayAlerts = True

'エクセル開放
xlsSheet = Nothing
xlsBook = Nothing
xlsApp = Nothing

この回答への補足

お返事ありがとうございます。

できました!
嬉しいです。

ファイル数が3500ほどありますので、手作業で修正しなくて済みました。


私は、今までExcelを見たことも触ったこともなかったので、全くチンプンカンプでしたが、angel_Zさんに教えていただいたのでExcelを操作することが自由自在になりそうです。(但しVBからですけど)
Excel自体はは全くわかりません。(涙

今回教えていただいたため次の作業もできるようになりました。(やっぱりVBからですけど)
1.セルに値を挿入する方法
2.行を削除したりコピーしたり
3.その他いろいろ

VB2010でExcelを操作する場合は、インテリセンスが表示されなくても使えるメンバがたくさんあるんですね。


コードの雰囲気が、なんかVB.NETとは少し違う感じがしました。面白いですね。

補足日時:2012/11/09 19:32
    • good
    • 1
この回答へのお礼

angel_Zさんへ


自力で解決しようとすれば、どれだけの時間を要したかを考えると、お礼の言葉が見つかりません。

「感謝、感謝」しか思いつきません。



これで、解決でいいでしょうか?

お礼日時:2012/11/10 06:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A