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.129の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2010/01/07 13:51
名前: 花ちゃん

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

印刷関係
 >>5  シート上の選択範囲を印刷するには
 >>10 印刷されるページの総数を調べる方法
 >>11 印刷時の1ページの行数を取得する
 >>18  Excel の複数シートを選択して印刷する


グラフ関係
 >>14 グラフのデータ範囲指定の仕方について
 >>17 VBからExcel にデータを送りグラフを表示する



データベース関係
 >>1  複数CSVファイルを一つのブックの複数シートに入力(ADOとJet用OLE DB Providerを使用)
 >>2  DAOでExcelのデータ(*.xls ファイル)を読み込みVBのテキストボックス等に表示
     (Excel 用ファイルをMSFlexGridに表示する(DAOを利用))
 >>7  DAOまたはADOでExcelファイルを開いた時にデータの表示が欠落する場合の対処法



マクロ関係
 >>3  マクロを無効にしてExcelをオープンする
 >>4  VBからExcelのマクロを実行する(コマンドボタンをクリックする)
 >>12 プログラム上からExcelのマクロを記入する
 >>13 VBからエクセルVBAを登録
 >>15 VBA でのコントロールの型について
 >>16 VBよりExcelファイル上のマクロコードを削除する



その他
 >>6  WebBrowser上で開いたExcelファイルの保存
 >>8  ExcelファイルをWebBrowser上に表示する
 >>9  VBA 関係のお薦めサイト


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


------------------------------------------------------------------------------------
知りたい事が上記等に記載がない場合は、9.VBA 関係のお薦めサイト に掲載してあるVBAの
コードを利用するか、Excel 上でマクロで記録を取ってそのコードを、VB 用に移植してくださ
い。 VBA の コード と VBからExcel VBA を操作する場合はコードが若干異なりますので、
Excel 操作ワンポイントテクニック集(VB6.0 基本編)の 14.マクロをVBのコードに変換する
場合の注意事項 を参考に変換して下さい。

************************************************************************************
必ず、基本編の方からご覧になって、基本編に書いてあるサンプル類がご自分で試す事が
できるようになってから、こちらのサンプルを試すようにして下さい。
勿論、VBの基本操作が出来る事も条件の内です。
************************************************************************************
メンテ

Page: 1 |

複数のCSVファイルを一つのブックの複数シートに入力(VB6.0 応用編)  (No.1の個別表示) [スレッド一覧へ]
日時: 2009/12/27 17:00
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:CSV,ADO,Jet用OLE DB Provider,                                       *
***********************************************************************************

元質問:VB6.0からEXCEL97へのデータ入力で.. - tokumori  2002/11/07-19:23 No.1293

上記環境にて、別のプログラムで作成した複数CSVファイルを一つのブックの複数シートに入力しようと考えています。
(A.csv→sheet1へ、B.csv→sheet2へという具合に)
VBからエクセルを起動して、シートごとにデータを入力開始するところまでは出来たのですが、データ数の合計が30000を超えた辺りでエクセルがフリーズしてしまいます。(Win95およびWin98でテスト)
正確なデータ数は数えていませんが、フリーズするポイントは毎回同じです。

-----------------------------------------------------------------------------------
Re: VB6.0からEXCEL97へのデータ入力でのエ.. - 魔界の仮面弁士 2002/11/07-21:27 No.1295
-----------------------------------------------------------------------------------
> 上記環境にて、別のプログラムで作成した複数CSVファイルを
> 一つのブックの複数シートに入力しようと考えています。

ADOと、Jet用OLE DB Provider 4.0を使って作成する方法もあります。
(この方法だとは、Excelがインストールされていない環境でも作成できます)

Option Explicit

Private Sub Form_Load()
    Dim strWorkName As String
    Dim strCSVFolder As String
    Dim strCSVName As String
    Dim strExcelFileFullPath As String
    Dim Cn As ADODB.Connection
    Dim SQL As String

    strCSVFolder = "C:\USER\"
    strWorkName = "~tmpVB.dat"
    strExcelFileFullPath = "C:\USER\Excel.xls"

    If Dir(strExcelFileFullPath) <> "" Then
        Kill strExcelFileFullPath
    End If
    With CreateObject("ADOX.Catalog")
        .Create "Provider=Microsoft.Jet.OLEDB.4.0;" _
            & "Data Source=" & strCSVFolder & strWorkName
    End With

    Set Cn = New ADODB.Connection
    Cn.Provider = "Microsoft.Jet.OLEDB.4.0"
    Cn.Open strCSVFolder & strWorkName

    strCSVName = Dir(strCSVFolder & "*.csv")
    Do Until strCSVName = ""
        SQL = "SELECT * INTO ["
        SQL = SQL & "Excel 8.0;Database=" & strExcelFileFullPath
        SQL = SQL & "].["
        SQL = SQL & Replace(strCSVName, ".", "_")
        SQL = SQL & "] FROM ["
        SQL = SQL & "text;HDR=NO;FMT=Delmited;Database=" & strCSVFolder
        SQL = SQL & "].[" & strCSVName & "]"

        Cn.Execute SQL

        strCSVName = Dir()
    Loop
    Cn.Close
    Set Cn = Nothing
