VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 Excel・Word 関係のメニュー
1.VBからExcel及びWordを操作する時の注意事項
2.VBからエクセルを起動・終了する基本操作例
3.上記、基本操作例を使ってのVBからExcel にデータを送りグラフを表示
4.Excel ワンポイントテクニック集
5.Excel 2007 以降のリボンを操作する及びユーザーからの操作を禁止する
6.指定のセル範囲の列幅・行の高さを含めてコピー・アンド・ペーストする
7.
8.
9.
10.
11.VB6.0 からワードを起動・終了する基本操作例
12.Word の既存ファイルを読み込み検索・置き換え後保存する
13.VB6.0からExcel/Wordを起動しExcelの表をWordに貼付印刷する
14.VBから Word の差し込み印刷機能を使って[宛て名ラベル]を印刷する
15.Word の Tasks プロパティを使ってのタスク(プロセス)の一覧を取得・他
16.Word VBA 簡易リファレンス及び使用例
17.
18.
19.
20.


2.VBからエクセルを起動・終了する基本操作例 
1.VB6.0 から Excel を起動・終了する(基本操作部分)
2.VB6.0 から Excel 操作時の主なエラーと対処法
3.
4. 
5. 
6. 
実行時バインディング(レイトバインディング/参照設定しなくても使用できる方法)での起動方法は、ご自分でコードが書け ないような人が使用するとトラブルの元となり却って時間がかかる事になりかねませんので、私としては理解しないままで使ってほしくないので今回の見直しから紹介をしない事にしました。

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:Microsoft Excel *.* ObjectLibrary / Microsoft Scripting Runtime 参照設定方法参照
使用 API:

その他 :ツール→オプション→全般→エラートラップで[エラー発生時に中断]以外にチェックを入れておいて下さい。
    :
このページのトップへ移動します。 1.VBからExcelを起動・終了する(基本操作部分)
Option Explicit

'--------------------- Private 変数の宣言部分 ----------------------------
Private Fso       As New FileSystemObject  'ファイルを扱う場合、FileSystemObject を使った方が便利なので
Private WithEvents xlApp As Excel.Application    'Excel のイベントを利用するので、WithEvents 付きで宣言
Private xlBooks     As Excel.Workbooks
Private xlBook      As Excel.Workbook
Private xlSheets     As Excel.Sheets
Private xlSheet     As Excel.Worksheet
Private frgClose     As Boolean         'Excel が起動中のフラグ

'--------------------- Excel の起動処理関係 ----------------------------
Private Sub Command1_Click()
'Excel を起動
  Call ExcelOpen("", "")   '新規ファイルをオープンして、Excel を起動

  '既存のファイルをオープンして、Excel を起動する場合 (ファイルのフルパス , シート名)
  'Call ExcelOpen(App.Path & "\Test.xls", "Sheet1")
End Sub

Private Sub ExcelOpen(ByVal FilePath As String, ByVal SheetName As String)
'Excel のオープン処理用プロシージャ
  If Not xlApp Is Nothing Then Exit Sub  'すでに起動中の場合の処理
  frgClose = False  '起動中は、ユーザーが Excel を閉じれないように
  If Len(FilePath) = 0 Then
    '新規のファイルを開く場合
    Set xlApp = New Excel.Application
    Set xlBooks = xlApp.Workbooks
    Set xlBook = xlBooks.Add
    Set xlSheets = xlBook.Worksheets
    Set xlSheet = xlSheets.Item(1)
  Else
    'ファイルの有無を確認
    If Fso.FileExists(FilePath) Then
      '既存のファイルを開く場合
      Set xlApp = New Excel.Application
      Set xlBooks = xlApp.Workbooks
      Set xlBook = xlBooks.Open(FilePath)
      Set xlSheets = xlBook.Worksheets
      'シート名の有無の確認
      Dim frgShtname As Boolean
      For Each xlSheet In xlSheets
        If SheetName = xlSheet.Name Then
          frgShtname = True
        End If
      Next
      'シート名が見つかった場合
      If frgShtname Then
        Set xlSheet = xlSheets(SheetName)
      Else
        '指定のシート名が見つからない場合は、シートを追加
        Set xlSheet = xlBook.Worksheets.Add
        '追加したシートの名前を変更
        xlSheet.Name = SheetName
      End If
    Else
      MsgBox "ご指定のファイルが見つかりません。"
      Exit Sub
    End If
  End If
  xlApp.Visible = True
