tagCANDY CGI VBレスキュー(花ちゃん) - Excel 操作ワンポイントテクニック集(VB6.0 基本編) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
Excel 操作ワンポイントテクニック集(VB6.0 基本編)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

Excel 操作ワンポイントテクニック集(VB6.0 基本編) [No.128の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2013/07/23 07:21
名前: VBレスキュー(花ちゃん)

            ----------------------- 目  次 --------------------------

入力関係
 >>1  セルにデータ及び式を入力する
 >>8  Range オブジェクトを使ってのデータの1発入力
 >>18 Excel 上でコピー&ペースト(貼り付け)を実行する


書式関係
 >>2  セルのカラーを設定及び取得・カラー値の変換
 >>5  セルの書式設定を設定する
    (メニュー →書式→表示形式→分類のところで表示されている書式の設定ができます。)


画像表示関係
 >>3  Excelのシートに画像を表示及びサイズ変更
    (1) Pictureオブジェクトを使って表示
    (2) クリップボード経由での貼付け
    (3) Excel上に表示したPictureにVBから指定の画像を表示する方法
    (4) Excel上に表示した画像を拡大表示する
    (5) Excel上に表示した画像を縮小表示する
 >>17 図形(オートシェイプ等)の描画及び削除


ファイルを開く・ファイルの保存関係
 >>4  保存確認のメッセージを表示させない。
 >>9  Excel ファイルを読み取り専用で開く
 >>12 複数のCSVファイルを1つのBookに読み込む
 >>16 ファイル形式を変更(*.CSV/*.HTML 等)して保存
 >>19 すでに起動中のExcelファイル(ダブルクリック等で)をVBから編集する
    (複数の起動中のExcelファイルのフルパスを取得する)
 >>21 エクセルの自動リンクエラーのメッセージを表示させない方法

セル関係
 >>6  列幅を取得・列幅を設定・セルの文字列長に合せて列幅を設定する
 >>8  Activateなセル("A1")があるActivateセル領域を選択する
 >>8  指定のセル位置を含む空白行と空白列に囲まれた最小のセル範囲を取得
 >>8  シート(xlSheet)上の使用済みのセル範囲を取得
 >>11 行・列・セルの挿入及び行・列・セルの削除
 >>23 選択したセルが定義した指定の範囲にあるかどうかを確認する方法
 >>25 AutoFill メソッドを使ってセルに連続してデータを入力する

ブック・シート関係
 >>7  シート数・シート名の取得及びシートの追加・削除
    (1) シート数の取得
    (2) シート名の取得及びシート名の変更
    (3) 新規にシートの追加
    (4) シートの削除
    (5) シート名一覧(全シート名)の取得
       (6) 新しいブックのシート数を設定する
 
関数関係
 >>8  データの個数・最小値・最大値・合計・平均値の取得
 >>10 セルに同じ数式を入れるには(全ての行の横計等を求める場合)


データの抽出
 >>13 指定列のデータから重複しないデータを抽出
  >>24 選択範囲内の文字の出現回数を数える方法
  >>26 Findメソッドを使っての選択範囲内の文字の出現回数を数える

その他
 >>8  R1C1形式の数値で指定したアドレスをA1形式に変換する関数
 >>14 マクロをVBのコードに変換する場合の注意事項
       (Excel が終了しない(タスク上に残る・プロセスが解放されない)要因)
 >>15 Excelの異なるバージョン間で同じプログラムを使用するには
       (参照設定を外して使用する方法)
 >>20 メニューバーとツールバーを非表示(使用不可)にする
 >>22 Excel画面廻りの表示設定色々(上記のNo.20 と同様の操作)

※ 項目の先頭の数値は、スレッドの記事番号を表しております。


【Excel 操作ワンポイントテクニック集(VB6.0 応用編)】
  http://hanatyan.sakura.ne.jp/patio/read.cgi?no=129

* カテゴリー:[エクセル]

***********************************************************************************

------------------------------------------------------------------------------------
テスト環境の基本設定

Option Explicit
Private Sub Command1_Click()
'★プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryに
' チェックを入れておいて下さい。
'==================================================================
'Excel の起動処理(新規ファイルを使用する場合)
   'オブジェクトへの参照を格納する変数を宣言(事前バインディング)
   Dim xlApp   As Excel.Application
   Dim xlBook  As Excel.Workbook
   Dim xlSheet As Excel.Worksheet

   '変数にオブジェクトの参照を代入します。
   '新規 workbookとworksheet オブジェクトを作成します。
   Set xlApp = CreateObject("Excel.Application")
   Set xlBook = xlApp.Workbooks.Add
   Set xlSheet = xlBook.Worksheets(1)  '1 の代わりにシート名でも可
   'エクセルを表示します。(非表示でも動作します)
   xlApp.Visible = True

'==================================================================
' Excel の起動処理(既存のファイルを使用する場合)
   'オブジェクトへの参照を格納する変数を宣言(事前バインディング)
'   Dim xlApp      As Excel.Application
'   Dim xlBook     As Excel.Workbook
'   Dim xlSheet    As Excel.Worksheet
'   Dim xlFilePath As String
'   xlFilePath = "c:\Test.xls"
'   Set xlApp = CreateObject("Excel.Application")
'   Set xlBook = xlApp.Workbooks.Open(xlFilePath)
'   Set xlSheet = xlBook.Worksheets(1)
'   xlApp.Visible = True

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分





'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

'==================================================================
'終了処理
   '--------------------------------------------------------------
   '下記コードはこのサンプルとは直接、関係ありません。
   '動作確認の為に Excel を5秒間表示して置く為のものです。
   Dim lngSt As Long
   lngSt = Timer
   Do While Timer - lngSt < 5
      DoEvents
   Loop
   '--------------------------------------------------------------
  
   '保存時の問合せを非表示に設定
   xlApp.DisplayAlerts = False
  
   'Worksheet を名前をつけて保存します
   'xlSheet.SaveAs xlFilePath
  
   'オブジェクトを解放します
   Set xlSheet = Nothing
   xlBook.Close            'Book を閉じる
   Set xlBook = Nothing
   xlApp.Quit              'Quit メソッドを使って Excel を終了します。
   Set xlApp = Nothing
End Sub
メンテ

Page: 1 |

セルにデータ及び式を入力する(VB6.0 基本編)  (No.1の個別表示) [スレッド一覧へ]
日時: 2007/08/08 15:21
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:データを入力する,数式を入力する,関数を入力する                      *
***********************************************************************************

基本的な事であるわりには、Cells プロパティの使用方法を間違って使用されている場合が
多いので書いておきます。

-----------------------------------------------------------------------------------
セルにデータ及び式を入力する - 花ちゃん   2007/08/08
-----------------------------------------------------------------------------------

テスト環境の基本設定 のコードの[Excel 操作部分]を下記のコードと入れ替えて下さい。

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分
   ' Excel のセルに値を代入します。
   xlSheet.Cells(1, 1).Value = "12"
   xlSheet.Cells(2, 1).Value = "34"
   'Formula プロパティを使ってセルに式を挿入します。
   xlSheet.Cells(3, 1).Formula = "=A1+A2"

   xlSheet.Range("B1").Value = 12
   xlSheet.Range("B2").Value = 34
   xlSheet.Range("B3").Value = "=sum(B1:B2)"

   xlSheet.Range(xlSheet.Cells(1, 3), xlSheet.Cells(1, 3)).Value = 12
   xlSheet.Range(xlSheet.Cells(2, 3), xlSheet.Cells(2, 3)).Value = 34
   xlSheet.Range(xlSheet.Cells(3, 3), xlSheet.Cells(3, 3)).Value = "=sum(C1:C2)"

   '下記でもエラーが表示されずに同じように答えも求められますが
   'プロセスが残ったままになります。
   'プログラムを終了するとプロセスも解放されるので勘違いする人もあるようです。
'   xlSheet.Range(Cells(1, 4), Cells(1, 4)).Value = 12
'   xlSheet.Range(Cells(2, 4), Cells(2, 4)).Value = 34
'   xlSheet.Range(Cells(3, 4), Cells(3, 4)).Value = "=sum(D1:D2)"
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

上記のコードのコメントを外して試して見て下さい。

上記コードがじっこうされ、Excel が閉じた後に(VB は起動状態のまま)プロセスが
解放されているか確認して見て下さい。

メンテ
セルのカラーを設定及び取得・カラー値の変換(VB6.0 基本編)  (No.2の個別表示) [スレッド一覧へ]
日時: 2007/08/08 15:45
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:書式設定,カラー,色,セル色,,                                         *
***********************************************************************************

元質問: VBからエクセルのセルの色指定 - 今回匿名  2001/06/23 19:21 No.2333
既存のエクセルのセルに何色がついているか判断する方法を教えてください。

元質問: Excelで色の判別 - VAL 08/23-09:44 No.159
 VB6でExcelを操作したいのですが、セルの色を判断することはできないのでしょうか?

-----------------------------------------------------------------------------------
RE:VBからエクセルのセルの色指定 - 花ちゃん  2001/06/24 1:05 No.2336
-----------------------------------------------------------------------------------
ヘルプにもここにも載っていますよ!
まず自分で解かる範囲は調べましょう Color とか RGB とかをヘルプで見るとか!
MyColor = xlSheet.Range("A1:A1").Interior.Color
xlSheet.Range("A3:A4").Interior.Color = MyColor

-----------------------------------------------------------------------------------
セルのカラーを設定及び取得・カラー値の変換 - 花ちゃん  2007/08/08
-----------------------------------------------------------------------------------

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(セルのカラーを設定・取得)
   With xlSheet.Range("G2").Interior
      'セルのカラーを設定する下記のどの方法でも可
      .Color = QBColor(10)
      .Color = RGB(255, 0, 255)
      .Color = vbMagenta
      .ColorIndex = 20
      .Color = 255
      .ColorIndex = xlNone    'セルの色(内部色)を標準にする
   End With
  
   Dim co As Long, i As Integer, r As Integer, g As Integer, b As Integer
   'ColorIndex 値の一覧を表示
   For i = 1 To 56
      'セルに色を設定
      xlSheet.Cells(i, 1).Interior.ColorIndex = i
      'セルの色を取得
      co = xlSheet.Cells(i, 1).Interior.Color
      'セルの色を長整数型(Long)で表示
      xlSheet.Cells(i, 2).Value = co
      '16進表記に変換表示
      xlSheet.Cells(i, 3).Value = "&H" & Hex(co)
      'RGB 値表記に変換
      r = co And vbRed
      g = (co And vbGreen) \ &H100
      b = (co And vbBlue) \ &H10000
      'セルの色をRGB値で表示
      xlSheet.Cells(i, 4).Value = "RGB(" & r & "," & g & "," & b & ")"
   Next i
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

-----------------------------------------------------------------
ColorIndex 値の一覧を表示した画像
 http://hanatyan.sakura.ne.jp/samplepic/excel-1-1.gif
メンテ
Excelのシートに画像を表示及びサイズ変更(VB6.0 基本編)  (No.3の個別表示) [スレッド一覧へ]
日時: 2007/08/09 14:17
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:画像,イメージ,クリップボード                                        *
***********************************************************************************

元質問:VBからExcelのシートへ画像転送 - ogaway  2002/08/21-11:28 No.92

VBからExcelのシートへ画像を貼り付けたいと思います。
詳細はVBのフォームにイメージコントロールか、ピクチャーコントロールに表示されている画像を、Excelのシートのあるセルに転送したいと思っています。

-----------------------------------------------------------------------------------
Excelのシートに画像を表示及びサイズ変更 - 花ちゃん  2007/08/08
-----------------------------------------------------------------------------------

1.Pictureオブジェクトを使って表示
   Excel2002 からの機能です。簡単だけど画像サイズが元のサイズより大きく表示される
  (この事はExcel上で画像を呼び込んでも同じである。)

2.クリップボード経由での貼付け
   こちらは元のサイズで表示します。

3.Excel上に表示したPictureにVBから指定の画像を表示する方法です。
  予め、Excelファイル内にマクロを作成しておきそのマクロをVBから操作する

4.Excel上に表示した画像を拡大表示する

5.Excel上に表示した画像を縮小表示する

----------------------------------------------------------------------------- 
 上記サンプルコードは、当サイト内に掲載しております。
  http://hanatyan.sakura.ne.jp/vbhlp/Excel12.htm


----------------------------------------------------------------------------- 
元質問:EXCELに画像貼り付け - もんきい  2002/10/22-16:22 No.1098
----------------------------------------------------------------------------- 
エクセルのテンプレートの特定のセルに、画像を貼り付けたいのですが、特定の位置に張り付けの指定方法が解りません。

----------------------------------------------------------------------------- 
Re: EXCELに画像貼り付け - A221  2002/10/22-17:24 No.1099
----------------------------------------------------------------------------- 
Private Sub Form_Load()
    Dim strExcelFile As String
    Dim objExcelbook As Excel.Workbook

    strExcelFile = "C:\test.xls"
    Set objExcelbook = GetObject(strExcelFile, "Excel.Sheet")
    'セルに画像を貼り付け

    objExcelbook.Windows(1).Visible = True
    objExcelbook.ActiveSheet.Range("F10").Select
    objExcelbook.ActiveSheet.Pictures.Insert("C:\aalogo.bmp").Select

End Sub
メンテ
保存確認のメッセージを表示させない(VB6.0 基本編)  (No.4の個別表示) [スレッド一覧へ]
日時: 2007/08/16 23:27
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:保存時,終了時,ダイアログ,                                           *
***********************************************************************************

元質問:EXCELの上書きしますかを出さない方法 - けんじ  2002/08/27-20:00 No.244

VBから既存のEXCELシートを起動しデータをセットしてから保存するプロプラムを作成しました。
しかし、保存する時に「この場所に〜既にあります置き換えますか?」のメッセージBOXが表示
されてしまします。メッセージを出さず、上書き保存する方法は無いでしょうか

-----------------------------------------------------------------------------------
保存確認のメッセージを表示させない - 花ちゃん  2007/08/08
-----------------------------------------------------------------------------------
当サイト内や過去のログにも掲載されてはいるのですが、質問が多いのでここにも掲載して
おきます。

保存処理をするまでに下記の1行を、どこかに記入して下さい。
  xlApp.DisplayAlerts = False

と書いておいたら起動する前に書かれた方もあったので具体例を下記に書いておきます。

'==================================================================
'終了処理
  
   '保存時の問合せを非表示に設定
   xlApp.DisplayAlerts = False   '下記の保存処理の直前に書いて下さい。

   'Worksheet を名前をつけて保存します
   'xlSheet.SaveAs xlFilePath
  
   'オブジェクトを解放します
   Set xlSheet = Nothing
   xlBook.Close            'Book を閉じる
   Set xlBook = Nothing
   xlApp.Quit              'Quit メソッドを使って Excel を終了します。
   Set xlApp = Nothing
End Sub
メンテ
セルの書式設定を設定する(VB6.0 基本編)  (No.5の個別表示) [スレッド一覧へ]
日時: 2007/08/10 19:31
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:書式設定,文字列,日付,桁区切り                                       *
***********************************************************************************

元質問:VBからExcelセルの書式指定 - StepJun  2002/08/26-00:46 No.200
VBよりExcelセルに値を設定したときにセル書式を設定したいのです。
表示書式の初期値は”標準”になっていますが、数値を文字列として表示したいのですが、小さい数字はよいのですが、20桁ぐらいの数値を代入するとエラー表示されます。
表示スタイルを文字列に指定するのはどうしたらよいですか?

-----------------------------------------------------------------------------------
Re: VBからExcelセルの書式指定 - あき☆彡   2002/08/26-02:09 No.201
-----------------------------------------------------------------------------------

エクセルのマクロ記録を有効に使うと良いです(^o^)/

エクセルでマクロ記録を開始して、
表示スタイルを文字列にすると
-------------------------
    Range("B3").Select
    Selection.NumberFormatLocal = "@"
-------------------------
と書かれています。

表示スタイルを文字列にするには、
NumberFormatLocalプロパティに"@"を設定すれば良い事が分かります。


-----------------------------------------------------------------------------------
セルの書式設定を設定する - 花ちゃん  2007/08/09
-----------------------------------------------------------------------------------
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(セルの書式を設定する)

   xlSheet.Range("A:A").NumberFormat = "@"         '文字列の場合はこちらでも可
   'NumberFormatLocal プロパティは、コード実行時の言語の文字列で設定したい時に使用します。
   xlSheet.Range("B:B").NumberFormatLocal = "@"    '文字列

   xlSheet.Range("B2:B3").NumberFormatLocal = "G/標準"      '標準
   xlSheet.Range("C:C").NumberFormatLocal = "yyyy""年""m""月""d""日"""   '日付 2007年8月9日
   xlSheet.Range("D:D").NumberFormatLocal = "#,##0_ "       '数値で桁区切り

'NumberFormat プロパティ と NumberFormatLocal プロパティの表示形式の文字列は、Format
'関数で使う表示形式の文字列とは異なります。
'表示形式の文字列は、メニュー →書式→表示形式→分類のリストのユーザ定義を選択した時に
'コンボボックスに表示される書式の文字列が使用できます。

'NumberFormat プロパティ と NumberFormatLocal プロパティ 共 [97][2000][2002][2003] で
'使用可能です。

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

メンテ
列幅を取得・設定・セルの文字列長に合て列幅を設定(VB6.0 基本編)  (No.6の個別表示) [スレッド一覧へ]
日時: 2007/08/09 11:11
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:列幅,列の幅,自動設定,オートフィット                                 *
***********************************************************************************

元質問: Excelの列幅を設定したいです。 - ゆうや  2002/10/08-18:12 No.917

Excelで列幅(行幅)をダブルクリックすると、セル内容にあわせて自動的に幅を変更できますが、VBからExcelに対してこれをやりたい時、何かコマンドで一発実行できるのでしょうか。

-----------------------------------------------------------------------------------
Re: Excelの列幅を設定したいです。 - batchman  2002/10/09-08:58 No.932
-----------------------------------------------------------------------------------
SheetオブジェクトのColumnsプロパティで列のRangeオブジェクトを取得して、AutoFitメソッド実行すれば出来ますよ。


-----------------------------------------------------------------------------------
列幅を取得・列幅を設定・セルの文字列長に合せて列幅を設定 - 花ちゃん  2007/08/09
-----------------------------------------------------------------------------------
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(列幅を取得・列幅を設定・セルの文字列長に合せて列幅を設定する)
   '列幅を取得(列幅の単位は、標準スタイルの 1 文字分の幅に相当します。
   'プロポーショナル フォントでは、数字の 0 の幅が列幅の単位になります)
   Debug.Print xlSheet.Range("A:X").ColumnWidth    '8.38(72ピクセル)
   '列幅を取得(ポイント単位)
   Debug.Print xlSheet.Range("A:X").Width          '1296
   'A列〜X列までの列幅を20に設定
   xlSheet.Range("A:X").ColumnWidth = 20
   '仮データを入力
   xlSheet.Range("B1:G1").Value = 1234567
   '仮データの文字列長に合せて列幅を自動調整
   xlSheet.Range("B:G").Columns.AutoFit
  
   '下記でも設定できますが、上記が正しいようです。
  ' xlSheet.Columns("B:G").AutoFit

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆



メンテ
シート数・シート名の取得及びシートの追加・削除(VB6.0 基本編)  (No.7の個別表示) [スレッド一覧へ]
日時: 2008/07/19 14:11
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:シート数,シート名,追加・削除,シート名の一覧                         *
***********************************************************************************

元質問:VBからExcelシートを操作したいのですが。 - ゆうや 2002/10/04-17:52 No.847

VBから新規Bookを作って、データを書き込んで保存したいのですが、Sheetの枚数を追加、削除したいと思っているのですが、よく分かりません。
あと、同時に、Sheet名をVBから変更したいのですが、方法が分かりません。

-----------------------------------------------------------------------------------
Re: VBからExcelシートを操作したいのです.. - Say  2002/10/05-00:53 No.850  
-----------------------------------------------------------------------------------
Excel Object 操作のコードがわからないときは、Excelで「新しいマクロの記録」を用いて
一連の操作をやってみる、というのは常道手段です。

Sheets → WorkSheets に置き換える必要があったりしますから、得られるコードはあくまで参考資料に過ぎませんが・・・。


-----------------------------------------------------------------------------------
シート数・シート名の取得及びシートの追加・削除 - 花ちゃん  2007/08/09
-----------------------------------------------------------------------------------
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(シート数・シート名の取得及びシートの追加・削除)
   Dim xlSheet1 As Excel.Worksheet
   'シート数の取得
   Debug.Print xlBook.Worksheets.Count    '3
   '新規にシートを追加
   Set xlSheet1 = xlBook.Worksheets.Add
   '追加したシートの名前を取得
   Debug.Print xlSheet1.Name              'Sheet4
   '追加したシートの名前を変更
   xlSheet1.Name = "Test1"
   '変更したシート名を取得(確認)
   Debug.Print xlSheet1.Name              'Test1
   'シート数を取得
   Debug.Print xlBook.Worksheets.Count    '4
   '追加したシートを削除
   xlBook.Worksheets("Test1").Delete
   'シート数を取得
   Debug.Print xlBook.Worksheets.Count    '3
  
   'シート名の取得
   Dim Sheet As Excel.Worksheet
   For Each Sheet In xlBook.Worksheets
      Debug.Print Sheet.Name
   Next

 '-----------------------------------------------------------------------
  '新規にBook を開いた時に表示したいシート数を設定する場合
 'Excelのツール→オプション→全般→新しいブックのシート数 の設定と同じ

   xlApp.SheetsInNewWorkbook = 1
  
  'Book をオープンする前に書いて下さい。
 '-----------------------------------------------------------------------


'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
メンテ
Excelの関数の使用例及び入力済み範囲の取得・他(VB6.0 基本編)  (No.8の個別表示) [スレッド一覧へ]
日時: 2013/07/21 07:45
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:シート数,シート名,追加・削除,シート名の一覧                         *
***********************************************************************************

元質問: Excelの関数の使い方について - 秋風  2002/11/12-11:16 No.1335

 Excelで、データを読み込ませた後、データ値のMIN値を出したいのですが、どのように範囲選択するのか分かりません。
 データ表は、
  A(MIN値)      B     C     D     E    F
1     4          4     5     8     9
2     3          3     5     9
3     1          7     1     6     4    3
のような感じでA列にMIN値をオートで入れたいのです。

データ値(列に入る)と行数が可変なものですから、Rangeの所で、":"がうまく使用できません。列に関しては、256まで全て選択で固定させようと思っています。

-----------------------------------------------------------------------------------
Re: Excelの関数の使い方について - A221  2002/11/12-11:59 No.1336  
-----------------------------------------------------------------------------------
Rangeの指定は文字列ではなかったかと。セルにまんま式を入れてしまう方法です。
#動作の確認はしていません。

Dim Col As Long
Dim Row As Long
Dim MinRange As String
'Rows=データの行数
For i=0 To Rows
    Col = lngkikakugyou - 1
    minrange = "B" & i & ":" & Code2Alphabet(Col) & i
    xlSheet.Cells(i, 1).Value = "=Min(" & minrange & ")"
Next i

Public Function Code2Alphabet(ByVal X As Long) As String
    Dim Lcode As String
    Dim Scode As String
    If (X \ 27) Then Lcode = Chr$(64 + ((X + (X \ 27)) \ 27))
    X = (X Mod 27) + (X \ 27)
    Scode = Chr$(64 + (X Mod 27))
    Code2Alphabet = Lcode + Scode
End Function

-----------------------------------------------------------------------------------
Excelの関数の使用例及び入力済み範囲の取得・他 - 花ちゃん  2007/08/09
-----------------------------------------------------------------------------------
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(Excelの関数の使用例及び入力済み範囲の取得・他)
   'テスト用データの作成及び入力(Range オブジェクトを使ってのデータの入力例)
   Dim xlRange As Excel.Range
   Dim Dat(1 To 3, 1 To 6) As Variant
   Dat(1, 1) = 4: Dat(1, 2) = 4: Dat(1, 3) = 5: Dat(1, 4) = 8: Dat(1, 5) = 9: Dat(1, 6) = ""
   Dat(2, 1) = 3: Dat(2, 2) = 3: Dat(2, 3) = 5: Dat(2, 4) = 9: Dat(2, 5) = "": Dat(2, 6) = ""
   Dat(3, 1) = 1: Dat(3, 2) = 7: Dat(3, 3) = 1: Dat(3, 4) = 6: Dat(3, 5) = 4: Dat(3, 6) = 3
  
   'R1C1形式の数値で指定したアドレスをA1形式に変換する関数を使用
   Set xlRange = xlSheet.Range(ToA1Style(1, 1, 6, 3))    'データの入力セル範囲
   xlRange.Value = Dat                                   'セルへデータの入力
  
   'データの入力範囲の取得
   '指定のセル位置を含む空白行と空白列に囲まれた最小のセル範囲を取得
   'Activateなセル("A1")があるActivateセル領域を選択します。
   xlSheet.Range("A1").Activate
   xlApp.ActiveCell.CurrentRegion.Select
   '----------------------------------------------
   'Address プロパティでその範囲を A1 形式で取得。
   xlSheet.Cells(5, 1).Value = "セル A1 があるActivateセル領域は " & _
         xlApp.ActiveCell.CurrentRegion.Address(False, False, xlA1) & _
                  " の範囲です。"                                             'A1:F3
   '----------------------------------------------
   'xlSheet 上の使用済みのセル範囲を取得
   xlSheet.Cells(6, 1).Value = "使用済みセル領域は " & _
         xlSheet.UsedRange.Address(False, False, xlA1) & " です。"            'A1:F5

   '-----------------------------------------------
   'Excel の関数の使用例(Excel 標準の取得値と同じです)
  
   'データの個数を取得
   xlSheet.Cells(8, 1).Value = "個数"
   xlSheet.Cells(8, 2).Value = "=COUNT(" & ToA1Style(1, 1, 6, 3) & ")"        '15
   'データの最小値を取得
   xlSheet.Cells(9, 1).Value = "最小値"
   xlSheet.Cells(9, 2).Value = "=MIN(" & ToA1Style(1, 1, 6, 3) & ")"          '1
   'データの最大値を取得
   xlSheet.Cells(10, 1).Value = "最大値"
   xlSheet.Cells(10, 2).Value = "=MAX(" & ToA1Style(1, 1, 6, 3) & ")"         '9
  
   'データの合計を取得
   xlSheet.Cells(11, 1).Value = "合計"
   xlSheet.Cells(11, 2).Value = "=SUM(" & ToA1Style(1, 1, 6, 3) & ")"         '72
   'データの平均値を取得
   xlSheet.Cells(12, 1).Value = "平均"
   xlSheet.Cells(12, 2).Value = "=AVERAGE(" & ToA1Style(1, 1, 6, 3) & ")"     '4.8   72÷15
  
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

'セルのアドレスの形式をA1形式に変換する関数
Private Function ToA1Style(ByVal C1 As Integer, ByVal R1 As Integer, _
                        ByVal C2 As Integer, ByVal R2 As Integer)
   Dim i As Integer, A1 As String, A2 As String
   i = Int((C1 - 1) / 26)
   A1 = IIf(C1 > 26, Chr$(64 + i), "")
   i = C1 - 26 * i
   A1 = A1 & Chr$(64 + i)
  
   i = Int((C2 - 1) / 26)
   A2 = IIf(C2 > 26, Chr$(64 + i), "")
   i = C2 - 26 * i
   A2 = A2 & Chr$(64 + i)
   ToA1Style = A1 & R1 & ":" & A2 & R2
End Function


------------------------------------------------------------
 上記の実行結果
 http://hanatyan.sakura.ne.jp/samplepic/excel-8-1.gif

注意
-----------------------------------------------------------------------------------
上記のセルのアドレスの形式をA1形式に変換する関数は、Excel 2007 では、703列目以降の
列で、正しい値が返らないようです。
(普通は、700列以上のセルを使用する事は無いと思いますが)
その場合は、下記のリンクの魔界の仮面弁士さん作の関数を使わせて頂いて下さい。
 http://yaplog.jp/orator/archive/77
メンテ
Excel ファイルを読み取り専用で開く(VB6.0 基本編)  (No.9の個別表示) [スレッド一覧へ]
日時: 2007/08/16 13:18
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:オープン,開く,読み取り専用,リードオンリー                           *
***********************************************************************************

元質問:Excelを読み取り専用で開く - かず  2003/01/24-18:47 No.2409

排他的に人がつかんでるExcelファイルを読み取り専用で開きたいと思っております。

EXCELファイルを読み取り専用で開くには - まっぴー  2005/01/21-13:59 No.1695

-----------------------------------------------------------------------------------
Re: Excelを読み取り専用で開く - 花ちゃん  2003/01/24-19:26 No.2413
-----------------------------------------------------------------------------------

Excel の起動処理の部分を下記に変更して見て下さい。

'------------------------------------------------------------------------------------
'  Excel の起動処理(既存のファイルを使用する場合)
'  オブジェクトへの参照を格納する変数を宣言 (事前バインディング)
   Dim xlApp      As Excel.Application
   Dim xlBook     As Excel.Workbook
   Dim xlSheet    As Excel.Worksheet
   Dim xlFilePath As String
   xlFilePath = "c:\Test.xls"
   Set xlApp = CreateObject("Excel.Application")
  
   'Open メソッド の引数に ReadOnly:=True を指定すれば、読み取り専用で開けます。
   'Open メソッド の引数 はExcel のバージョンにより違いがありますので注意して
   '下さい。特に参照設定を外して、実行時バインディング(レイトバインディング)で
   '使用されているような場合は注意して下さい。
   Set xlBook = xlApp.Workbooks.Open(xlFilePath, ReadOnly:=True)
  
   Set xlSheet = xlBook.Worksheets(1)
   xlApp.Visible = True
'------------------------------------------------------------------------------------

因みに、ReadOnly で開いても書込み及び名前を付けて保存はできますが、上書き保存は
出来ません。
又、パスワードの設定も同様に、Open メソッド の引数で指定するば実行できます。

メンテ
セルに同じ数式を入れるには(行の横計等を求める場合)(VB6.0 基本編)  (No.10の個別表示) [スレッド一覧へ]
日時: 2007/08/10 15:16
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:同じ式,式をコピー,小計,合計                                  *
***********************************************************************************

元質問:Excel の列に同じ数式を入れたい場合は? - チョコ  2003/01/24-20:43 No.2417

  | A   B   C  
-------------
1 | 1   5
2 | 2   6
3 | 3   7

という数値があって C1=A1+B1 , C2=A2+B2 , C3=A3+B3 という数式を入れるプログラムにしたいのですが、

-----------------------------------------------------------------------------------
Re: Excel の列に同じ数式を入れたい場合は.. - 魔界の仮面弁士  2003/01/25-00:14 No.2420
-----------------------------------------------------------------------------------
xlsSheet.Range("C1:C3").FormulaR1C1 = "=RC[-2]+RC[-1]"


-----------------------------------------------------------------------------
Excel 上なら範囲を選択して、Σ で一発なのでマクロを取ってみると内部では別々に
求めているようで下記より複雑でした。  
                          ---- by 花ちゃん ----
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(Excelの関数の使用例同じ式を入れたい)
   Dim xlRange As Excel.Range
   Dim Dat(1 To 3, 1 To 4) As Variant
   Dat(1, 1) = 4: Dat(1, 2) = 4: Dat(1, 3) = 5: Dat(1, 4) = 8
   Dat(2, 1) = 3: Dat(2, 2) = 3: Dat(2, 3) = 5: Dat(2, 4) = 9
   Dat(3, 1) = 1: Dat(3, 2) = 7: Dat(3, 3) = 1: Dat(3, 4) = 6
   Set xlRange = xlSheet.Range(ToA1Style(1, 1, 4, 3))
   xlRange.Value = Dat
  
   '縦計を求める
   xlSheet.Range("A4:D4").FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
  
   '横計を求める及び総合計を求める
   xlSheet.Range("E1:E4").FormulaR1C1 = "=SUM(RC[-4]:RC[-1])"

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
メンテ
行・列・セルの挿入及び行・列・セルの削除(VB6.0 基本編)  (No.11の個別表示) [スレッド一覧へ]
日時: 2007/08/10 23:44
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:書式設定,カラー,色,セル色,,                                         *
***********************************************************************************

元質問: VBからExcelに行を挿入 - ニキ  2003/02/25-11:50 No.2879  

既存のexcelファイルの任意の行にを行を挿入し表等を描画する事は可能なのでしょうか?
データのやりとりや、セルに値を入れるのはわかるのですが、行を挿入するというのがわかりません。

-----------------------------------------------------------------------------------
行・列・セルの挿入及び行・列・セルの削除 - 花ちゃん  2007/08/10
-----------------------------------------------------------------------------------
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(行・列・セルの挿入及び行・列・セルの削除)
   '何も記入していないと解らないので仮データを記入
   Dim i As Long
   For i = 1 To 20
      xlSheet.Cells(1, i).Value = i
      xlSheet.Cells(i, 1).Value = i
      xlSheet.Cells(i, 3).Value = i
   Next i
   '---------------------------------------------------------
   '4行目と5行の間に1行挿入します。
   xlSheet.Rows(5).Insert
   xlSheet.Rows(5).Insert shift:=xlShiftDown    '上記と同じ(有効にならない)
   '4行目と5行の間に1行挿入します。
   '下記の場合は、"A1" のように指定するとセルの挿入になる
   xlSheet.Range("5:5").Insert
   '下記の場合は、"B5" として行の挿入になる
   xlSheet.Range("B5").EntireRow.Insert
  
   '4列目と5列の間に1列挿入します。
   xlSheet.Columns(5).Insert
   xlSheet.Range("E:E").Insert
   xlSheet.Range("E:E").EntireColumn.Insert
  
   'C列の5行目にセルを挿入します。
   xlSheet.Range("C5").Insert
   'C列の5行目のセルを右に挿入します。
   xlSheet.Range("C5").Insert shift:=xlShiftToRight
  
   '5行目を削除します。
   xlSheet.Rows(5).Delete
   xlSheet.Range("5:5").Delete
   xlSheet.Range("A5").EntireRow.Delete
  
   '5列目を削除します。
   xlSheet.Columns(5).Delete
   xlSheet.Range("E:E").Delete
   xlSheet.Range("E:E").EntireColumn.Delete
      
   'C列の5行目にセルを削除します。
   xlSheet.Range("C5").Delete
  
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

Insert メソッド Delete メソッド の引数 CopyOrigin は、[97][2000]では使用できません。

EntireRow プロパティ  EntireColumn プロパティ は、指定したセル範囲を含む行又は、
列全体を扱う場合に使用します。
メンテ
複数のCSVファイルを1つのBookに読み込む(VB6.0 基本編)  (No.12の個別表示) [スレッド一覧へ]
日時: 2007/08/11 20:46
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:オープン,開く,CSVファイル,まとめる                              *
***********************************************************************************

元質問:複数のCSVデータ⇒XLSブック - Blue  2003/05/30-17:12 No.4200
CSVデータを1枚のXLSシートのように扱ってブックにすることはできないでしょうか?

-----------------------------------------------------------------------------------
Re: Excelを読み取り専用で開く - 花ちゃん  2003/01/24-19:26 No.2413
-----------------------------------------------------------------------------------
ひとつにまとめるだけなら、こんな方法も

Private Sub Command1_Click()
    Dim AFilePath As String
    Dim BFilePath As String
    Dim CFilePath As String
    AFilePath = App.Path & "\AFile.CSV" & " + "
    BFilePath = App.Path & "\BFile.CSV" & " "   '半角スペースを付加
    CFilePath = App.Path & "\CFile.CSV"
    Shell "command.com /c copy " & AFilePath & BFilePath & CFilePath, 0
End Sub

-----------------------------------------------------------------------------------
元質問:一つのBookで複数のCSVを読み込む - TOM  2005/01/13-18:25 No.1573
-----------------------------------------------------------------------------------
a.csv、b.csvという二つのCSVファイルがあります。
Sheet1にa.csvを、Sheet2にb.csvを読み込みたいのですがどのようにすればいいのでしょうか?

-----------------------------------------------------------------------------------
Re: 一つのBookで複数のCSVを読み込む - Say   2005/01/14-03:52 No.1583
-----------------------------------------------------------------------------------
各WorksheetオブジェクトのQueryTables.Add メソッドで可能ではないかと。


-----------------------------------------------------------------------------------
複数のCSVファイルを1つのBookに読み込む - 花ちゃん  2007/08/11
-----------------------------------------------------------------------------------
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(複数のCSVファイルを1つのBookに読み込む)
   Dim CSVFile(1 To 3) As String
   CSVFile(1) = "c:\Test1.CSV"
   CSVFile(2) = "c:\Test2.CSV"
   CSVFile(3) = "c:\Test3.CSV"
   Dim AllTextFormat(255) As Integer
   Dim i As Long
   For i = 0 To 255
      AllTextFormat(i) = 2    '全ての列を文字列型にする為の配列
   Next i
  
   For i = 1 To 3
      'ファイル数分シートがあるかを調査
      If xlBook.Worksheets.Count >= i Then
         Set xlSheet = xlBook.Worksheets(i)
      Else
         '無ければシートを追加
         Set xlSheet = xlBook.Worksheets.Add
      End If
      With xlSheet.QueryTables.Add(Connection:="TEXT;" & CSVFile(i), _
                         Destination:=xlSheet.Range("A1"))
         .TextFilePlatform = 932    'Excel 2000 の場合は、xlWindows で
         .TextFileCommaDelimiter = True
         '全ての列をテキスト型に設定(無難なので)
         .TextFileColumnDataTypes = AllTextFormat
         .Refresh
      End With
   Next i
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

TextFilePlatform プロパティ の定数は、xlMacintosh  xlMSDOS  xlWindows  の3つしか
書いていないなのですが、Excel 2002 では、どれを使っても文字化けしてしまいます。
色々調べた結果、932 にすると文字化けせず読み込まれました。Excel 2000 では、逆に
xlWindows でないとだめとか? 必ず、ご自分の使用環境で確認して下さい。
メンテ
指定列のデータから重複しないデータを抽出(VB6.0 基本編)  (No.13の個別表示) [スレッド一覧へ]
日時: 2007/08/13 14:46
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:オートフィルター,抽出,重複しないリスト,,                          *
***********************************************************************************

元質問: オートフィルタのドロップダウンリスト取得 - marl55  2003/12/03-09:57 No.6863

オートフィルタで抽出した値をゲットしたいわけではないのです。オートフィルタのドロップダウンリストに出てくる項目を取得したいのです。だから、その列のセル内容を全てゲットして重複を消すのと同じことなのですが、

-----------------------------------------------------------------------------------
指定列のデータから重複しないデータを抽出 - 花ちゃん  2007/08/13
-----------------------------------------------------------------------------------

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(指定列のデータから重複しないデータを抽出)
   '仮データの書込み
   Dim Dat(1 To 10, 0) As Variant
   Dat(1, 0) = "品 名": Dat(2, 0) = "みかん": Dat(3, 0) = "トマト"
   Dat(4, 0) = "いちご": Dat(5, 0) = "みかん": Dat(6, 0) = "トマト"
   Dat(7, 0) = "いちご": Dat(8, 0) = "みかん": Dat(9, 0) = "トマト"
   Dat(10, 0) = "いちご"
   Dim xlRange As Excel.Range
   Set xlRange = xlSheet.Range("B2:B11")
   xlRange.Value = Dat
   '下記は、表示確認の為に1秒間待ってリストを抽出しているだけです。
   xlApp.Wait Now + TimeValue("0:00:1")
   '------------------------------------------------------------------
  
   'B列のデータリストから重複したものを除いたリストだけを表示
   xlSheet.Range("B2:B11").AdvancedFilter _
                   xlFilterInPlace, xlSheet.Range("B2"), , True
   Dim Count As Long, i As Long
   '抽出したデータ件数を取得
   Count = CStr(xlSheet.Range("B2").End(xlDown).Row)
   For i = 3 To Count
      If xlSheet.Cells(i, 2).RowHeight > 0 Then
         '抽出したデータを取得
         Debug.Print xlSheet.Cells(i, 2).Value
      End If
   Next i

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
メンテ
マクロをVBのコードに変換する場合の注意事項(VB6.0 基本編)  (No.14の個別表示) [スレッド一覧へ]
日時: 2007/08/17 08:39
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:マクロ,コード,プロセス,タスク,終了しない,解放されない               *
***********************************************************************************
-----------------------------------------------------------------------------------
マクロをVBのコードに変換する場合の注意事項 - 花ちゃん   2007/08/16
-----------------------------------------------------------------------------------
http://hanatyan.sakura.ne.jp/vbhlp/caution.htm
http://hanatyan.sakura.ne.jp/vbhlp/ExcelErr.htm
ここの[Excel & Word 関係]のところにも書いているのですが、何時まで経っても同様の質問
がありますので、敢えて、こちらの方にも書いておきます。

----------------- 魔界の仮面弁士 さんの投稿より抜粋 ------------------------------
http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=781#782

Excel VBAの場合は、「自分自身」が持っているシートである事が明確なので、
上位のオブジェクト(ApplicationやWorkbookなど)の記述を省略できますが、
外部から制御する時は、省略できないのです。(Excelの起動数が1個であっても同様です)

上位オブジェクトの記述を省略しても、(参照設定を行っていれば)エラーにはなりませんが、
省略してしまうと、暗黙のうちに、Excelへの参照が内部で生成されてしまうため、
そのオブジェクトを、プログラムから解放できず、終了しない要因となります。
-----------------------------------------------------------------------------------

行の挿入・列の挿入等をマクロで記録してみますと下記のようになります。

Selection.EntireColumn.Insert    '列の挿入
Selection.EntireRow.Insert    '行の挿入

ここで、VBAのヘルプで Selection プロパティ を調べてみますと、対象が Application
オブジェクト と Windows オブジェクト になっているのが解るかと思います。
従って、上記のコードをそのまま使用すれば、当然、上位オブジェクトを省略した記述になり
オブジェクトを解放することが出来ず、プロセスが終了(タスク上に残る)しない事になります。

では、下記ではどうでしょう。
-----------------------------------------------------------
列の挿入 - いし  2004/12/24-11:30 No.1354
http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=1354&page=1410

列を挿入させたいのですが、次のコードで実行したところエラーが発生します。
「オブジェクトは、このプロパティまたはメソッドをサポートしていません」

Set objExcelApp = CreateObject("Excel.Application")
    
objExcelApp.DisplayAlerts = False
objExcelApp.Visible = False
objExcelApp.Workbooks.Open FileName:=FileName, updatelinks:=False
    
Set objExcelWkb = objExcelApp.Workbooks(Right(FileName, Len(FileName) - InStrRev(FileName, "\")))

(略)
                
objExcelWkb.Worksheets(1).Columns("C:C").Select
objExcelWkb.Worksheets(1).Selection.Insert Shift:=-4161   ←ここでエラー


見ての通りの実行時バインディングですが関係あるでしょうか?
Excelでマクロ記録して流用しました。-4161のところは”xlToRight”になっていましたが
そのままでは使えないようなので定数を入れました。
-----------------------------------------------------------
回答例、

    objExcelWkb.Worksheets(1).Range("c1").Activate
    objExcelWkb.Worksheets(1).Selection.Insert Shift:=xlToRight

c1とかc列の適当な所をActivateにすると大丈夫だと思います

-----------------------------------------------------------
一見すると、どちらも問題がないように見えますが、先のヘルプにも書いてある通り、
又、エラーメッセージの内容のように、「オブジェクトは、このプロパティまたは
メソッドをサポートしていません」、即ち objExcelWkb.Worksheets(1) オブジェクトに
Selection プロパティがありませんと言う事になります。

特に、今回のように参照設定せずに、実行時バインディングで使用された為に、自動メンバー
表示等の機能が使えなかった事にも一因はあるかと思いますが、対象オブジェクトを省略したり
間違えないように十分注意して下さい。
従って、正しくは、objExcelApp.Selection.Insert Shift:=-4161 のように書けば残る事は
ありません。

そもそも、今回の場合、Selection プロパティ を使うのが目的ではなく、EntireRow
プロパティ を使う事が目的なので、EntireRow プロパティ の対象オブジェクトを調べると
Range コレクションになっているので、下記のように変換してやれば、Selection プロパティを
使用せずとも目的が達成できます。

変換前 Selection.EntireColumn.Insert    '列の挿入

変換後 xlSheet.Range("E:E").EntireColumn.Insert


変換前 Selection.EntireRow.Insert    '行の挿入

変換後 xlSheet.Range("5:5").Insert 又は、xlSheet.Range("B5").EntireRow.Insert

-----------------------------------------------------------------------------------
マクロでは、オブジェクトを省略して書かれているもの(よく変換間違いをされているもの)を
下記に上げておきます。
-----------------------------------------------
誤 Application.CentimetersToPoints    
  Application では、どれを指しているのか特定できないので、NG!

正 xlApp.CentimetersToPoints のように明示して下さい。
-----------------------------------------------
誤 ActiveSheet

正 xlBook.ActiveSheet  又は xlSheet のようにシート名を指定するようにして下さい
-----------------------------------------------
誤 ActiveCell

正 xlSheet.Activate や xlApp.ActiveCell のように明示して下さい。
-----------------------------------------------
誤 Key1:=Range("C2")

正 Key1:=xlSheet.Range("C2")  どのシートかを明示する事
-----------------------------------------------
誤 xlSheet.Range(Cells(1, ・・・略

正 xlSheet.Range(xlSheet.Cells(1, ・・・略
-----------------------------------------------
誤 Selection.ClearContents 

正 xlSheet.Activate
  xlApp.Selection.ClearContents 
-----------------------------------------------
以下投稿されたコードより抜粋(正解は上記参照)

誤 .Range(Selection, Selection.End(xlDown)).Select
誤 .Range(Selection, Selection.End(xlToRight)).Select
誤 Selection.Paste    'ここでエラーになります
誤 xlsSheet.Shapes("txtNendo").Select: Selection.Characters.Text = "年度です"


省略されて書かれているのは上記以外にもありますので、マクロを流用する場合は十分注意して
そのまま、マクロをペーストするのではなく、VB上でインテリセンス機能等を活用しながら手入力
するようにして下さい。

-------------------------------------------------------------------------
マクロとは関係ないのですが、下記のような投稿もありました。

    '★エクセルオブジェクトの解放
    excelApp.Quit                'Excelアプリケーションの終了
    Set excelApp = Nothing       'アプリケーションオブジェクト解放
    Set excelBook = Nothing      'ワークブックオブジェクト解放
    Set excelSheet = Nothing     'シートオブジェクト解放

解放の順番が逆になっている場合が結構あります。

但し、VB6.0 の場合 上記で解放されないという事はありません。
実は、正しくExcel を扱っていれば、終了時の処理は、Excel を閉じるだけで、Excel のプロセス
が残る事なくキチンと終了する事ができます。

======================================
従って下記の終了処理は、
======================================
   '--------------------------------------------------------------
  
   '保存時の問合せを非表示に設定
   xlApp.DisplayAlerts = False
  
   'Worksheet を名前をつけて保存します
   'xlSheet.SaveAs xlFilePath
  
   'オブジェクトを解放します
   Set xlSheet = Nothing
   xlBook.Close            'Book を閉じる
   Set xlBook = Nothing
   xlApp.Quit              'Quit メソッドを使って Excel を終了します。
   Set xlApp = Nothing
End Sub

========================================================
下記のように書いてもExcel がキチンと解放されます。
(Set xlApp = Nothing のような関連付けを解除しなくても)
========================================================
   '--------------------------------------------------------------
  
   '保存時の問合せを非表示に設定
   xlApp.DisplayAlerts = False
   'Worksheet を名前をつけて保存します
   'xlSheet.SaveAs xlFilePath
  
   xlApp.Quit              'Quit メソッドを使って Excel を終了します。
End Sub

但し、上記はあくまでもテスト例であってお薦めすることはできませんので当初のコードのような
終了処理を実施して下さい。
メンテ
Excelの異なるバージョン間で同じプログラムを使用する(VB6.0 基本編)  (No.15の個別表示) [スレッド一覧へ]
日時: 2007/08/16 22:22
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:参照設定,バージョン,,                                     *
***********************************************************************************

元質問:複数のCSVデータ⇒XLSブック - Blue  2003/05/30-17:12 No.4200
CSVデータを1枚のXLSシートのように扱ってブックにすることはできないでしょうか?

-----------------------------------------------------------------------------------
Excelの異なるバージョン間で同じプログラムを使用するには - 花ちゃん  2007/08/16
-----------------------------------------------------------------------------------
Excel の起動部分を下記から実行時バインディングの方法で起動すると参照設定の必要が
なくなり、異なるバージョン間で使用する事ができます。
(ここのサイトの下記でも掲載しております。)
http://hanatyan.sakura.ne.jp/vbhlp/Excel01.htm

'==================================================================
'Excel の起動処理(新規ファイルを使用する場合)
   'オブジェクトへの参照を格納する変数を宣言(事前バインディング)
   Dim xlApp   As Excel.Application
   Dim xlBook  As Excel.Workbook
   Dim xlSheet As Excel.Worksheet

   '変数にオブジェクトの参照を代入します。
   '新規 workbookとworksheet オブジェクトを作成します。
   Set xlApp = CreateObject("Excel.Application")
   Set xlBook = xlApp.Workbooks.Add
   Set xlSheet = xlBook.Worksheets(1)  '1 の代わりにシート名でも可
   'エクセルを表示します。(非表示でも動作します)
   xlApp.Visible = True

'==================================================================

  変更後(実行時バインディング(レイトバインディング))
'==================================================================
'Excel の起動処理(新規ファイルを使用する場合)
   'オブジェクトへの参照を格納する変数を宣言(実行時バインディング)
   Dim xlApp   As Object
   Dim xlBook  As Object
   Dim xlSheet As Object

   '変数にオブジェクトの参照を代入します。
   '新規 workbookとworksheet オブジェクトを作成します。
   Set xlApp = CreateObject("Excel.Application")
   Set xlBook = xlApp.Workbooks.Add
   Set xlSheet = xlBook.Worksheets(1)  '1 の代わりにシート名でも可
   'エクセルを表示します。(非表示でも動作します)
   xlApp.Visible = True

'==================================================================

但し、上記の方法でExcel を操作するにはいくつかの注意が必要です。

1.使用するExcelの定数等は、別途ご自分で宣言するか、定数値のようなものを使用しないと
  VBAの定数は使用できません。
    http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=2295&page=1230

2.Excelのバージョン間で互換性のないメソッドやプロパティ等は使用できません。
  例えば、Open メソッド や SaveAs メソッドのようなものでも、バージョン間で引数の型
    が違ってきていますので、十分確認する事が必要です。

3.自動メンバ表示などのインテリセンス機能が使用できないのでコードの入力間違いの
    チェックが十分できないので注意が必要です。

4.従って、使用するであろう、バージョンのExcelで十分に動作確認する事が必要になります。

又、Excel のプロセスが残る等の問題が多く発生する可能性があり、解決も難しくなります。

少なくても、VBからExcelを操作する事に熟知されてから使用するようにして下さい、でないと
後で、エラーが発生したり、Excelのプロセスが解放されない等の問題が発生し、結局時間を
とられて、各バージョンに合ったプログラムを別々にインストールした方が楽だったという事
になります。

上記の問題点をクリアできれば、ある程度は、Excel の各バージョン間で使用できますが、
Excel95以前やExcel2007以降のように範囲が広がると複雑な処理をした場合は、大抵問題が
発生するかと思いますので、くどいようですが、事前に対象のバージョンで十分テストをして
使用されるようにお願いします。
メンテ
ファイル形式を変更(*.CSV/*.HTML 等)して保存(VB6.0 基本編)  (No.16の個別表示) [スレッド一覧へ]
日時: 2007/08/22 10:47
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:HTM形式で保存,CSV形式で保存,CSVファイル,                           *
***********************************************************************************

元質問:エクセルのファイル形式の変更について - あき  2005/06/28-13:41 No.3661

VBから任意のCSVファイルをExcelで読み込み、ファイルの種類を変更してエクセルのファイル形式にして保存したいのですが、どうしてもできません。

-----------------------------------------------------------------------------------
ファイル形式を変更(*.CSV/*.HTML 等)して保存 - 花ちゃん  2007/08/17
-----------------------------------------------------------------------------------

SaveAs メソッドの引数の FileFormat にファイルを保存するときのファイル形式を指定します。
指定できる形式については、FileFormat プロパティを参照してください。
既存のファイルでは、指定された最後のファイル形式が既定のファイル形式です。
新しいファイルでは、現在使用されている Excel のバージョンでのファイル形式になります。

使用できる 定数(FileFormat)については、VBAのヘルプで調べて下さい。

使用例(Excelの終了処理のところで)

   '保存時の問合せを非表示に設定
   xlApp.DisplayAlerts = False
   'Worksheet を名前をつけて保存します
   'xlSheet.SaveAs xlFilePath
  
   '------------------------------------------------------------
   'CSV 形式で保存する場合
   xlSheet.SaveAs "c:\test.csv", xlCSV

   'HTML 形式で保存する場合
   xlSheet.SaveAs FileName:="c:\test.htm", FileFormat:=xlHtml
   '------------------------------------------------------------

上記のように保存したいファイルフォーマットを指定すればいいです。
(上記どちらの方法でも OK です。)
-------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------
尚、同じ *.xls 形式での保存であっても異なるバージョンで保存したい場合や異なるバージョン
で作成されたファイルを保存するような場合も、保存形式を明示的に指定するようにして下さい。
メンテ
図形(オートシェイプ等)の描画及び削除(VB6.0 基本編)  (No.17の個別表示) [スレッド一覧へ]
日時: 2007/08/18 14:38
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:図形の描画,オートシェイプ,吹き出し,矢印                            *
***********************************************************************************

元質問:VBからEXCELの図形削除 - ひらりん  2005/09/12-13:09 No.4380
VBからEXCEL上の図形(Shape)を削除させたいのですが、下記のように書いてはみたのですが図形を選択はしているのですが消えてはいません

'すべての図形を選択する
xlSheet.Shapes.SelectAll
'現在選択されているオブジェクトを削除する
xlSheet.Selection.Delete

---------------------------------------------------
xlSheet.Selection の Selection プロパティ の使い方が間違っていてxlSheet オブジェクト
には、Selection プロパティが無い為に削除が出来なかったようです。
>>14 (マクロをVBのコードに変換する場合の注意事項)参照

-----------------------------------------------------------------------------------
図形(オートシェイプ等)の描画及び削除 - 花ちゃん  2007/08/18
-----------------------------------------------------------------------------------
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(図形の描画及び削除)
   '雲形吹き出しを描画
   xlSheet.Shapes.AddShape msoShapeCloudCallout, 100, 30, 100, 40
   'ブロック矢印を描画
   xlSheet.Shapes.AddShape msoShapeRightArrow, 100, 100, 50, 50
   '終端が三角形の矢印を描画
   With xlSheet.Shapes.AddLine(100, 200, 250, 200).Line
      .EndArrowheadLength = msoArrowheadLong
      .EndArrowheadStyle = msoArrowheadTriangle
      .EndArrowheadWidth = msoArrowheadWide
      .Weight = 5#
   End With

   Dim shp As Excel.shape
   For Each shp In xlSheet.Shapes
      Debug.Print shp.Name
   Next

   '3秒間表示しておく
   xlApp.Wait Now + TimeValue("0:00:3")
  
   '図形を個別に削除する場合
   xlSheet.Shapes(1).Delete
   xlApp.Wait Now + TimeValue("0:00:1")
  
   '全ての図形を選択
   xlSheet.Shapes.SelectAll
   '選択されているものを削除する
   xlApp.Selection.Delete
    
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
メンテ
Excel 上でコピー&ペースト(貼り付け)を実行する(VB6.0 基本編)  (No.18の個別表示) [スレッド一覧へ]
日時: 2007/08/18 11:37
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:図形の描画,オートシェイプ,吹き出し,矢印                            *
***********************************************************************************

元質問:EXCELでのコピー・貼り付けについて - DAI  2005/10/19-11:56 No.4680
セルのコピーを行ってそれを別のセルに貼り付けようとしていますが、うまくいきません。
最後のペーストの部分でエラーが発生します。

 .Worksheets("Sheet1").Range("A1").Copy
    
 .Worksheets("Sheet1").Range("E5").Paste


-----------------------------------------------------------------------------------
Excel 上でコピー&ペースト(貼り付け)を実行する - 花ちゃん  2007/08/18
-----------------------------------------------------------------------------------
> 最後のペーストの部分でエラーが発生します。

だったら、Excel の VBA のヘルプで Paste メソッド の 対象 のところを調べて見て下さい。

こう行った事が起きないように、事前バインディング で接続するようにして下さい。


'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(Excel上でのコピー&ペースト)

   'Excel 上でやりたい事をマクロで記録して見て下さい。
    
'マクロの記録結果
'    Range("B2:D6").Select    'セル範囲の "B2:D6" を選択
'    Selection.Copy           'コピーを実施
'    Range("B14").Select      '貼付先 "B14" を選択
'    ActiveSheet.Paste        '貼付を実施

'上記をVBのコードに直すと下記のようになります。
   xlSheet.Range("B2:D6").Copy
   xlSheet.Paste Destination:=xlSheet.Range("B14")

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
メンテ
すでに起動中のExcelファイルをVBから編集する(VB6.0 基本編)  (No.19の個別表示) [スレッド一覧へ]
日時: 2007/08/18 19:17
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:起動中のExcel,表示しているExcel,フルパス                           *
***********************************************************************************

元質問:表示中のエクセルの編集 - ひろ  2005/10/20-10:39 No.4690

VBからでは、普通にマウスでダブルクリックなどで表示したエクセルの編集を行う事は可能でしょうか?

-----------------------------------------------------------------------------------
Re^2: 表示中のエクセルの編集 - GOD  2005/10/20-15:35 No.4703
-----------------------------------------------------------------------------------
> 試しては、いませんが、Excel で開いて使っているファイルを VB から編集する事は
> できなかったはずです。(読み取り専用でしか開けない)
  と、当時は答えていたのですが。(上記は、私(花ちゃん)の怪答)

GetObjectでできないかな。
set xxx = GetObject(Path)
ただ、GetObjectする前にファイルが開かれているかどうかのチェックが出来るか微妙だけど。
----------------------------------------------------------------
と、GOD さんが回答されていたのだが、元質問者からの返事もなく、私も試しておらず
そのままになっていたのですが、当時このサイトで GetObject を使ってExcelを起動していた
サンプルが残っていたので改めて試して見ましたので、ここに掲載しておきます。

-----------------------------------------------------------------------------------
すでに起動中のExcelファイル(ダブルクリック等で)をVBから編集する - 花ちゃん  2007/08/18
-----------------------------------------------------------------------------------

Option Explicit

Private Sub Command1_Click()
'★こちらは、GetObject 関数を使って起動(実行時バインディング)
'従って参照設定は必要ありません。

    Dim xlApp       As Object
    Dim xlFilePath  As String
    Dim xlSheetName As String
    'エクセルのファイル名
    xlFilePath = "C:\test1.xls"
    'ブックのシート名
    xlSheetName = "Sheet1"
    'エクセルへ参照 第二引数を省略すると起動中のファイルを使用する
    Set xlApp = GetObject(xlFilePath)
    xlApp.Application.Visible = True
    xlApp.Windows(1).Visible = True

    '書込み方法色々
    xlApp.ActiveSheet.Cells(4, 1).Value = "セル(4,1)に書込"

    With xlApp.Worksheets(xlSheetName)
        .Range("A1") = "セル(A1)にテスト書込み"
        .Cells(2, 2).Value = "セル(2,2)にテスト書込みです"
        With .Cells(2, 2)
            .Font.Size = 18                   'フォントサイズ
            .Font.Name = "MS P明朝"        'フォントの種類
            .Font.Bold = True                 '太字に設定
        End With
        'A列の幅を8に設定
        .Cells(1, 1).ColumnWidth = 8
        '1行目の高さを26に設定
        .Rows(1).RowHeight = 26

    End With


   'シートをExcelから印刷
   xlApp.Worksheets(xlSheetName).PrintOut
  
   '3秒間表示しておく
   xlApp.Application.Wait Now + TimeValue("0:00:3")
  
  
   '保存時の問合せを非表示に設定
   xlApp.Application.DisplayAlerts = False
   'Worksheet を名前をつけて保存します
   xlApp.SaveAs xlFilePath
  
   'エクセルの終了
   xlApp.Application.Quit
  
   'オブジェクトを解放
   Set xlApp = Nothing
End Sub

------------------------------------------------------------------------------
    Set xlApp = GetObject(xlFilePath)
上記のように、第二引数を省略すると起動中のファイルを使用し、起動していなければ
新たに起動します。

但し、その為に予め、起動中のファイルのパスが解っている必要があります。

起動しているかどうかは、ここの逆引きヘルプの指定のファイルが使用中かどうかを調べるで
調べる事ができます。

起動中のExcelファイルが1個だけなら、
   Set xlApp = GetObject(, "Excel.Application")
のようにすれば取得する事ができます。

又、ファイルをマウスのダブルクリック等で複数表示している場合は、下記のようにすれば
起動しているExcelファイルのフルパスを取得できます。

Private Sub Command2_Click()
   Dim xlApp As Object
   Set xlApp = GetObject(, "Excel.Application")
   Dim myBook As Object
   For Each myBook In xlApp.Workbooks
      '起動中のExcelファイルのフルパスを取得
      Debug.Print myBook.FullName
   Next
  
   'xlApp.Application.Quit  '起動中の全てのExcelを終了します。
   Set xlApp = Nothing    'オブジェクトを解放
End Sub

但し、上記もファイルの起動状態で取得できない場合がありますので注意して下さい。
メンテ
メニューバーとツールバーを非表示(使用不可)にする(VB6.0 基本編)  (No.20の個別表示) [スレッド一覧へ]
日時: 2007/08/18 21:06
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:メニューバー,ツールバー,使用不可,非表示                            *
***********************************************************************************

元質問:Excelのメニューとツールバーについて - とびた  2006/02/26-19:13 No.5923

VBより、Excelのメニューとツールバーを無効にしたいと考えております。
Excel-VBAでは、以下のコードでメニューとツールバーを無効に出来ましたが、VBからでは、宣言の方法?が悪い様で、エラーになってしまいます。

-----------------------------------------------------------------------------------
Re: Excelのメニューとツールバーについて - 花ちゃん  2006/02/26-20:51 No.5924
-----------------------------------------------------------------------------------

※ 終了時には必ず元に戻しておいて下さい。

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(Excelのメニューとツールバーを無効にする)
'   Dim objMenu As Object
'   For Each objMenu In xlApp.CommandBars("Worksheet Menu Bar").Controls
'      objMenu.Enabled = False
'   Next objMenu
'
'   Dim objTool As Object
'   For Each objTool In xlApp.CommandBars("Standard").Controls
'      objTool.Enabled = False
'   Next objTool

   'ツールバーとメニューバーを非表示にする
   Dim objTool As Object
   For Each objTool In xlApp.CommandBars
      objTool.Enabled = False
   Next objTool
  
   '3秒間表示して元に戻す
   xlApp.Wait Now + TimeValue("0:00:3")
   'Dim objTool As Object
   For Each objTool In xlApp.CommandBars
      objTool.Enabled = True
   Next objTool

'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
メンテ
自動リンクエラーのメッセージを表示させない方法(VB6.0 基本編)  (No.21の個別表示) [スレッド一覧へ]
日時: 2007/08/19 12:11
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:ダイアログ,自動リンク,エラーメッセージ,                            *
***********************************************************************************

元質問:エクセルの自動リンクエラーを表示させない方法 - TOMO  2006/06/15-20:13 No.6672

VBでエクセルを開いた時に、「開いているブックには、他のファイルへの自動リンクが設定されています。このブックを更新し他のブックの変更を反映しますか?」 のメッセージを出さないように、VBで制御出来ないのでしょうか

-----------------------------------------------------------------------------------
Re: エクセルの自動リンクエラーを表示させない方法 - 花ちゃん  2006/06/15-22:36 No.6675
-----------------------------------------------------------------------------------

Open メソッド の引数のUpdateLinks を調べて見て下さい。

>1では、現象変わらず。
今、試して見ましたが、有効になっていますよ。
ファイルをOpen する前に xlApp.DisplayAlerts = False を設定していますか?
UpdateLinks = 0 〜 3   の設定と組合せればいいのでは。


   xlApp.DisplayAlerts = False

   '上記だけでもメッセージがでないようになりますが、記入位置に注意が必要です。
  'ファイルをオープンする時にメッセージでるのだから、ファイルをオープンする前に
  '設定する必要があります。 このように書くとExcelを起動する前に設定する人がいますが
  'DisplayAlerts プロパティ は、Excel Application のプロパティなので、xlApp が使用
  '出来る状態でないと使用できません。

   Dim xlApp      As Excel.Application
   Dim xlBook     As Excel.Workbook
   Dim xlSheet    As Excel.Worksheet
   Dim xlFilePath As String
   xlFilePath = "c:\Book1.xls"
   Set xlApp = CreateObject("Excel.Application")
  
   '問合せを非表示に設定
   xlApp.DisplayAlerts = False
   'UpdateLinks:=0 等の設定値は、ご自分の指定の設定値にして下さい。
   Set xlBook = xlApp.Workbooks.Open(xlFilePath, UpdateLinks:=0)
   Set xlSheet = xlBook.Worksheets(1)
   xlApp.Visible = True
メンテ
Excel画面廻りの表示設定色々(VB6.0 基本編)  (No.22の個別表示) [スレッド一覧へ]
日時: 2007/08/20 09:49
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:メニュー,スクロールバー,関数ボックス,                              *
***********************************************************************************

元質問:ワークシートだけ表示させる - ダンボ  2006/09/12-15:28 No.7233

-----------------------------------------------------------------------------------
Excel2000のVBAです。
定められた操作しかできないようにワークシートだけを表示させたいのです。
    With Application
        .DisplayFullScreen = True
        .DisplayAlerts = False
        .DisplayFormulaBar = False
        .ScreenUpdating = False
    End With
    With ActiveWindow
        .DisplayHorizontalScrollBar = False         '水平スクロールバーを消す
        .DisplayVerticalScrollBar = False         '垂直スクロールバーを消す
        .DisplayWorkbookTabs = False         'シート見出しを消す
        .DisplayGridlines = False         '枠線を消す
        .DisplayHeadings = False         '行列番号を消す
    End With
これで大分望みに近いのですが、
(1)システムメニュー(FileからHelpまでの奴)が消せない。
(2)DisplayFullScreen=True で「全画面表示を閉じます」ダイアログボックスが出てしまう。
の2点が不満です。対策はありますか?

-----------------------------------------------------------------------------------
>  (1)システムメニュー(FileからHelpまでの奴)が消せない。
Application.CommandBars("Worksheet Menu Bar").Enabled = False
Application.CommandBars("Standard").Visible = False
で、システムメニュー消えました。標準ツールバー消えました。
あうぅ編集ツールバーが残っています。

-----------------------------------------------------------------------------------
※ 後は、上記の一連のスレッドをご覧下さい。
http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=7233&page=300#7233




又、ユーザーからの操作されたくないという事なら下記のような方法もあります。
-----------------------------------------------------------------------------------
Re^3: VB-EXCEL 処理速度 - 魔界の仮面弁士  2003/08/04-20:04 No.5223
-----------------------------------------------------------------------------------
ユーザーから操作されたくない、という事であれば、Excel.Applicationオブジェクトの
Interactive プロパティを使って、ユーザーからの操作を禁止するという手もあります。


-----------------------------------------------------------------------------------
Interactive プロパティ   (VBAのヘルプより抜粋 ---- by 花ちゃん ---- )

True の場合、Excel が対話モードになります。既定値は True です。このプロパティに False が設定されると、キーボードやマウスからの入力を受け付けなくなります。ただし、表示されたダイアログ ボックスへの入力は可能です。入力できない状態にしておくと、マクロで Excel のオブジェクトを移動したりアクティブにしているときに、ユーザーからの干渉を防ぐことができます。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。

   xlApp.Interactive = False

-----------------------------------------------------------------------------------
メンテ
選択したセルが定義した指定の範囲にあるかどうか(VB6.0 基本編)  (No.23の個別表示) [スレッド一覧へ]
日時: 2011/04/05 10:55
名前: 花ちゃん

* カテゴリー:[サポート技術情報]

文書番号 : 259137  
最終更新日 : 2008年1月23日

Visual Basic のマクロを使用して Excel ワークシートの選択したセルが定義した
指定の範囲にあるかどうかを確認する方法

下記のMicrosoft サポート技術情報 に掲載されています。
リンクが切れている場合は、上記文書名で検索して見て下さい。

http://support.microsoft.com/kb/259137/ja

メンテ
選択範囲内の文字の出現回数を数える方法(VB6.0 基本編)  (No.24の個別表示) [スレッド一覧へ]
日時: 2011/04/05 10:54
名前: 花ちゃん

* カテゴリー:[サポート技術情報]

文書番号 : 89794
最終更新日 : 2008年2月6日

Excel で Visual Basic for Applications を使用して選択範囲内の文字の出現回数を
数える方法

下記のMicrosoft サポート技術情報 に掲載されています。
リンクが切れている場合は、上記文書名で検索して見て下さい。

http://support.microsoft.com/kb/89794/ja
メンテ
AutoFill メソッドを使ってセルに連続してデータを入力する(VB6.0 基本編)  (No.25の個別表示) [スレッド一覧へ]
日時: 2013/05/22 15:08
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:Excel VBA,オート フィル,セルに連続してデータを入力する,セル操作,  *
***********************************************************************************

http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=319&no=32
上記リンクの VB2010 から Excel のセルに関する操作、1行 Tips 集その1(VB.NET) ( No.32 ) の
15.AutoFill メソッドを使ってセルに連続してデータを入力する をVB6.0 用に書き換えた分です

http://www.hanatyan.sakura.ne.jp/vb6/excel02.htm
VBからExcelを起動・終了する(基本操作部分) のコードを使ってExcelを起動・終了して下さい。

上記のコードに下記コードを追加してして試して見て下さい。

Private Sub Command3_Click()
    Dim xlRange As Excel.Range
    Dim xlRange1 As Excel.Range
    Set xlRange = xlSheet.Range("A1")
    xlRange.Value = "1月"
    Set xlRange1 = xlSheet.Range("A1:L1")
    'セル A1 ~ L1 まで、1月 〜 12月 と入力します。
    xlRange.AutoFill Destination:=xlRange1, Type:=xlFillMonths
End Sub

※ 今後のサンプルは、上記同様にして試して下さい。

メンテ
Findメソッドを使っての選択範囲内の文字の出現回数を数える(VB6.0 基本編)  (No.26の個別表示) [スレッド一覧へ]
日時: 2013/05/23 09:41
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][] *
* キーワード:Excel VBA,出現回数,検索,書き換え,Find メソッド,入力済みセル範囲 *
***********************************************************************************
サポート技術情報に掲載されていたサンプルを紹介していたのですが、テストしてみると
うまく動作しないし、Cell や Selection を使っているので、VB から使用するには間違った
使用をされかねないので、Excel の機能の Find メソッドを使って作ってみました。
ついでに書き換えもできるようにしております。

http://www.hanatyan.sakura.ne.jp/vb6/excel02.htm
VBからExcelを起動・終了する(基本操作部分) のコードを使ってExcelを起動・終了して下さい。

上記のコードに下記コードを追加してして試して見て下さい。

Private Sub Command3_Click()
    Dim c As Excel.Range
    Dim firstAddress As String
    Dim nextAddress As String
    Dim n As Long
    '検索範囲をxlSheet の入力済みセル範囲とする
    With xlSheet.Range(xlSheet.UsedRange.Address)
        'lookin:=xlValues 検索対象を[値]に設定
        Set c = .Find(Text1.Text, lookin:=xlValues)
        If Not c Is Nothing Then
            '見つかった場合、セルのアドレスを取得
            firstAddress = c.Address
            Do
                '見つかった件数をカウントする
                n = n + 1:       c.Value = "見っけ " & c.Address '見つかったセルの値を書き換える場合
                '見つかったセルの次のセルから再検索
                Set c = .FindNext(c)
                If Not c Is Nothing Then
                   nextAddress = c.Address
                Else
                    nextAddress = ""
                End If
            Loop While Not c Is Nothing And nextAddress <> firstAddress
        End If
    End With
    Label1.Caption = n & " 個見つかりました。"
End Sub

コードを変更された場合は、タスクマネージャにExcelのプロセスが残っていない事を確認して下さい。

※ 今後のサンプルは、上記同様にして試して下さい。

上記実行結果の図
http://www.hanatyan.sakura.ne.jp/bbs_gif/excelfind.gif
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