End Sub

メンテ
DAOでExcelファイルを読込みテキストボックス等に表示(VB6.0 応用編)  (No.2の個別表示) [スレッド一覧へ]
日時: 2007/08/22 10:33
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:MSFlexGrid,DAO,パスワード                                           *
***********************************************************************************

元質問:ISAMドライバ - 聖魔   2003/01/31-13:52 No.2498

-----------------------------------------------------------------------------------
DAOでExcelファイルを読込みテキストボックス等に表示 − 花ちゃん 2007/08/19
-----------------------------------------------------------------------------------

上記は、ここのExcel&Word関係に掲載しております。

 http://hanatyan.sakura.ne.jp/vbhlp/dao_002.htm



===================================================================================
元質問:エクセルデータをMSFlexGrid上に - まさと  2003/01/18-19:58 No.2239
元質問:質問!エクセルデータをMSFlexGrid上に - ゆき 2003/01/22-16:45 No.2318

-----------------------------------------------------------------------------------
Excel 用ファイルをMSFlexGridに表示する(DAOを利用) − 花ちゃん 2007/08/19
-----------------------------------------------------------------------------------

上記は、ここのMSFlexGrid関係に掲載しております。

 http://hanatyan.sakura.ne.jp/vbhlp/daoexcel.htm



===================================================================================
元質問:パスワード付きのエクセルをDAOで開く - お助けを 2007/07/06/05-13:33 No.9295

パスワード付きのエクセルをDAOで開こうとしているのですが、
実行時エラー‘3161’ファイルを解読できませんでしたというエラーがでてしまいます。
どうしたらいいか教えてください。

-----------------------------------------------------------------------------------
パスワード付きのエクセルをDAOで開く − 魔界の仮面弁士 2007/07/06/05-13:53 No.9296
-----------------------------------------------------------------------------------
> パスワード付きのエクセルをDAOで開こうとしているのですが、
開けません。Excel IISAM の仕様です。

この場合は、Excel をオートメーション操作で開く必要があります。
メンテ
マクロを無効にしてExcelをオープンする(VB6.0 応用編)  (No.3の個別表示) [スレッド一覧へ]
日時: 2007/08/19 19:01
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:マクロ無効,Auto_Open,イベントマクロ,                                *
***********************************************************************************

元質問:EXCELマクロ無効オープン - K.I  2003/02/18-15:52 No.2767

VBからExcelシートを開く時、マクロを無効にして開く方法を教えてください

-----------------------------------------------------------------------------------
Re^7: EXCELマクロ無効オープン - 花ちゃん  2003/02/19-14:53 No.2798
-----------------------------------------------------------------------------------

  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Open("C:\Temp.xls")
  Set xlSheet = xlBook.Worksheets(1)
  xlApp.EnableEvents = False

のように設定して開いてみて下さい。イベントマクロは実行されません。

------------------------------------------------
場合によっては下記のような事も有効です。

Public MacroFlag As Boolean
Sub Macro1()
    If MacroFlag = True Then
        Range("B4").Select
        ActiveCell.FormulaR1C1 = "マクロが実施されました。"
        Range("A1").Select
    End If
End Sub
Sub Auto_Open()
    MacroFlag = True
End Sub

以上はExcel上の記述

VBからExcelを起動すると通常は、Auto_Open が実施されません。
従ってフラグが設定してあるマクロは実行できません。

※ No.2778の投稿の下記の部分は
  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Open("C:\Temp.xls")
  Set xlSheet = xlBook.Worksheets(1)
  xlApp.EnableEvents = False

こちらに訂正願います。
    Set xlApp = CreateObject("Excel.Application")
    xlApp.EnableEvents = False
    Set xlBook = xlApp.Workbooks.Open("C:\Temp.xls")
    Set xlSheet = xlBook.Worksheets(1)

Workbook_Openイベントに書かれているマクロも無効になります。
メンテ
VBからExcelのマクロを実行する(VB6.0 応用編)  (No.4の個別表示) [スレッド一覧へ]
日時: 2007/08/19 22:58
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:マクロ,コマンドボタンをクリック                                     *
***********************************************************************************

元質問:VBからマクロの実行 - ゆき  2003/05/28-12:05 No.4145

VBから、EXCELのマクロを実行する事は可能でしょうか。
出来るのであれば、方法はどんなのがあるのでしょうか。

-----------------------------------------------------------------------------------
Re: VBからマクロの実行 - 花ちゃん  2003/05/28-13:12 No.4148
-----------------------------------------------------------------------------------
'----------------------------------------------
  '標準モジュール内に記入されている場合
  'xlApp.Run ("subMacroTest") 
  xlApp.Run ("test21.xls!subMacroTest")  