End Sub

'--------------------- Excel の終了処理関係 ----------------------------
Private Sub Command2_Click()
'Excel を終了
  'Excelファイルを上書き保存(True 又省略すれば)して終了処理を実行(名前をつけて保存も同じ)
  Call ExcelClose(Fso.BuildPath(App.Path, "Test.xlsx"), True)  'False の場合保存しないで終了
End Sub

Private Sub ExcelClose(ByVal FilePath As String, Optional ByVal CancelSave As Boolean = True)
'Excel の終了処理用プロシージャ
  If xlApp Is Nothing Then Exit Sub  '起動していない場合は処理しない
  'ツール→オプション→全般→エラートラップ でエラー処理対象外のエラーで中断にチェックを入れておいて下さい。
  On Error Resume Next        'エラーが発生しても解放処理を実行したいので
  frgClose = True           'True : 閉じる事ができる(プログラムからの終了なので)
  xlApp.DisplayAlerts = False     '保存時の問合せのダイアログを非表示に設定
  '保存する場合
  If CancelSave Then
    Dim kts As String
    Dim fm As String
    'Excel ファイルの拡張子を取得
    kts = Fso.GetExtensionName(FilePath)
    kts = LCase(kts)  '拡張子を小文字で取得

    '拡張子に合せて保存形式を変更
    Select Case kts
      Case "csv"       'CSV (カンマ区切り) 形式
        fm = xlCSV
      Case "xls"       'Excel 97〜2003 ブック形式
        fm = xlExcel8
      Case "xlsx"       'Excel 2007〜ブック形式
        fm = xlOpenXMLWorkbook
      Case "xlsm"       'Excel 2007〜マクロ有効ブック形式
        fm = xlOpenXMLWorkbookMacroEnabled
      Case Else        '必要なものは、追加して下さい。
        fm = xlWorkbookDefault
        MsgBox "ファイルの保存形式を確認して下さい。"
    End Select
    xlBook.SaveAs FileName:=FilePath, FileFormat:=fm   'ファイルに保存
  End If

  Set xlSheet = Nothing  'xlSheet を解放
  Set xlSheets = Nothing 'xlSheets を解放
  xlBook.Close      'Book   を閉じる
  Set xlBook = Nothing  'Book   を解放
  xlBooks.Close      'Books  を閉じる
  Set xlBooks = Nothing  'Books  を解放
  xlApp.Quit       'Excel  を終了します。
  Set xlApp = Nothing   'xlApp  を解放
  If Err.Number <> 0 Then
    MsgBox "終了処理中にエラーNo." & Err.Number & " のエラーが発生しましたので確認下さい。"
    Err.Clear
  End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
'終了時の処理
  'Excel.EXE が起動していたら閉じる
  If Not xlApp Is Nothing Then
    Call ExcelClose("", False)
  End If
End Sub

Private Sub xlApp_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, ByRef Cancel As Boolean)
'VB6.0 から Excel の WorkbookBeforeClose イベントを監視してユーザーが Excel を閉じれないようにする
'(VB6.0 から Excel を操作している途中でユーザーが勝手に Excel を閉じるとエラーが発生するので)
  If frgClose = False Then
    Cancel = True   'ユーザーが Excel を閉じようとしたので、処理をキャンセルする
  Else
    Cancel = False  'キャンセルしない(閉じる)
  End If
End Sub




このページのトップへ移動します。 2.

1.コンパイルエラー:ユーザー定義型は定義されていません。
  Microsoft Excel *.* ObjectLibrary への参照設定を忘れていませんか?
2.Sub、Function、または Property が定義されていません。(Error 35) が発生する。
  Dim xlCells As Excel.Range のような変数を宣言せずに使用していませんか?
3.オブジェクト変数または With ブロック変数が設定されていません。(Error 91) が発生する。
  変数を宣言していても、代入(Set xlCells = xlSheet.Cells)を忘れていませんか?
このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)





このページのトップへ移動します。