約 863,224 件
https://w.atwiki.jp/ipubluedictionary/pages/19.html
困ったら ↓ のURLからMSDNに飛び込もう!! http //msdn.microsoft.com/ja-jp/library/cc348225.aspx 新規でExcelを作成 データの管理について RecordCountプロパティ .ldbファイル リンクファイルのパフォーマンス 新規でExcelを作成 オブジェクトの作成、解放は以下のような感じ Dim xls As Object Set xls = CreateObject("Excel.Sheet") xls.SaveAs "てすと.xls" xls.Application.Quit Set xls = Nothing エクセルのオブジェクト、メソッド、プロパティについては VBA(Excel) を参照の事。 データの管理について DAOを使っている場合での話だが、複数人でデータベースを使用する場合、 フォームやVBAの更新などを行った際に、データの整合性を保つのが結構面倒である。 …というのも、mdbファイルがテーブル・クエリ・フォーム・レポート・マクロとセットに なってしまっていることに起因する。 例えばフォームを更新した場合、他の人がテーブルを更新していた時などはテーブルの インポートを行う必要が出てくる。この作業はかなり面倒かつ整合性が取りづらいものであり、 インポートの際には自分のテーブルを消さないと勝手にインデックスがふられるし、 リレーションも考慮してまとめてインポートしなくてはならないなど厄介極まりない。 なので、いい方法としてはテーブルだけを持っているデータベースと、それ以外のデータベースに分け、 テーブルをリンクする方法が考えられる。こうすることでテーブルは複数のデータベースで共有されるし、 フォームなどの更新もそのままそのmdbファイルを更新するだけでよくなる。 ※リンクテーブルをVBAでオープンする場合、基本的には dbOpenTable で開くことはできない。もし開く場合は OpenDatabase でリンクテーブルが含まれるデータベースをフルパス指定して開き、そこからテーブルを取得する必要がある RecordCountプロパティ RecordCountプロパティはレコードの総数を知るために使うことができるが、 注意しなければならないのは、返す値はあくまでもアクセスされたレコード数という事である。 なので、レコードの総数を取得するには、まず MoveFirst - MoveNext - EOFまでループ という ような形で、全てのデータにアクセスする必要がある。 テーブルにレコードが含まれていない場合はプロパティの値は 0 に設定されるので、判定基準に 使っても大丈夫。 レコードがない状態でMoveNextとかやるとエラーが出るので、レコードの取り扱いは常に EOF, BOFをチェックするのがいいと思われる。 .ldbファイル .mdbファイルと同じ場所に突如として存在する .ldbファイル。 これはロック情報ファイルで、同時アクセスをする際などの情報が含まれているもので、 データの保守などに使われているっぽい。 データベースを開くと勝手に生成され、閉じると自動的に削除されるもののようだ。 なので、データベースを移動するとか人に渡すとかするときに .ldbファイルを渡す必要は ないということだ。 リンクファイルのパフォーマンス リンクテーブルに対するアクセスが重い場合、それを改善するための手段がある。 (とは言っても改善されないこともあるような…) 手段としては、 バックエンドデータベース(テーブルとそれ以外でデータベースを分割したうちのテーブルのほう)のテーブルをデザインビューで開く 表示メニューのプロパティからサブデータシート名プロパティを「なし」にする。 これで改善されるらしい。 VBA側での切り替えもできるらしいが、詳しくはこちら↓ http //support.microsoft.com/kb/261000/JA/
https://w.atwiki.jp/nobotaka/pages/24.html
Sub aaaa015_出力() Dim intFF As Integer FreeFile値 Dim strREC As String 読み込んだレコード内容 Dim strTitle As Variant タイトル Dim GYO As Long セルの行 Dim COL As Long セルのカラム FreeFile値の取得(以降この値で入出力する) intFF = FreeFile Cells.Clear タイトル GYO = 1 COL = 1 For Each strTitle In Split("a01,a02,a03", ",") Cells(GYO, COL).Value = strTitle COL = COL + 1 Next strTitle Open "E \Documents\dev\trunk\vba\aaa01.txt" For Input As #intFF GYO = 2 ファイルのEOF(End of File)まで繰り返す Do Until EOF(intFF) 改行までをレコードとして読み込む Line Input #intFF, strREC If InStr(strREC, "aaa1") 0 Then If Cells(GYO, 1).Value "" Then GYO = GYO + 1 End If strREC = Trim(Replace(strREC, vbTab, "")) Cells(GYO, 1).Value = strREC End If If InStr(strREC, "aaa2") 0 Then If Cells(GYO, 2).Value "" Then GYO = GYO + 1 End If strREC = Trim(Replace(strREC, vbTab, "")) Cells(GYO, 2).Value = strREC End If If InStr(strREC, "aaa3") 0 Then If Cells(GYO, 3).Value "" Then GYO = GYO + 1 End If strREC = Trim(Replace(strREC, vbTab, "")) Cells(GYO, 3).Value = strREC End If Loop 指定ファイルをCLOSE Close #intFF End Sub
https://w.atwiki.jp/keiplus/pages/249.html
職場向けVBA vba 職場 本項は書きかけの記事です。正確な情報は公式サイト、公式ドキュメント、記載の参照サイトでご確認ください。 OSS(OpenSourceSoftware)を利用しています。使用期限や保守、公開期間の確約がないことに留意してください。 目次 + 読む 職場向けVBA目次 よく使うマクロ 参考 よく使うマクロ Common オブジェクト一括削除 非表示行の一括表示 描画オブジェクト、表、テキストボックスの一括縮小 シェイプ画像の一括圧縮 関数 log4timestamp("文字列") 汎用処理 + 読む CommonLibrary オブジェクト一括削除 todo functionの引数を変えても変わらないバグ Sub deleteAllObjects() Dim obj As Object Dim ws As Worksheet Dim hyperlink As hyperlink Dim description As String Set ws = ActiveSheet For Each obj In ActiveSheet.Shapes obj.Delete log4timestamp ("Shapes") Next obj For Each obj In ActiveSheet.ChartObjects obj.Delete log4timestamp ("ChartObjects") Next obj For Each obj In ActiveSheet.OLEObjects obj.Delete log4timestamp ("OLEObjects") Next obj For Each obj In ActiveSheet.Buttons obj.Delete log4timestamp ("Buttons") Next obj For Each obj In ActiveSheet.ListBoxes obj.Delete log4timestamp ("ListBoxes") Next obj For Each obj In ActiveSheet.CheckBoxes obj.Delete log4timestamp ("CheckBoxes") Next obj For Each obj In ActiveSheet.OptionButtons obj.Delete log4timestamp ("OptionButtons") Next obj delete hyperlins For Each hyperlink In ws.Hyperlinks hyperlink.Delete log4timestamp ("Hyperlinks") Next hyperlink End Sub Sub ShowHiddenRowsInRange() Dim rng As Range Set rng = Range("A1 A10") 表示したい範囲を指定 rng.EntireRow.Hidden = False Rows.Hidden = False log4timestamp ("ShowHiddenRowsInRange") End Sub Sub ShrinkObjects() Dim obj As Object Dim ws As Worksheet Set ws = ActiveSheet 縮小したいオブジェクトが含まれているシートを指定 シート上のすべてのオブジェクトを縮小する For Each obj In ws.Shapes obj.ScaleWidth 0.75, msoFalse, msoScaleFromTopLeft obj.ScaleHeight 0.75, msoFalse, msoScaleFromTopLeft Next obj シート上のすべてのチャートを縮小する For Each obj In ws.ChartObjects obj.Width = obj.Width * 0.75 obj.Height = obj.Height * 0.75 Next obj シート上のすべてのテキストボックスを縮小する For Each obj In ws.TextBoxes obj.Width = obj.Width * 0.75 obj.Height = obj.Height * 0.75 Next obj log4timestamp ("ShrinkObjects") End Sub Sub CompressImages() Dim ws As Worksheet Dim shp As Shape For Each ws In ThisWorkbook.Worksheets すべてのシートに対して処理を繰り返す For Each shp In ws.Shapes シート内のすべてのシェイプを取得する If shp.Type = msoPicture Then シェイプが画像である場合のみ処理を実行する shp.PictureFormat.Compression = 80 圧縮率を設定する(ここでは80%に設定していますが、必要に応じて変更してください) shp.PictureFormat.SaveWithDocument = True 圧縮画像をブックに保存する End If Next shp Next ws End Sub メール送信 定期的に送信するメール用 + 読む Sub createstarttelework() Dim OutApp As Object Dim OutMail As Object Dim fso As Object Dim textFile As Object Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) Dim mailDate As String mailDate Format(Now, "MM/DD") Set fso = CreateObject("Scripting.FileSystemObject") Set textFile = fso.opentextfile("c \aaa\bbb\importfile.txt", 1) bodyText = textFile.ReadAll textFile.Close With OutMail .To = "joshi@example.com; joshi2@example.com" .CC = "joshi@example.com; joshi2@example.com" .BCC = "me@example.com" .Subject = mailDate "出勤" .Body = bodyText .Display End With Set OutMail = Nothing Set OutApp = Nothing Set fso = Nothing End Sub Outlook・特定のフォルダ―の件名、受信日時を取得したリストを書き出す + 読む 【注意】FSOは参照設定のMicrosoft Scripting Runnerを有効化する必要がある。 Sub ExportEmailSubjectsAndReceivedDates() Dim outlookApp As Outlook.Application Dim namespace As Outlook.NameSpace Dim folder As Outlook.Folder Dim mailItems As Outlook.Items Dim mailItem As Object Dim startDate As Date Dim endDate As Date Dim filter As String Dim fso As Object Dim textFile As Object Dim filePath As String Outlookのセットアップ Set outlookApp = New Outlook.Application Set namespace = outlookApp.GetNamespace("MAPI") フォルダのパスに基づいてフォルダを取得 Set folder = namespace.Folders("メールボックス名").Folders("受信トレイ").Folders("path").Folders("to").Folders("targetfolder") メールボックス名は基本はメールアドレス 取得するメールの期間を設定 startDate = "2023/11/01" endDate = "2023/11/30" 期間に基づいてフィルタを設定 filter = "[ReceivedTime] = " Format$(startDate, "ddddd h nn AMPM") _ " And [ReceivedTime] = " Format$(endDate, "ddddd h nn AMPM") " " フィルタを適用してメールを取得 Set mailItems = folder.Items.Restrict(filter) mailItems.Sort "[ReceivedTime]", True 受信日時でソート 出力するテキストファイルのパス filePath = "C \EmailSubjectsAndDates.txt" ファイル名を含めたフルパスを記載 FileSystemObjectのセットアップ Set fso = CreateObject("Scripting.FileSystemObject") Set textFile = fso.CreateTextFile(filePath, True) メールの件名と受信日時をファイルに書き込む For Each mailItem In mailItems If mailItem.Class = olMail Then textFile.WriteLine "件名 " mailItem.Subject " - 受信日時 " mailItem.ReceivedTime End If Next mailItem ファイルを閉じる textFile.Close オブジェクトの解放 Set fso = Nothing Set textFile = Nothing Set mailItems = Nothing Set folder = Nothing Set namespace = Nothing Set outlookApp = Nothing 完了メッセージ MsgBox "メールの件名と受信日時が出力されました。", vbInformation End Sub メール本文に入れ込むファイルパスを指定したい場合 + 読む Sub createweekendreport() Dim OutApp As Object Dim OutMail As Object Dim fso As Object Dim textFile As Object Dim bodyText As String Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) Dim mailDate As String mailDate Format(Now, "MM/DD") FilePath = InputBox("週報のファイルを指定", "入力", "c \aaa\bbb\ccc") If FilePath = "" Then Exit Sub On Error Resume Next Set fso = CreateObject("Scripting.FileSystemObject") Set textFile = fso.opentextfile("c \aaa\bbb\importfile.txt", 1) If Err.Number 0 Then MsgBox "ファイルパスが不正", vbExclamation Exit Sub End If On Error GoTo 0 bodyText = textFile.ReadAll textFile.Close With OutMail .To = "joshi@example.com; joshi2@example.com" .CC = "joshi@example.com; joshi2@example.com" .BCC = "me@example.com" .Subject = mailDate "出勤" .Body = bodyText .Display End With Set OutMail = Nothing Set OutApp = Nothing Set fso = Nothing End Sub ハイパーリンクからマクロを実行する + 読む 1.動かしたいサブプロシージャ―を作成 2.VBA・プロジェクトビューワのExcelObjectsにある「ThisWorkBook」で次のPrivate サブプロシージャ―を作成する Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) Call 動かしたいサブプロシージャ―名 End Sub 3.シートでハイパーリンクを作成する。 このときリンク先は自身のセルを指定すると良い。 (メリット) マクロの起動にはメニューの開発からマクロを選択したり、オブジェクト画像にマクロをリンクさせる方法があるが いずれも面倒さがある。ハイパーリンクから起動する場合、設置が楽で汎用性があるところがメリット。 (注意点) ThisWorkBookにプロシージャ―を置いているので、ハイパーリンクを踏むと全てのシートで同一マクロを動かしてしまうので注意。 特定シート、セルからのみ動かしたい場合はWorkbook_SheetFollowHyperlinkの引数を利用して条件分けすることで対処できる。 シート別に動かすマクロを変える場合は、引数Sh、Targetを利用して条件分けする必要がある。 Sh.Nameでシート名を取得でき、 Target.SubAddressで「シート名!A1」形式でセル座標を取得でき、 Target.Nameで「ハイパーリンクにしている文字列」を取得できる ので、細かく条件分けすることができる。 DL CommonLibrary.basダウンロード 参考
https://w.atwiki.jp/alphaprin0308/
VBA初心者用
https://w.atwiki.jp/hitkik/pages/29.html
Access2000でリンクテーブルが遅いBUGの回避方法 http //support.microsoft.com/kb/261000/ja 解決方法 バックエンド データベース内の各テーブルの "サブデータシート名" プロパティを [なし] に設定します。この設定の変更は、手動で行うか、コードを使用して行うことができます。 サブデータシート名を手動で設定する 1.バックエンド データベースのテーブルをデザイン ビューで開きます。 2.[表示] メニューの [プロパティ] をクリックします。 3."サブデータシート名" プロパティを [なし] に設定します。 4.テーブルを保存して、閉じます。 Null値を回避する関数 Nz(値 [,null時の値] ) ビューが「フォームビュー」「帳票」の時に並び替えするためのVBA Me.Form.OrderBy = "フィールド名" Me.Form.OrderByOn = True ↑↓キーでデータリストを上下できる表示方法 フォームとサブフォームを使う。 サブフォームは、クエリ/テーブルと連結し、規定のビューを「データシート」 ビューの設定を「データシート」にする。 なお、フォーム自体の設計は別途可能で、ビューを「フォームビュー」に変更するとそちらのフォームが表示される。 並び替えは・・・AccessRuntimeではできない。 FORMを、データシートビューで表示し、SQLを切り替える フォームは、「ビューの設定(Defaultview)」を「データシートビュー(2)」にすると、カーソルキーで上下左右に動かせるシンプルなワークシート形式の表示にすることができる。 このとき表示されるフィールドは、デザインビューに入れられたフィールド。ビューをフォームに変更すると、フォームの形で同じデータが表示される。 各フィールドの設定はそのままデータシートビューに引き継がれる。(コンボボックス、イベント処理など) このとき表示されるデータは、 RecordSource = SQL文 || クエリ名 フォームからサブフォームのデータリストを変更するときには、 Me!サブフォーム名.FORM.RecordSource = SQL文 フォームから自分のデータリストを変更するときには、 Me.FORM.RecordSource = SQL文
https://w.atwiki.jp/nobotaka/pages/18.html
Sub 出力() Dim intFF As Integer FreeFile値 Dim strREC As String 読み込んだレコード内容 Dim GYO, COL As Long カウンタ Dim OpenFileName As String ファイル名 Dim vStr As Variant ChDrive "E" ChDir "E \Documents\dev\trunk\vba" OpenFileName = Application.GetOpenFilename("テキスト,*.TXT") If OpenFileName = "False" Then MsgBox "キャンセルされました" Exit Sub End If クリア Cells.Clear タイトル GYO = 1 COL = 1 For Each vStr In Split("a01,a02,a03,a01,a02,a03", ",") Cells(GYO, COL).Value = vStr COL = COL + 1 Next vStr GYO = GYO + 1 FreeFile値の取得(以降この値で入出力する) intFF = FreeFile Open OpenFileName For Input As #intFF ファイルのEOF(End of File)まで繰り返す Do Until EOF(intFF) 改行までをレコードとして読み込む Line Input #intFF, strREC COL = 1 For Each vStr In Split(strREC, " ") Debug.Print strREC Cells(GYO, COL).Value = vStr COL = COL + 1 Next vStr Cells(GYO, COL).FormulaR1C1 = "=RC[-3]" COL = COL + 1 Cells(GYO, COL).FormulaR1C1 = "=RC[-3]" COL = COL + 1 Cells(GYO, COL).FormulaR1C1 = "=RC[-3]" COL = COL + 1 GYO = GYO + 1 Loop 指定ファイルをCLOSE Close #intFF 枠固定 Range("A2").Select ActiveWindow.FreezePanes = True End Sub
https://w.atwiki.jp/excelmasters/pages/22.html
マクロを使いこなすことができれば、ほぼなんでもできてしまいます。.....小規模なプログラムくらいなら簡単に作れてしまいます。 関数だけでは物足りないという方は、是非このページでマクロの勉強をしてみてください!! マクロとは マクロの記録 マクロの登録 マクロの編集 マクロでセルやシートをいじる マクロでオートシェイプやグラフをいじる VBAのループ処理 VBAの条件判断処理 ファイルに保存してみる(テキストファイル・画像) クリップボードから取り込む 検索システムを作ってみる(Excelシート編) 検索システムを作ってみる(ユーザーフォーム編) ゲームを作ってみる
https://w.atwiki.jp/g-network/pages/24.html
目次 【エクセルVBAの基本】・書式 ・変数の宣言 ・セル範囲の指定 ・ステートメントFor文 While文 If文 ・基本的なメソッド、プロパティ 【よく使う構文】・ファイルに書き出す ・日付の計算 ・最終行、最終列の取得 ・メッセージボックス 【関数】・midb関数 【サンプルマクロ】・最終行を取得して処理 ・テキストファイルに出力(名前をつけて保存) 【エクセルVBAの基本】 ・書式 Option Explicit 変数の宣言の強制(変数名のタイプミスに気づける) Sub マクロ名() 変数宣言 コメント 処理 End Sub ・変数の宣言 Dim (変数名) As (型) ※ Integer(整数型)、String(文字列) ・セル範囲の指定 Range("A A")、Cells(1,2)、Range("A1").Offset(2,2) ・ステートメント For文 For (変数) = (初期値) To (最終地) 処理 Next (変数) While文 Do While (条件) 処理 Loop If文 If (条件) Then 処理1 Elseif (条件) Then 処理2 Else 処理3 End If ・基本的なメソッド、プロパティ 選択 Range("A1").Select コピー Range("A1").Copy ペースト Range("A1").PasteSpecial 削除 Range("A1").ClearContents 背景色 Range("A1").Interior.ColorIndex = X 文字色 Range("A1").Font.ColorIndex = X 文字サイズ Range("A1").Font.FontSize = X 値 Range("A1").Value = X 【よく使う構文】 ・ファイルに書き出す (例) Open sfile For Output As #fno For startrow = 11 To endrow i = Cells(startrow, 3) "," Cells(startrow, 12) "," Cells(startrow, 15) "," Cells(startrow, 18) Print #fno, i Next startrow Close #fno ・日付の計算 d = DateAdd(設定値, 計算数, 対象) 設定値:年→"yyyy", 月→"m", 日→"d", 週→"ww", 時→"h", 分→"n", 秒→"s" (例) d = DateAdd("d", 1, Date) 1日プラス t = DateAdd("h", -1, Time) 1時間マイナス ・最終行、最終列の取得 MaxRow = Range("A1").End(xlDown).Row MaxCol = Range("A1").End(xlToRight).Column ・メッセージボックス MsgBox "メッセージ" 【関数】 ・midb関数 【サンプルマクロ】 ・最終行を取得して処理 ・テキストファイルに出力(名前をつけて保存)}
https://w.atwiki.jp/kplus/pages/84.html
オブジェクトボックスは、VBAを簡単入力するためのGUIツール。 当然手入力でも問題は無いが、初心者用にあるものと思われる。 下表はオブジェクトボックス選択時に選択が可能になるプロシージャー対象表。 当然だがBookとSheetでは利用できるプロシージャーは異なる。 ブック/シート オブジェクト プロシージャー 内容 Workbook (General) (Declaretions) ThisWorkbook Workbook Activate ブックがアクティブになった時 AddinInstall ブックがアドインとして組み込まれた時 AddinUninstall ブックがアドインから削除された時 AfterXmlExport AfterXmlImport BeforeClose ブックを閉じる時 BeforePrint ブックを印刷する時 BeforeSave ブックを保存する時 BeforeXmlExport BeforeXmlImport Deactivate ブックがアクティブでなくなった時 NewSheet ブックに新しいシートを作成時 Open ブックを開いた時 PivotTableCloseConnection PivotTableOpenConnection RowsetComplete SheetActivate ブック内のシートがアクティブになった時 SheetBeforeDoubleClick ブック内のシートがダブルクリックされた時 SheetBeforeRightClick ブック内のシートが右クリックされた時 SheetCalculate ブック内のシートが再計算された時 SheetChange ブック内のシートが変更された時 SheetDeactivate ブック内のシートがアクティブでなくなった時 SheetFollowHyperlink ブック内のハイパーリンクをクリック時 SheetPivotTableUpdate ブック内のシートの選択範囲を変更時 SheetSelectionChange Sync WindowActivate ブックウィンドウがアクティブになった時 WindowDeactivate ブックウィンドウがアクティブでなくなった時 WindowResize ブックウィンドウの大きさを変更時 Sheet Worksheet Activate ワークシートがアクティブになった時 BeforeDoubleClick ワークシートをダブルクリック時 BeforeRightClick ワークシートを右クリック時 Calculate ワークシートが再計算された時 Change ワークシートのセルが変更された時 Deactivate ワークシートがアクティブでなくなった時 FollowHyperlink ワークシートのハイパーリンクをクリック時 PivotTableUpdate SelectionChange ワークシートの選択範囲を変更時 参考 エクセルExcel大事典 VBAマクロ イベントプロシージャ Open Target Cancel EnableEvents Volatile http //home.att.ne.jp/zeta/gen/excel/c04p59.htm
https://w.atwiki.jp/ktonegaw/pages/73.html
Excel 入門 http //kokoro.kir.jp/index.html http //www.becoolusers.com/index.html http //www.eurus.dti.ne.jp/yoneyama/Excel/Exl-_zen.htm http //www4.synapse.ne.jp/yone/index_main.html http //office.microsoft.com/ja-jp/training/RZ006107930.aspx http //www.kenzo30.com/excel_kiso.htm http //vcl.vaio.sony.co.jp/support/special/beginner/office/ http //excel.onushi.com/ http //kaisha-seturitu.net/xls/ http //www5b.biglobe.ne.jp/~suugaku/vbakougi/ http //pc.nikkeibp.co.jp/npc/download/excel2013.html Excel VBA http //www.eurus.dti.ne.jp/yoneyama/Excel/vba/ http //excelvba.pc-users.net/ http //www.officepro.jp/excelvba/ Excel入門まとめサイト http //matome.naver.jp/odai/2132730485044001801 裏技系 http //www.h3.dion.ne.jp/~fukusima/sub2/sub2.html http //kokodane.com/ http //excel-waza.seesaa.net/ http //news.livedoor.com/article/detail/6778614/ http //ag5.net/~nino/excel.html http //pc.nikkeibp.co.jp/pc21/tech/excel43/ http //www.geocities.jp/ogino2600x/407.html http //www.rericca.com/qa/ http //www.moug.net/tech/ http //110excel.seesaa.net/ http //www.juno-e.com/excel/waza/waza.htm http //miqata.com/t/95