'----------------------------------------------
  'Sheet1等に記入されている場合
  'xlApp.Run ("Sheet1.subMacroTest1") 
  xlApp.Run ("test21.xls!Sheet1.subMacroTest1") 
'----------------------------------------------
  'エクセルのシートに貼り付けてあるコマンドボタンを実行
  'xlApp.Run ("Sheet1.CommandButton1_Click") 
  xlApp.Run ("test21.xls!Sheet1.CommandButton1_Click")  
'----------------------------------------------
メンテ
シート上の選択範囲を印刷するには(VB6.0 応用編)  (No.5の個別表示) [スレッド一覧へ]
日時: 2007/08/19 23:21
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:選択範囲,印刷,プリント                                              *
***********************************************************************************

元質問:EXCELで指定選択場所の印刷は? - Takkun  2003/05/23-14:27 No.4102

VB上からエクセルファイルを読み込んで指定の範囲だけを印刷したいんですが、うまくできません。どうしたらいいでしょうか?
.Range("A1:I22").Select
.PrintOut 
とか
.Range("A1:I22").Selection.PrintOut.Copies = 1
とかいろいろやってだめでした。^^;

-----------------------------------------------------------------------------------
Re: EXCELで指定選択場所の印刷は? - 花ちゃん  2003/05/23-15:22 No.4103
-----------------------------------------------------------------------------------
解らない時はここの Excel&Word関係の 主要キーワードレファレンス を調べて見て下さい。

PrintArea ファイル P 印刷するセル範囲を、A1 形式の文字列で取得・設定します。 があります。

それをヘルプで調べると
Worksheets("Sheet1").PageSetup.PrintArea = "$A$1:$C$5"
このような使用例がありました。

又はExcel上でマクロを取ってそのマクロを見て下さい。そうすれば、通常の操作が
できる方なら大抵解決できるはずです。

因みに、マクロの結果は ActiveSheet.PageSetup.PrintArea = "$A$1:$I$22" です。

上記をVBのコードに変換すると

 xlSheet.PageSetup.PrintArea = "$A$1:$I$22"

メンテ
WebBrowser上で開いたExcelファイルの保存(VB6.0 応用編)  (No.6の個別表示) [スレッド一覧へ]
日時: 2007/08/20 10:31
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:WebBrowser,保存方法,,,,                                             *
***********************************************************************************

元質問:WebBrowser上で開いたExcelの保存 - 聖  2003/09/09-18:01 No.5811

WebBrowser上にエクセルのファイルを開き、エクセルにWebBrowser上で変更を加えます。
それをプログラム上から別名保存する、ということをしたいと思っています。

-----------------------------------------------------------------------------------
Re: WebBrowser上で開いたExcelの保存 - K.J.K.  2003/09/10-21:26 No.5828
とりあえず、TypeName(WebBrowser1.Document)をしてみれば。おそらくはWorkbook型のオブジェクトでしょうし。OLEコントロールのObjectプロパティと似たような使い方ができるでしょう。

-----------------------------------------------------------------------------------
K.J.K.さん、ありがとうございました。
解決しました。望み通りの動きができました。

一応、ソースを載せておきます。
WebBrowser上に開かれているファイルがExcelかWordか判定して、名前を付けて保存するというものです。

Private Sub Form_Load()
    WebBrowser.Navigate "file:///C:\temp\aaa.xls"
'    WebBrowser.Navigate "file:///C:\temp\bbb.doc"
End Sub

Private Sub Command1_Click()
    Select Case TypeName(WebBrowser.Document)
    Case "Workbook"
        WebBrowser.Document.SaveAs FileName:="C:\temp\SaveFile.xls"
    Case "Document"
        WebBrowser.Document.SaveAs FileName:="C:\temp\SaveFile.doc"
    End Select
End Sub
メンテ
DAOまたはADOでExcelファイルを開いた時にデータ...(VB6.0 応用編)  (No.7の個別表示) [スレッド一覧へ]
日時: 2007/08/20 10:43
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:DAO,ADO,HDR,IMEX,SCHEMA.INI,同一カラム内、異なるデータ型             *
***********************************************************************************

元質問:DAOまたはADOでEXCEL開いたとき - こた  2003/09/10-10:31 No.5818

 DAOまたはADOでEXCEL開いたとき、同一列内に異なるデータタイプがあって少数派がNull(またはEmpty)になってしまう。の解決ってありますか?
 元EXCELファイルに手を加えないという前提ではDAOまたはADOでは無理なようです。(Microsoft技術情報参照)
できればなんでもかんでも文字型で読みたいのですが(そうすれば手はあるんですが・・・・)
それってDAOまたはADOでできるのでしょうか?
それがだめなら他の方法でEXCEL開きたいのですが、CreateObject以外で手はありますでしょうか?
今、EXCELをCSVにしてから読み込もうかどうしようか迷い中です。

