//必須 using System.IO; //exeファイルをネットワークからMyDocument内へコピーする string copyFrom = @“\\server\\work\\file.exe"; string copyTO = “c:\\file.exe"; File.Copy(copyFrom, copyTO); //ファイル削除 File.Delete(copyTO); //ディレクトリ削除 Directory.Delete(dirMyDoc); //ファイル存在チェック String FNAME = “xvax.ini"; if (File.Exists(FNAME) != true) { MessageBox.Show(“File not Found “, “File not Found"); return; } //ファイル読み込み String line; StreamReader sr = new StreamReader(FNAME); //1行だけ読み込む line = sr.ReadLine(); //ファイル書き込み using (StreamWriter sw = File.CreateText(“書き込み対象ファイル+パス")) { sw.WriteLine(“test,test"); //File Close sw.Close(); }
投稿者「xvax」のアーカイブ
メッセージボックス
//ノーマル MessageBox.Show(“メッセージ", “タイトル(省略可)"); //Yes,No判定 if (MessageBox.Show(“よろしいですか?", “判定", MessageBoxButtons.YesNo) != DialogResult.No) { textBox1.Text = “Yes"; else textBox1.Text = “No!"; }
環境情報取得
//MyDocument内のパス取得 string dirMyDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + “\\xvax"; //パス上にディレクトリ存在しない場合 if ( Directory.Exists(dirMyDoc) == false ) { //ディレクトリ作成 Directory.CreateDirectory( Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + “\\xvax" ); } //NT LOGIN Name using System.Runtime.InteropServices; [DllImport("Advapi32.dll", EntryPoint = "GetUserName", ExactSpelling = false, SetLastError = true)] static extern bool GetUserName([MarshalAs(UnmanagedType.LPArray)] byte[] lpBuffer, [MarshalAs(UnmanagedType.LPArray)] Int32[] nSize); byte[] str = new byte[256]; Int32[] len = new Int32[1]; len[0] = 256; GetUserName(str, len); //ex lblLogName.Text = System.Text.Encoding.ASCII.GetString(str);
指定セル内の指定文字列を赤色に変更
Sub SEARCH_WORD() Dim chkVAL As String, FX As Integer chkVAL = InputBox(“Keyword(該当文字列を赤色にします)", “SEARCH") If chkVAL = “" Then Exit Sub For Each c In Selection FX = InStr(1, c.Value, chkVAL) If FX > 0 Then c.Characters(Start:=FX, Length:=Len(chkVAL)).Font.ColorIndex = 3 Next End Sub
隠しシートの表示
通常はメニューの「書式」-「シート」-「再表示」で非表示シートを表示可能。
しかし、マクロで「VeryHidden」をセットされると「再表示」でも見ることができない。
例)Sheets(“aaa”).Visible = xlVeryHidden
VeryHiddenのシートが存在するかを確認する方法:
1)VBAエディター上のイミディエイトボックスを表示
2)存在するシート数を確認する
?sheets.Count
4
3)表示されているシート数が4未満の場合は、VeryHiddenがあり得る
4)下記のコマンドで強制表示させる(イミディエイトボックス内)
for i=1 to 4:Sheets(i).Visible=true:next
ピボット並び替え&上位フィルター
Sub run() '引数:並べ替えのフィールド名、対象のシート名、Pivot実データの開始Y番号,TOP幾つまでを表示するか pivot_SORT_TOP “TITLE", “Sheet4", 5, 10 End Sub 'X軸は日付など、並び替え可能な項目であること Sub pivot_SORT_TOP(CMname As String, pivot_sheet As String, Y As Long, TOP As Integer) Dim X As Long, CH As String Sheets(pivot_sheet).Select On Error Resume Next '縦の項目を一度、全部表示にする For i = 1 To ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems.Count ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems(i).Visible = True Next 'Pivotの末列の座標を探す X = 2 Do While Cells(Y – 1, X) <> “": X = X + 1: Loop X = X – 1 '横列の昇順並び替え Cells(Y – 1, 2).Select Selection.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _ Orientation:=xlLeftToRight, SortMethod:=xlPinYin '並び替えたい列を選択 Cells(Y, X).Select 'Range(Chr(64 + X) & Y).Select 'X,Y座標をR1C1形式に変換 CH = “R" & Y & “C" & X '末列を降順でSORT Selection.Sort Key1:=CH, Order1:=xlDescending, Type:=xlSortValues, _ OrderCustom:=1, Orientation:=xlTopToBottom, SortMethod:=xlPinYin '表示項目がTOP指定より多い場合は、フィルター処理 If ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems.Count > TOP Then On Error Resume Next 'TOP以降は非表示する For i = TOP + 1 To ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems.Count ActiveSheet.PivotTables(1).PivotFields(CMname).PivotItems(i).Visible = False Next End If On Error GoTo 0 End Sub
グラフのバーをグループ単位で色分け
'グラフのバーをグループ単位で色分け '大前提:実行前に対象のグラフが選択されていること Sub Set_Color_Bar() Dim i As Integer, N As Integer 'バーの数分だけループ(この例では13個) For i = 1 To ActiveChart.SeriesCollection.Count N = Val(Right(ActiveChart.SeriesCollection(i).Name, 2)) '何番目のバーを処理しているか If i < 5 Then '最初の4本までは青系のバーにする Bar_attr i, 33 ElseIf i < 9 Then '最初の5~8本は黄系のバーにする Bar_attr i, 6 Else '最初の9本目以降は紫系のバーにする Bar_attr i, 7 End If Next 'おまけ 'ActiveChart.SeriesCollection(i).Name 'これには「WK01」などの凡例の名称が入る End Sub '指定バーの色を変更 Sub Bar_attr(bar As Integer, c As Integer) '何番目のバーか、色番号 On Error GoTo pass '対象のバーを選択 ActiveChart.SeriesCollection(bar).Select 'グラデーションセット Selection.Fill.OneColorGradient Style:=msoGradientVertical, Variant:=4, Degree:=0.231372549019608 Selection.Fill.Visible = True '色をセット Selection.Fill.ForeColor.SchemeColor = c pass: On Error GoTo 0 End Sub
フィールドをWクリックしたらズームさせる
'フィールドをWクリックしたらズームさせる Private Sub ZOOM_FIELD_DblClick(Cancel As Integer) DoCmd.RunCommand acCmdZoomBox End Sub
Outlookを呼び出してMail作成
'Outlookを呼び出してMail作成 Sub OUTLOOK() Dim objOutlook As OUTLOOK.Application Dim objOutlookMsg As OUTLOOK.MailItem Dim objOutlookRecip As OUTLOOK.Recipient Dim objOutlookAttach As OUTLOOK.Attachment Set objOutlook = CreateObject(“Outlook.Application") Set objOutlookMsg = objOutlook.CreateItem(olMailItem) 'メイン With objOutlookMsg .Subject = “title" .Body = “本文" '宛先準備 Set objOutlookRecip = .Recipients.Add(“xxx@bbb.com") objOutlookRecip.Type = olTo Set objOutlookRecip = .Recipients.Add(“zzz@bbb.com") objOutlookRecip.Type = olCC '完成Mailを表示 .Display 'いきなり送付させる場合は下記を使用 '.SEND End With Set objOutlookMsg = Nothing Set objOutlook = Nothing MsgBox “送付完了!" End Sub
フォームフィルター&ソート&リフレッシュ&行保管
Private Sub Form_Load() '表示にフィルターをかける Me.Filter = “xxx=" & ZZZ Me.FilterOn = True 'SORT指定 Me.OrderBy = “ORDER_NUMBER ASC" Me.OrderByOn = True End Sub '編集中の行を保管する Sub SAVE_CURRENT_RECORD() DoCmd.RunCommand acCmdSaveRecord End Sub '画面をリフレッシュ Private Sub BTN_refresh_Click() Me.Requery End Sub