複数の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
|