-----------------------------------------------------------------------------------
Re: DAOまたはADOでEXCEL開いたとき - 花ちゃん  2003/09/10-10:51 No.5819
(DAOまたはADOでExcelファイルを開いた時にデータの表示が欠落する場合の対処法)
-----------------------------------------------------------------------------------
Excelファイルの場合、SCHEMA.INI ファイルが使用できなかったと思いますので
IMEX=1 を入れてやれば或る程度改善できるかと思います。
オプション機能の IMEX=1; を追加 "Excel 8.0;HDR=YES;IMEX=1;" すれば8行目までのデータ
が同一カラム(列)内に混在している場合 テキスト型として扱います。

従って項目行に文字列が使用されている場合は有効ですが、8行目までに違ったデータ型が
混在していない場合は有効になりません。

その場合は、別途レジストリ(下記)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]

のTypeGuessRowsを充分大きくすることで解決できるかもしれません。

メンテ
ExcelファイルをWebBrowser上に表示する(VB6.0 応用編)  (No.8の個別表示) [スレッド一覧へ]
日時: 2007/08/20 11:42
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:WebBrowser,,,,,                                                     *
***********************************************************************************

元質問:ExcelをWebBrowserに表示 - カノン  2003/12/02-11:38 No.6856

ExcelファイルをWebbrowser上に表示したいと思い、こちらのサイトのExcel&Word関係を参考に
させてもらいました。

-----------------------------------------------------------------------------------
Re: ExcelをWebBrowserに表示 - 花ちゃん  2003/12/03-01:18 No.6860
-----------------------------------------------------------------------------------
投稿されたコードではエラーが表示され動作しませんでした。
下記に変更して見ましたが、だめでしょうか?

Option Explicit
Private oDocument As Object

Private Sub Form_Load()
    WebBrowser1.Navigate "C:\Temp.xls"
End Sub

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    On Error Resume Next
    Set oDocument = Nothing
    Set oDocument = pDisp.Document
    WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER
    
    'メニュバーを表示しないなら下記のコードを有効にして下さい。
'   WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER

End Sub

Private Sub Command1_Click()
    With oDocument
        .Sheets(1).Cells(1, 1).Value = "あいうえお"
        .Save   '上書き保存
    End With
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set oDocument = Nothing
End Sub
メンテ
VBA 関係のお薦めサイト(VB6.0 応用編)  (No.9の個別表示) [スレッド一覧へ]
日時: 2007/09/15 09:27
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:VBA,,,,,                                                               *
***********************************************************************************

-----------------------------------------------------------------------------------
ミコの黄色いおうち
http://park11.wakwak.com/~miko/index.htm

Excelノート - 項目一覧
  Excel VBA が650件以上掲載されています。
 http://www2.hornet.co.jp/tomoko/MikoNotes/default.htm

関数一覧
 http://park11.wakwak.com/~miko/Excel_mokuji/kansu-mokuji.htm

Excel ノート
 カテゴリー別にExcel VBA のコードが掲載されています。
 http://park11.wakwak.com/~miko/Excel_Note/frame1.htm
-----------------------------------------------------------------------------------

Excel VBA モーグ即効テクニック集
 http://www.moug.net/tech/exvba/index.htm

Excel 一般機能 モーグ即効テクニック集
 http://www.moug.net/tech/exopr/index.htm
-----------------------------------------------------------------------------------

ひかる!ひろがる!VBAの世界 ぶいべーす快(vbasekai.com)さんのサイト

 Excel 関係のMSサポート技術情報の一覧
 http://www.vbasekai.com/mssp/xl2002.html
-----------------------------------------------------------------------------------
メンテ
印刷されるページの総数を調べる方法(VB6.0 応用編)  (No.10の個別表示) [スレッド一覧へ]
日時: 2007/08/20 14:44
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:,,,,,                                                               *
***********************************************************************************

元質問:特定のエクセルファイルのページ総数取得方.. - tak  2004/02/21-22:04 No.8071

現在、特定のフォルダに存在するエクセルファイルの「印刷した時の」総ページ数取得処理を
考えています。
自分なりに調査、ネットでの検索を試みたのですが、こういった処理はあまり認知されていない
のか、全然見当たりませんでした・・。
単にシート数の取得ならば可能なのですが、実際に印刷した場合の「印刷枚数」はどうすれば
取得可能なのでしょうか??

-----------------------------------------------------------------------------------
Re: 特定のエクセルファイルのページ総数取.. - 花ちゃん  2004/02/21-23:34 No.8073
-----------------------------------------------------------------------------------
そのシートをどのように印刷するのか設定しないと印刷枚数は決まらないと思います。
同じシートでもA4横向きと縦向きでは枚数も変わってくるかと思います。
従ってまず、どのように印刷するのか、ページ設定をして下さい。
その上で水平方向の改ページを取得すれば印刷枚数が判ります。
垂直方向の改ページ数もプラスして下さい。
両方とも改ページ数 + 1 が印刷枚数になるようです。

# 2/22 1:13 追加
WEBで検索すれば下記のサイトが見つかりましたよ。
http://support.microsoft.com/default.aspx?scid=kb;ja;408042


Option Explicit
Private Sub Command1_Click()
'    On Error Resume Next
    Dim xlApp      As Excel.Application
    Dim xlBook     As Excel.Workbook
    Dim xlSheet    As Excel.Worksheet
    Dim PrintPage  As Integer
    Dim i          As Long
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("C:\test.xls")
    For Each xlSheet In xlBook.Worksheets
        PrintPage = PrintPage + fGetPage(xlSheet)
    Next
    xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
    MsgBox "印刷ページ総数 : " & PrintPage & " Page"
End Sub
Private Function fGetPage(ByVal mySheet As Worksheet) As Integer
    Dim HPageCount As Integer, VPageCount As Integer, TotalPage As Integer
    If mySheet.UsedRange.Address = "$A$1" And _
                        IsEmpty(mySheet.Range("$A$1").Value) Then
        TotalPage = 0
    Else
        HPageCount = mySheet.HPageBreaks.Count      '横の改ページ数取得
        VPageCount = mySheet.VPageBreaks.Count      '縦の改ページ数取得
        '横の改ページがない場合は縦の改ページ数+1が総ページ数になる
        If VPageCount = 0 Then
            TotalPage = HPageCount + 1
        Else
            HPageCount = HPageCount + 1
            VPageCount = VPageCount + 1
            TotalPage = HPageCount * VPageCount
        End If
    End If
    fGetPage = TotalPage
End Function

これでは、正確なページ数は取得できないようです。
垂直の改ページがある場合で印刷するものがない場合もカウントしてしまいます。
たとへば、一行目だけに2枚に渡るデータが記入されていて、水平方向に改ページが
ある場合等は右側にデータが入っていなくてもカウントしてしまう。

正確には改ページの範囲を取得してその範囲にデータが記入されているか取得する
必要があるようですが、その方策は見つかりません。

通常はそのようなレイアウトで印刷しないとは思うのですが、又用紙設定等でどのように
なるかテストする必要があるかと思います。

メンテ
印刷時の1ページの行数を取得する(VB6.0 応用編)  (No.11の個別表示) [スレッド一覧へ]
日時: 2007/08/20 18:53
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:行数,印刷時,,,,                                                     *
***********************************************************************************

元質問:Excel:印刷時の1ページの行数 - みちぃ  2004/11/11-15:00 No.870

Excel2002です(VBA)
印刷時(プレビュー時)に、設定するプリンタによって、1ページに対する行数が変わります。
1ページ当りの行数を取得するためには、どうしたらよろしいでしょうか?
よろしくお願いいたします。

-----------------------------------------------------------------------------------
Re: Excel:印刷時の1ページの行数 - 花ちゃん  2004/11/11-17:17 No.871
-----------------------------------------------------------------------------------
何の為に行数の取得が必要かは知りませんが、改ページ位置を取得すればいいのでは
他にいい方法があるかは知りませんが、VBAなら一度下記を試して見て下さい。

(印刷範囲が設定されていれば違う方法でも取得できます)

Private Sub CommandButton1_Click()
    Worksheets(1).HPageBreaks(1).Location.Select
    MsgBox ActiveCell.Address
End Sub
結果よりマイナス1行して下さい。


上記は、VBA のコードなのでVBから使用する場合は、オブジェクト名を指定して下さい。
メンテ
プログラム上からExcelのマクロを記入する(VB6.0 応用編)  (No.12の個別表示) [スレッド一覧へ]
日時: 2007/08/20 20:29
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:VBIDE.VBE,Microsoft Visual Basic for Application Extensiblity **    *
***********************************************************************************

元質問:VB6.0からEXCELのマクロを記述するには? - BELL  2005/07/20-08:40 No.3815

VB6.0のプログラムにてEXCELを作成し、作成したEXCELにマクロを記述し名前を付けて保存したいと思っております。
EXCELの作成や保存方法は判るのですが、マクロの記述(埋め込み)方法が判りません。

-----------------------------------------------------------------------------------
Re: VB6.0からEXCELのマクロを記述するには.. - 魔界の仮面弁士  2005/07/20-09:16 No.3816
-----------------------------------------------------------------------------------
> EXCELの作成や保存方法は判るのですが、マクロの記述(埋め込み)方法が
> 判りません。

http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200401/04010052.txt
メンテ
VBからエクセルVBAを登録(VB6.0 応用編)  (No.13の個別表示) [スレッド一覧へ]
日時: 2009/12/27 19:06
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:VBA,マクロ,CommandButton,コマンドボタン                             *
***********************************************************************************

元質問:VBからエクセルVBAを登録 - KIRIRI  2005/08/29-18:57 No.4244

1.VBからエクセルファイルを新規作成し
2.Sheet1へコマンドボタンを配置し
3.コマンドボタンを押したときの処理をエクセルVBAへ書くというプログラムを作成しています。
1と2は問題なくできるのですが、3でVBAへ処理を書き込む際に標準モジュールへ書き込んでいます。そのせいか、作成したエクセルファイルのコマンドボタンを押しても、3の処理を実行しません。
試しに、エクセルVBAにて3の内容をSheet1へコピペしたところ上手くいきましがVBからSheet1のVBAへ書く方法がわかりませんでした。

-----------------------------------------------------------------------------------
Re^3: VBからエクセルVBAを登録 - 花ちゃん  2005/08/29-19:54 No.4249
-----------------------------------------------------------------------------------
> VBAのコードを見直してみたところ、1行目が
>     xlCode.InsertLines 1, "Private Sub CommandButton1_Click()" & vbCrLf _
> と「Private」となっていたので
>     xlCode.InsertLines 1, "Public Sub CommandButton1_Click()" & vbCrLf _
> と「Public」に変更したらできました。


それも、どうかと思います。 下記参照願います。
CommandButton1 のイベントの処理に関しては Sheet 等に書いた方がいいのでは。
マクロ等は、標準モジュールに書いて。
http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=3815

Set xlMod = xlVBE.VBProjects(1).VBComponents("Sheet1")
Set xlCode = xlMod.CodeModule
'CommandButton1_Click() イベントとそのコードを記入
xlCode.InsertLines 2, "Private Sub CommandButton1_Click()" & vbCrLf _
                   & "    Call Test()" & vbCrLf _
                   & "End Sub"

メンテ
グラフのデータ範囲指定の仕方について(VB6.0 応用編)  (No.14の個別表示) [スレッド一覧へ]
日時: 2007/08/20 21:06
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:データ範囲,,,,,                                                     *
***********************************************************************************

元質問:エクセルグラフの範囲指定の仕方について - まゆ  2005/08/19-17:27 No.4160

グラフのデータの範囲指定ですが、
xlBook.ActiveChart.SetSourceData Source:=xlSheet.Range("A3:AO9"), otBy:=xlRows        
 の場合は・・・
xlBook.ActiveChart.SetSourceData _
     Source:=xlSheet.Range(xlSheet.Cells(3, 1), xlSheet.Cells(9, 41)), PlotBy:=xlRows
と書くのはわかるのですが、下記のようにタイトル行が離れている場合
    xlBook.ActiveChart.SetSourceData Source:=xlSheet.Range _
                                 ("A3:AO3,A10:AO18"),PlotBy:=xlRows
 rangeやcellsをどう使えばいいのでしょうか?

-----------------------------------------------------------------------------------
Re: エクセルグラフの範囲指定の仕方につい.. - るしぇ  2005/08/22-15:22 No.4171

マクロを記録してみた限り、タイトル行の指定は別処理でできるので
何の問題もないのでは?
-----------------------------------------------------------------------------------

-----------------------------------------------------------------------------------
Re: エクセルグラフの範囲指定の仕方につい.. - YK   2005/08/22-17:26 No.4173

こんな感じで
    Dim r1  As Excel.Range
    Dim r2  As Excel.Range

    Set r1 = xlSheet.Range("A3:AO3")
    Set r2 = xlSheet.Range("A10:AO18")

    xlBook.ActiveChart.SetSourceData _
                Source:=xlBook.Application.Union(r1, r2), _
                PlotBy:=xlRows

xlBook.Application.Unionはエクセルのインスタンスが書いてないのでこのようにしました。
エクセルのインスタンスがあれば、エクセルのインスタンス.Unionで宜しいです。

-----------------------------------------------------------------------------------
メンテ
VBA でのコントロールの型について(VB6.0 応用編)  (No.15の個別表示) [スレッド一覧へ]
日時: 2007/08/20 21:23
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:コントロール,型,,,,                     *
***********************************************************************************

元質問:VBAで「型が一致しません」 - ダンボ  2005/09/15-18:33 No.4421

EXCEL2002のVBAです。txt1はテキストボックスです。これを実行してtxt1_AfterUpdate内で
DateCheckを呼び出したところでエラー13「型が一致しません」と言われます。なんで?

詳しくは、下記の一連のスレッドをご覧下さい。
http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=4421&page=870

-----------------------------------------------------------------------------------
Re: VBAで「型が一致しません」 - 花ちゃん  2005/09/15-20:38 No.4423
-----------------------------------------------------------------------------------
> Private Sub DateCheck(TBOX As TextBox)
>  If Not IsDate(TBOX.Text) Then MsgBox ("正しい日付を入力してください")
>  'TBOX.Select
> End Sub
     ↓↓↓↓
下記のようにObject型に変更して見てください。

Private Sub DateCheck(TBOX As Object)
If Not IsDate(TBOX.Text) Then MsgBox ("正しい日付を入力してください")
'TBOX.Select
End Sub

     さらに
     ↓↓↓↓

どうも下記のように指定するようです。
Private Sub Test(TxtBox As MSForms.TextBox)

これなら TxtBox.SelStart のように候補にもでてきます。

メンテ
VBよりExcelファイル上のマクロコードを削除する(VB6.0 応用編)  (No.16の個別表示) [スレッド一覧へ]
日時: 2007/08/20 22:17
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:マクロを削除,,,,,                                            *
***********************************************************************************

元質問:VBよりExcelマクロの削除は可能でしょうか - kishitatsu 2006/01/27-13:00 No.5614


-----------------------------------------------------------------------------------
Re: VBよりExcelマクロの削除は可能でしょうか - 花ちゃん  2006/01/27-13:39 No.5615
-----------------------------------------------------------------------------------
> これをVB6.0を利用してExcelマクロを削除することは可能でしょうか?
可能です。 下記に掲載されています。

415ブックに含まれているマクロをすべて削除する
http://www.cbook24.com/bm_detail.asp?sku=99925364

又、下記でVBからExcelのマクロを作成する方法を解説されているので
そのコードを応用して作成するのではなく、.Remove してやれば削除できるかと
思います。
http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=3815

ちょっと試して見ました。ご使用される場合は十分テスト願います。
Excel ファイルの読み込みは別途、マクロの削除部分のコードのみ
Excel の起動・終了は別途追加して下さい。
'-----------------------------------------------------------------
Dim i As Long
With xlBook.VBProject
    For i = .VBComponents.Count To 1 Step -1
        If .VBComponents(i).Type = vbext_ct_StdModule Then
            '標準モジュール以外はマクロの警告が表示されないので
            'UserForm 及び クラスモジュール はそのままで
            'If .VBComponents(i).Type <= 3 Then  'なら上記も削除
            .VBComponents.Remove .VBComponents(i)
        ElseIf .VBComponents(i).Type = vbext_ct_Document Then
            .VBComponents(i).CodeModule.DeleteLines 1, _
                    .VBComponents(i).CodeModule.CountOfLines
        End If
    Next i
End With
'------------------------------------------------------------------------


-----------------------------------------------------------------------------------
Re: VBよりExcelマクロの削除は可能.. - YK  2006/01/27-16:21 No.5617
-----------------------------------------------------------------------------------
> これをVB6.0を利用してExcelマクロを削除することは可能でしょうか?
こんな風でどうでしょう。

wkbはワークブックのインスタンス

dim obj as object
dim sht as worksheet

With wkb.VBProject
'    If .Protection Then GoTo クローズ処理
    ' モジュールの削除
    For Each obj In .VBComponents
        If obj.Type < 4 Then
'                Debug.Print obj.Name
            .VBComponents.Remove obj
        End If
    Next
    ' シートモジュールの中身削除
    For Each Sht In wkb.Worksheets
        With .VBComponents.Item(Sht.Name).CodeModule
            .DeleteLines 1, .CountOfLines
        End With
    Next
End With
メンテ
VBからExcel にデータを送りグラフを表示する(VB6.0 応用編)  (No.17の個別表示) [スレッド一覧へ]
日時: 2007/08/21 08:09
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:グラフ,,,,,                                                   *
***********************************************************************************

ここのサイトの[カテゴリ別サンプル一覧]の中のExcel&Word関係の中でも紹介しているのですが
こちらへも転載しておきます。

-----------------------------------------------------------------------------------
VBからExcel にデータを送りグラフを表示する - 花ちゃん  2006/08/21
-----------------------------------------------------------------------------------

Option Explicit
Private Sub Command1_Click()
'★プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryに
' チェックを入れておいて下さい。
'==================================================================
'Excel の起動処理
  '基本的な設定は[VBからエクセルを操作する]を参照して下さい。
  Dim xlApp  As Excel.Application
  Dim xlBook As Excel.Workbook 
  Dim xlSheet As Excel.Worksheet
  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Add 
  Set xlSheet = xlBook.Worksheets(1) 
'==================================================================
'Excel を操作部分
  'Excel のセルに値を代入します。
  Dim xlCells As Excel.Range
  Dim i    As Integer
  Dim j    As Integer
  Set xlCells = xlSheet.Cells
  For i = 2 To 6
   For j = 2 To 6
     '30〜100 の範囲のランダムなデータを作成
     xlCells(j, i).Value = CInt(70 * Rnd + 31)
   Next j
  Next i
  '系列名の設定
  xlCells(2, 1).Value = "国語"
  xlCells(3, 1).Value = "数学"
  xlCells(4, 1).Value = "英語"
  xlCells(5, 1).Value = "社会"
  xlCells(6, 1).Value = "体育"
  '項目名の設定
  xlCells(1, 2).Value = "石原"
  xlCells(1, 3).Value = "小泉"
  xlCells(1, 4).Value = "田中"
  xlCells(1, 5).Value = "平沼"
  xlCells(1, 6).Value = "森山"
'===================================================================
  'グラフデータの範囲を選択 SetSourceDataでも可
  'xlSheet.Range("A1:F6").Select

  Dim MyChart As ChartObject
  '表示位置・グラフの大きさを指定して
             '新しい埋め込みグラフを作成します。
  Set MyChart = xlSheet.ChartObjects.Add(10, 100, 600, 330)
  With MyChart.Chart 
   'PlotBy プロパティでも系列を指定できます。
   '系列を列に変更   行は xlRows
   .SetSourceData xlSheet.Range("A1:F6"), xlColumns
   '又は
   '.SetSourceData xlSheet.Range(xlSheet.Cells(1, 1), _
                  xlSheet.Cells(6, 6)), xlColumns

   '円グラフのように複数の範囲を選択する場合
   '.SetSourceData xlSheet.Range("A1:A6,D1:D6"), xlColumns

   '又は下記のような関数を作成しておき
   'Dim myRange As String
   'myRange = fChangeA1(1, 1) & ":" & fChangeA1(6, 1) & "," & _
         fChangeA1(1, 4) & ":" & fChangeA1(6, 27)
   '.SetSourceData xlSheet.Range(myRange), xlColumns

   '縦棒グラフを指定
   .ChartType = xlColumnClustered 

   '数値軸の最大目盛りを 100 に設定
   .Axes(xlValue).MaximumScale = 110
   '数値軸の最小目盛りを 0 に設定
   .Axes(xlValue).MinimumScale = 0 
   '数値軸の目盛り間隔を 20 に設定
   .Axes(xlValue).MajorUnit = 20

   'グラフのタイトルを表示
   .HasTitle = True
   .ChartTitle.Text = "中間テスト結果"

   'データラベルの表示(全ての系列に対して)
   .ApplyDataLabels (xlDataLabelsShowValue)
   '系列1にだけ表示する場合
   '.SeriesCollection(1).ApplyDataLabels (xlDataLabelsShowValue)

   '作業中のシートにグラフを表示
   .Location xlLocationAsObject, xlSheet.Name 
  End With

  'エクセルを表示します。(後で表示する方が早い)
  xlApp.Visible = True


  '★おまけ上記がうまく表示されたらコメントを外して試して下さい。
   'MyChart.Chart.ChartType = xl3DColumn 
   'For i = 0 To 100 Step 10 
   '  MyChart.Chart.Rotation = i
   '  xlApp.Wait (Now + TimeValue("0:00:01"))
   'Next i
'==================================================================
'下記コードはこのサンプルとは直接、関係ありません。
'動作確認の為に Excel を5秒間表示して置く為のものです。
  Dim lngSt As Long
  lngSt = Timer
  Do While Timer - lngSt < 5
   DoEvents
  Loop
'==================================================================
'終了処理
  xlApp.DisplayAlerts = False
  Set xlCells = Nothing
  Set MyChart = Nothing
  Set xlSheet = Nothing
  xlBook.Close      'Book を閉じる
  Set xlBook = Nothing
  xlApp.Quit 
  Set xlApp = Nothing
End Sub


--------------------------------------------------------------------------------
A1形式に変換する自作関数
Private Function fChangeA1(ByVal Row As Long, ByVal Col As Long) As String
'セルアドレスを A1 形式に変換する自作関数
  If Col >= 27 Then
   fChangeA1 = Chr$(64 + ((Col - 1) \ 26)) & _
         Chr$((Col Mod 26) + 64) & Trim$(Str$(Row)) 
  Else
   fChangeA1 = Chr$(Col + 64) & Trim$(Str$(Row)) 
  End If 
End Function


細かい設定等はマクロに記録して調べて下さい。

又、グラフの種類等はヘルプファイル(C:\Program Files\Microsoft Office\Office\1041\VBAXL9.CHM) (環境により違います。Excel2000)で ”ChartTypeプロパティ” で検索し、調べて下さい。


========================================================================================

---------------------------------------------------------------------

         グラフ操作関連のテクニック

Excel VBA モーグ即効テクニック集 より

 グラフ操作関連のテクニック
 http://www.moug.net/tech/exvba/0021.htm

---------------------------------------------------------------------

      Excel のグラフ関係の主なプロパティ一覧


ミコの黄色いおうち さんのサイトより

ChartType プロパティの一覧
http://park11.wakwak.com/~miko/Excel_Note/25-01_graph.htm#25-01-11

その他のグラフのプロパティ
http://park11.wakwak.com/~miko/Excel_Note/25-01_graph.htm#25-01-12

---------------------------------------------------------------------
メンテ
Excel の複数シートを選択して印刷する(VB6.0)  (No.18の個別表示) [スレッド一覧へ]
日時: 2011/03/28 15:21
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                    *
* キーワード:複数のシート,印刷,                                         *
***********************************************************************************
記事No : 12427
投稿日 : 2008/06/04(Wed) 09:19
投稿者 : すぎぽん  

excelのシート(1シート)を印刷する場合、下記のコードで行っていますが複数シートを選択して印刷する場合どのようにしたらよいのでしょうか。

-----------------------------------------------------------------------------------
記事No : 12430
投稿日 : 2008/06/04(Wed) 10:41
回答者 : 魔界の仮面弁士  
-----------------------------------------------------------------------------------
> 複数シートを選択して印刷する場合どのようにしたらよいのでしょうか。

xlBok.Worksheets(Array("Sheet1", "Sheet3")).PrintPreview
メンテ

Page: 1 |

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

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